From patchwork Wed Nov 23 02:59:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 61003 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 14CBA3854572 for ; Wed, 23 Nov 2022 02:59:57 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id 3A2C73857838 for ; Wed, 23 Nov 2022 02:59:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3A2C73857838 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-pl1-x633.google.com with SMTP id jn7so13601573plb.13 for ; Tue, 22 Nov 2022 18:59:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8njdp1fSFSITcv6EtmrODfxwjXlmIxvvZJSWftpEcSI=; b=L7qFXh2G2O3JHNqfgv+m3NPDcmxISf92V37TNfasDlp8fk7VqQ16LU6hq/odHriear iv26HGr1T5DJD9C6XBbEPLRyPzKMgIsjJvJBZBEQru1D4NQ0tN7Ayid4tSrzxW+ukl3U kSvKtQ3rbj646QLfZQ4uuutzFvzWtAoBM7bXWvhqYGbAJdIfmjrHWFaUr0pJrwxQFNGj kJaSjhFA6vY4k2JKTdX0ejX/+M3r6B9krMI3U9EMWQ3ZC+uBLeMy+mvkAeR47MWnTNHC T4CheTQPOuhv+PCYlrEtnp54QZVYbXiNFIYKdZKT8b4EZdZsfSxB6Pzu15y4B8LhZKGK ewLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8njdp1fSFSITcv6EtmrODfxwjXlmIxvvZJSWftpEcSI=; b=x7Q46JQyt2fyj4sS8jvg0KISPnU7MKe7GNs6W9pel65ZuOUN3rj64IqGBdghJz5H/x BeOHwUfkRJV89iul/NHVOO8p6wyV3LJ/aA5upVlAo2ypV3SiWEKFEydCjkJBfGYmyA6+ ANQ35C+sSPwdnshnKfhhGwB2ybjWevGMWmAkvmc7sb3NORJEgl5OubXc/E4ehWpoMthe aRUn7q3jSB1ew3NZsEk9+q1tXNC9Bd3wMXDnFbZguhJFLZsaQSxqYzZHQFGsTSQvxz12 pYH19rtv2u5dPzlpRfS9Sa89XXVMBYFL1GShTveFwh4k7uq46VC1ObJaDeC1iRvluvGS 56nA== X-Gm-Message-State: ANoB5pnVWE2BqVI123EbmiworH85wvnN7/Q/JoKyyreImAkl4CoSVay8 p9V5MEtmoytMUCgRAmVCXaQiDtzVmf0lpg== X-Google-Smtp-Source: AA0mqf5quNo3Wo/HWSi4a172xCTxHWAO1EjNmKa66ceK+Od6tFQ7TvvLwUuzSLqLH8LZDW4ebDgEiQ== X-Received: by 2002:a17:902:d897:b0:189:315f:1d50 with SMTP id b23-20020a170902d89700b00189315f1d50mr6608040plz.92.1669172377062; Tue, 22 Nov 2022 18:59:37 -0800 (PST) Received: from vineet-framework.ba.rivosinc.com (c-24-4-73-83.hsd1.ca.comcast.net. [24.4.73.83]) by smtp.gmail.com with ESMTPSA id y15-20020aa79e0f000000b005672daedc8fsm11341329pfq.81.2022.11.22.18.59.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Nov 2022 18:59:36 -0800 (PST) From: Vineet Gupta To: libc-alpha@sourceware.org Cc: Carlos O'Donell , Fangrui Song , =?utf-8?q?Ludovic_Court=C3=A8s?= , nelson Chu , palmer@rivosinc.com, gnu-toolchain@rivosinc.com, Vineet Gupta Subject: [PATCH] Revert "Correctly determine libc.so 'OUTPUT_FORMAT' when cross-compiling." Date: Tue, 22 Nov 2022 18:59:32 -0800 Message-Id: <20221123025932.473655-1-vineetg@rivosinc.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: , Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" This reverts commit 361d6454c034a920f2c96517c277990d390b9652. This trips up riscv gnu toolchain builds [1] riscv ld segfaults when linking libgcc because libc.so linker script contains `OUTPUT_FORMAT(elf32-little)` vs. `OUTPUT_FORMAT(elf32-littleriscv)`. This patch causes builds to lookup riscv32* prefixed objdump and failing to find it falls back to host objdump which is the root of the issue. The host objdump in turn generates `OUTPUT_FORMAT(elf32-little)` riscv glibc multilib builds lack riscv32 prefix binaries. They have a single set of "riscv64" prefixed binaries supporting both 32 and 64-bit abis: ilp32/ilp32d/lp64/lp64d using -march/-mabi. FWIW I'm not sure how this patch fixed a real problem to begin with. At least for the riscv toolchain builds the non-prefixed objdump was still from the cross-tools and behaved exactly same as the prefixed one. At least it was not picking up the host version which would fail - ironically what this patch ended up triggering for riscv. | $ find TC_INSTALL -name *objdump -exec md5sum {} \; | 5fd0b967d4977a4f8bc3a7b7a9318b1d ./bin/riscv64-unknown-linux-gnu-objdump | 5fd0b967d4977a4f8bc3a7b7a9318b1d ./riscv64-unknown-linux-gnu/bin/objdump | | $ ./bin/riscv64-unknown-linux-gnu-objdump -f ./xx.lds.so | grep "file format" | ./xx.lds.so: file format elf32-littleriscv | | $ ./riscv64-unknown-linux-gnu/bin/objdump -f ./xx.lds.so | grep "file format" | ./xx.lds.so: file format elf32-littleriscv [1] https://github.com/riscv-collab/riscv-gnu-toolchain/issues/1161 Signed-off-by: Vineet Gupta Acked-by: Palmer Dabbelt --- aclocal.m4 | 2 ++ configure | 96 ++-------------------------------------------------- configure.ac | 1 - 3 files changed, 5 insertions(+), 94 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 531b11cb6988..3b4df4a37197 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -122,6 +122,8 @@ AS=`$CC -print-prog-name=as` LD=`$CC -print-prog-name=$LDNAME` AR=`$CC -print-prog-name=ar` AC_SUBST(AR) +OBJDUMP=`$CC -print-prog-name=objdump` +AC_SUBST(OBJDUMP) OBJCOPY=`$CC -print-prog-name=objcopy` AC_SUBST(OBJCOPY) GPROF=`$CC -print-prog-name=gprof` diff --git a/configure b/configure index cb0996d59e21..fbaa20e040b5 100755 --- a/configure +++ b/configure @@ -649,6 +649,7 @@ LD AS GPROF OBJCOPY +OBJDUMP AR LN_S INSTALL_DATA @@ -684,7 +685,6 @@ sysheaders ac_ct_CXX CXXFLAGS CXX -OBJDUMP READELF CPP cross_compiling @@ -2963,98 +2963,6 @@ else READELF="$ac_cv_prog_READELF" fi -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - # We need the C++ compiler only for testing. ac_ext=cpp @@ -4672,6 +4580,8 @@ AS=`$CC -print-prog-name=as` LD=`$CC -print-prog-name=$LDNAME` AR=`$CC -print-prog-name=ar` +OBJDUMP=`$CC -print-prog-name=objdump` + OBJCOPY=`$CC -print-prog-name=objcopy` GPROF=`$CC -print-prog-name=gprof` diff --git a/configure.ac b/configure.ac index 20b5e8043fad..0ca4bf56ef76 100644 --- a/configure.ac +++ b/configure.ac @@ -52,7 +52,6 @@ fi AC_SUBST(cross_compiling) AC_PROG_CPP AC_CHECK_TOOL(READELF, readelf, false) -AC_CHECK_TOOL(OBJDUMP, objdump, false) # We need the C++ compiler only for testing. AC_PROG_CXX