diff options
author | Fangrui Song <maskray@google.com> | 2021-01-11 11:56:54 -0800 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2021-01-11 12:03:36 -0800 |
commit | 87d583c6e8cd0e49f64da76636ebeec033298b4d (patch) | |
tree | 0db4d141573b5454d054767ac407e32e7e6bfc9c /Makerules | |
parent | bf7db6d369d7366ffe3ebcf3c2810139b0195517 (diff) | |
download | glibc-87d583c6e8cd0e49f64da76636ebeec033298b4d.tar.gz glibc-87d583c6e8cd0e49f64da76636ebeec033298b4d.tar.xz glibc-87d583c6e8cd0e49f64da76636ebeec033298b4d.zip |
install: Replace scripts/output-format.sed with objdump -f [BZ #26559]
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 <adhemerval.zanella@linaro.org>
Diffstat (limited to 'Makerules')
-rw-r--r-- | Makerules | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/Makerules b/Makerules index 0b300613cc..06c7c48310 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 |