From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.2 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id C46071F4B4 for ; Thu, 1 Oct 2020 16:33:16 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C55D7398B88D; Thu, 1 Oct 2020 16:33:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C55D7398B88D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1601569992; bh=XrYUA5zn7a3l96hU9Sp4Zq/bTGkjnNqNT+RAYueoOmo=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Snpg5g+uKQQ7wGJ4a5mcUIta81I82KfAoEonEzFxwMpJ2z54ILPdkqv6C384MP/Oa l/DeLj6TVvBsQyYrET2QBj63ORlbjXYFrndM3+oKReKdqQ2DSVQEU3UFuWiqBOjRLV 0b92m7dqbooTIUsuv06L0qtp7Lk8mhJAlbGBhA2E= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id 10D49398B862 for ; Thu, 1 Oct 2020 16:33:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 10D49398B862 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-378-aDiWLtjON7S02CMxveo_Ww-1; Thu, 01 Oct 2020 12:33:07 -0400 X-MC-Unique: aDiWLtjON7S02CMxveo_Ww-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 424AB186DD26 for ; Thu, 1 Oct 2020 16:33:06 +0000 (UTC) Received: from oldenburg2.str.redhat.com (ovpn-114-84.ams2.redhat.com [10.36.114.84]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 92BB979984 for ; Thu, 1 Oct 2020 16:33:05 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 14/28] elf: Enhance ld.so --help to print HWCAP subdirectories In-Reply-To: References: Message-Id: Date: Thu, 01 Oct 2020 18:33:03 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Florian Weimer via Libc-alpha Reply-To: Florian Weimer Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" --- elf/dl-usage.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/elf/dl-usage.c b/elf/dl-usage.c index 20aa715cb1..9765d1b5c1 100644 --- a/elf/dl-usage.c +++ b/elf/dl-usage.c @@ -22,6 +22,8 @@ #include #include "version.h" +#include + void _dl_usage (const char *argv0, const char *wrong_option) { @@ -101,6 +103,65 @@ print_search_path_for_help (struct dl_main_state *state) print_search_path_for_help_1 (__rtld_search_dirs.dirs); } +/* Helper function for printing flags associated with a HWCAP name. */ +static void +print_hwcap_1 (bool *first, bool active, const char *label) +{ + if (active) + { + if (*first) + { + _dl_printf (" ("); + *first = false; + } + else + _dl_printf (", "); + _dl_printf ("%s", label); + } +} + +/* Called after a series of print_hwcap_1 calls to emit the line + terminator. */ +static void +print_hwcap_1_finish (bool *first) +{ + if (*first) + _dl_printf ("\n"); + else + _dl_printf (")\n"); +} + +/* Write a list of hwcap subdirectories to standard output. See + _dl_important_hwcaps in dl-hwcaps.c. */ +static void +print_legacy_hwcap_directories (void) +{ + _dl_printf ("\n\ +Legacy HWCAP subdirectories under library search path directories:\n"); + + const char *platform = GLRO (dl_platform); + if (platform != NULL) + _dl_printf (" %s (AT_PLATFORM)\n", platform); + + _dl_printf (" tls (supported, searched)\n"); + + uint64_t hwcap_mask = GET_HWCAP_MASK(); + uint64_t searched = GLRO (dl_hwcap) & hwcap_mask; + for (int n = 63; n >= 0; --n) + { + uint64_t bit = 1ULL << n; + if (HWCAP_IMPORTANT & bit) + { + _dl_printf (" %s", _dl_hwcap_string (n)); + bool first = true; + print_hwcap_1 (&first, GLRO (dl_hwcap) & bit, "supported"); + print_hwcap_1 (&first, !(hwcap_mask & bit), "masked"); + print_hwcap_1 (&first, searched & bit, "searched"); + print_hwcap_1_finish (&first); + } + } +} + void _dl_help (const char *argv0, struct dl_main_state *state) { @@ -136,5 +197,6 @@ This program interpreter self-identifies as: " RTLD "\n\ ", argv0); print_search_path_for_help (state); + print_legacy_hwcap_directories (); _exit (0); } -- Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn, Commercial register: Amtsgericht Muenchen, HRB 153243, Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill