From patchwork Mon Dec 28 19:48:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fangrui Song X-Patchwork-Id: 41573 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 C6E863836C5C; Mon, 28 Dec 2020 19:49:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C6E863836C5C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1609184954; bh=j+5WcQRqDiNkf53Ih9rFpN5Vucdts5zhZhH97neA/C4=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=DyGi0yT26SB0WREM8sqtX+6JRLaFunpTyivcob9wJSJWIGghtp2hP6SqXMaRWBVbc 10mC45XC7pp5CC48THFWE7nwSS7mNzOg9YuZHbXW5RKjNDw1oYkDnjEqfshCgJDVWU KDXwIJRHojO+FrKYp18ITphVwE2TAZ6RgyJcN5vE= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x549.google.com (mail-pg1-x549.google.com [IPv6:2607:f8b0:4864:20::549]) by sourceware.org (Postfix) with ESMTPS id 1E2873836C44 for ; Mon, 28 Dec 2020 19:49:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 1E2873836C44 Received: by mail-pg1-x549.google.com with SMTP id 26so8607804pgl.2 for ; Mon, 28 Dec 2020 11:49:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=j+5WcQRqDiNkf53Ih9rFpN5Vucdts5zhZhH97neA/C4=; b=uiLhviIADCk4LyWjeTAGf9AyVv7L6eeh/INRK0tMvpwuNztwlRR8hvYFZUewM4ac+/ ydN0BhahxRXLJ907QL8ylFVcn2WeawbLCgsZOnrXVVEJ3EUev9UTTzidEOeCmuVNIrfW sioelOfWE0te07So1gW+aIo85OYyVvIUs4SGXRyhXYsyczDEIxZ7VbOiNYL6JBJ/PSri HFOGmX425XmI7Y4ijhHkTrSa/OkPY8WYryq5cGkM5yJ0W0ho79PDdNH5cvf/EhkeVJPP VEpNMuEaopEIXjJdXESwBGXV14nNJQoZg+d0JDPFR+0WmkHwWEtUT2Q6Ycf2OVNy1Zh0 r+dQ== X-Gm-Message-State: AOAM530PIsm3GQS3vhR0YEeiykJyV6qjZNwC/yIivR0HnS8ufZ0OVt59 reZOo5zJKRTJp7I/+o7yB8w0pJaLQpGhGbL3lIxL0NREbwaCsqgUAFoUOLjD2ZQ5VIQabTo44wx DYW6QfN/PcImMO28oZYRGmAg6hSHnqR15zFZwF55okZs9VrDueXEWBp6eiELsIANjavcf X-Google-Smtp-Source: ABdhPJzyLfY6D9URqCBpOVQgZKWBfwHuaiY6HAIEJOmVYQuiOjXtVXMWGyxXirBOfSx0HLZUolFGARkvJoiV X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:0:a6ae:11ff:fe11:4abb]) (user=maskray job=sendgmr) by 2002:a17:90a:f00f:: with SMTP id bt15mr449422pjb.209.1609184951115; Mon, 28 Dec 2020 11:49:11 -0800 (PST) Date: Mon, 28 Dec 2020 11:48:55 -0800 In-Reply-To: <20201228194855.510315-1-maskray@google.com> Message-Id: <20201228194855.510315-4-maskray@google.com> Mime-Version: 1.0 References: <20201228194855.510315-1-maskray@google.com> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog Subject: [PATCH 3/3] install: Replace scripts/output-format.sed with objdump -f [BZ #26559] To: libc-alpha@sourceware.org X-Spam-Status: No, score=-19.3 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: , X-Patchwork-Original-From: Fangrui Song via Libc-alpha From: Fangrui Song Reply-To: Fangrui Song Cc: Fangrui Song Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" GNU ld and gold have supported --print-output-format since 2011. glibc requires binutils>=2.25 (2015), so if LD is GNU ld or gold, we can assume the option is supported. lld is by default a cross linker supporting multiple targets. It auto detects the file format and does not need OUTPUT_FORMAT. It does not support --print-output-format. By parsing objdump -f, we can support all the three linkers. Reviewed-by: Adhemerval Zanella --- Makerules | 13 ++----- .../strcoll-inputs/filelist#en_US.UTF-8 | 1 - config.make.in | 1 - configure | 19 ---------- configure.ac | 11 ------ scripts/output-format.sed | 35 ------------------- 6 files changed, 3 insertions(+), 77 deletions(-) delete mode 100644 scripts/output-format.sed diff --git a/Makerules b/Makerules index ef0fe67d9a..146d1ab650 100644 --- a/Makerules +++ b/Makerules @@ -1065,20 +1065,13 @@ install: $(inst_slibdir)/libc.so$(libc.so-version) # for the configuration we are building. We put this statement into # the linker scripts we install for -lc et al so that they will not be # used by a link for a different format on a multi-architecture system. -$(common-objpfx)format.lds: $(..)scripts/output-format.sed \ - $(common-objpfx)config.make \ +$(common-objpfx)format.lds: $(common-objpfx)config.make \ $(common-objpfx)config.h $(..)Makerules -ifneq (unknown,$(output-format)) - echo > $@.new 'OUTPUT_FORMAT($(output-format))' -else $(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \ $(LDFLAGS.so) $(LDFLAGS-lib.so) \ - -x c /dev/null -o $@.so -Wl,--verbose -v 2>/dev/null \ - | sed -n -f $< > $@.new - test -s $@.new + -x c /dev/null -o $@.so 2>/dev/null + $(OBJDUMP) -f $@.so | sed -n 's/.*file format \(.*\)/OUTPUT_FORMAT(\1)/;T;p' > $@ rm -f $@.so -endif - mv -f $@.new $@ common-generated += format.lds ifndef subdir diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8 index 2f4ef195bb..43eb9efb40 100644 --- a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 +++ b/benchtests/strcoll-inputs/filelist#en_US.UTF-8 @@ -9450,7 +9450,6 @@ move-if-change check-execstack.awk pylint pylintrc -output-format.sed merge-test-results.sh update-copyrights config-uname.sh diff --git a/config.make.in b/config.make.in index 7ae27564fd..7f47f0caa4 100644 --- a/config.make.in +++ b/config.make.in @@ -73,7 +73,6 @@ fno-unit-at-a-time = @fno_unit_at_a_time@ bind-now = @bindnow@ have-hash-style = @libc_cv_hashstyle@ use-default-link = @use_default_link@ -output-format = @libc_cv_output_format@ have-cxx-thread_local = @libc_cv_cxx_thread_local@ have-loop-to-function = @libc_cv_cc_loop_to_function@ have-textrel_ifunc = @libc_cv_textrel_ifunc@ diff --git a/configure b/configure index 6dcd2270f8..4b0ab150cb 100755 --- a/configure +++ b/configure @@ -623,7 +623,6 @@ libc_cv_cc_submachine libc_cv_cc_nofma libc_cv_mtls_dialect_gnu2 fno_unit_at_a_time -libc_cv_output_format libc_cv_has_glob_dat libc_cv_hashstyle libc_cv_fpie @@ -6077,24 +6076,6 @@ fi $as_echo "$libc_cv_has_glob_dat" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker output format" >&5 -$as_echo_n "checking linker output format... " >&6; } -if ${libc_cv_output_format+:} false; then : - $as_echo_n "(cached) " >&6 -else - if libc_cv_output_format=` -${CC-cc} -nostartfiles -nostdlib $no_ssp -Wl,--print-output-format 2>&5` -then - : -else - libc_cv_output_format= -fi -test -n "$libc_cv_output_format" || libc_cv_output_format=unknown -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_output_format" >&5 -$as_echo "$libc_cv_output_format" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fno-toplevel-reorder -fno-section-anchors" >&5 $as_echo_n "checking for -fno-toplevel-reorder -fno-section-anchors... " >&6; } if ${libc_cv_fno_toplevel_reorder+:} false; then : diff --git a/configure.ac b/configure.ac index 1a2054cd1a..baf3a05ae7 100644 --- a/configure.ac +++ b/configure.ac @@ -1432,17 +1432,6 @@ fi rm -f conftest*]) AC_SUBST(libc_cv_has_glob_dat) -AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl -if libc_cv_output_format=` -${CC-cc} -nostartfiles -nostdlib $no_ssp -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD` -then - : -else - libc_cv_output_format= -fi -test -n "$libc_cv_output_format" || libc_cv_output_format=unknown]) -AC_SUBST(libc_cv_output_format) - AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl cat > conftest.c <