From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Fangrui Song <maskray@google.com>, libc-alpha@sourceware.org
Subject: Re: [PATCH 3/3] install: Replace scripts/output-format.sed with objdump -f [BZ #26559]
Date: Fri, 8 Jan 2021 16:38:27 -0300 [thread overview]
Message-ID: <0be74da1-a490-be53-86e1-8469dc0b9428@linaro.org> (raw)
In-Reply-To: <20201228194855.510315-4-maskray@google.com>
On 28/12/2020 16:48, Fangrui Song via Libc-alpha wrote:
> 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.
LGTM and this change seems orthogonal to the other lld adjustments.
I have checked that at least with a build for a handful of supported
ABIs I see no difference with ld.bfd (with multiple versions).
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> 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
Ok.
> 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
Ok.
> 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@
Ok.
> 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 <<EOF
> int foo;
Ok.
> diff --git a/scripts/output-format.sed b/scripts/output-format.sed
> deleted file mode 100644
> index 364f52059f..0000000000
> --- a/scripts/output-format.sed
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -/ld.*[ ]-E[BL]/b f
> -/collect.*[ ]-E[BL]/b f
> -/OUTPUT_FORMAT[^)]*$/{N
> -s/\n[ ]*/ /
> -}
> -t o
> -: o
> -s/^.*OUTPUT_FORMAT(\([^,]*\), \1, \1).*$/OUTPUT_FORMAT(\1)/
> -t q
> -s/^.*OUTPUT_FORMAT(\([^,]*\), \([^,]*\), \([^,]*\)).*$/\1,\2,\3/
> -t s
> -s/^.*OUTPUT_FORMAT(\([^,)]*\).*$)/OUTPUT_FORMAT(\1)/
> -t q
> -d
> -: s
> -s/"//g
> -G
> -s/\n//
> -s/^\([^,]*\),\([^,]*\),\([^,]*\),B/OUTPUT_FORMAT(\2)/p
> -s/^\([^,]*\),\([^,]*\),\([^,]*\),L/OUTPUT_FORMAT(\3)/p
> -s/^\([^,]*\),\([^,]*\),\([^,]*\)/OUTPUT_FORMAT(\1)/p
> -/,/s|^|*** BUG in libc/scripts/output-format.sed *** |p
> -q
> -: q
> -s/"//g
> -p
> -q
> -: f
> -s/^.*[ ]-E\([BL]\)[ ].*$/,\1/
> -t h
> -s/^.*[ ]-E\([BL]\)$/,\1/
> -t h
> -d
> -: h
> -h
>
Ok.
next prev parent reply other threads:[~2021-01-08 19:38 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-28 19:48 [PATCH 0/3] Make glibc build with LLD Fangrui Song
2020-12-28 19:48 ` [PATCH 1/3] configure: Allow LD to be a linker other than GNU ld and gold Fangrui Song
2020-12-28 20:46 ` H.J. Lu
2020-12-28 21:15 ` [PATCH 1/3] configure: Allow LD to be LLD 9.0.0 or above " Fangrui Song
2020-12-28 19:48 ` [PATCH 2/3] elf: Replace a --defsym trick with an object file to be compatible with lld Fangrui Song
2021-01-11 20:06 ` Fāng-ruì Sòng
2021-01-18 22:08 ` Fāng-ruì Sòng
2021-01-19 0:03 ` H.J. Lu
2021-01-19 8:50 ` Fāng-ruì Sòng
2021-01-19 12:30 ` H.J. Lu
2021-01-20 18:51 ` Fāng-ruì Sòng
2021-01-28 1:03 ` Fāng-ruì Sòng
2021-01-29 14:38 ` Adhemerval Zanella
2021-01-29 15:29 ` H.J. Lu
2021-01-29 18:04 ` Adhemerval Zanella
2021-01-29 19:28 ` [PATCH v2] elf: Replace a --defsym trick with an object file to be compatible with LLD Fangrui Song
2021-02-01 13:19 ` Adhemerval Zanella
2021-02-01 13:45 ` H.J. Lu
2021-02-01 13:43 ` Florian Weimer
2020-12-28 19:48 ` [PATCH 3/3] install: Replace scripts/output-format.sed with objdump -f [BZ #26559] Fangrui Song
2021-01-08 19:38 ` Adhemerval Zanella [this message]
2021-01-12 11:20 ` Florian Weimer
2021-01-12 12:00 ` Adhemerval Zanella
2021-01-12 17:46 ` Fāng-ruì Sòng
2021-01-12 11:32 ` Andreas Schwab
2021-01-12 11:58 ` Florian Weimer
2020-12-28 21:11 ` [PATCH 0/3] Make glibc build with LLD H.J. Lu
2020-12-28 21:45 ` Fangrui Song
2020-12-28 21:49 ` H.J. Lu
2020-12-28 22:54 ` H.J. Lu
2021-01-05 23:03 ` Fāng-ruì Sòng
2021-01-05 23:33 ` H.J. Lu
2021-01-05 23:41 ` Fāng-ruì Sòng
2021-01-05 23:51 ` H.J. Lu
2021-01-06 0:50 ` Fāng-ruì Sòng
2021-01-06 1:43 ` H.J. Lu
2021-01-06 2:00 ` Fāng-ruì Sòng
2021-01-06 2:14 ` H.J. Lu
2021-01-05 22:57 ` Fāng-ruì Sòng
2021-01-08 5:04 ` Fāng-ruì Sòng
2021-01-08 17:09 ` H.J. Lu
2021-01-08 18:04 ` Fāng-ruì Sòng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0be74da1-a490-be53-86e1-8469dc0b9428@linaro.org \
--to=adhemerval.zanella@linaro.org \
--cc=libc-alpha@sourceware.org \
--cc=maskray@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).