public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
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.

  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).