aboutsummaryrefslogtreecommitdiff
path: root/Makerules
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2021-01-11 11:56:54 -0800
committerFangrui Song <maskray@google.com>2021-01-11 12:03:36 -0800
commit87d583c6e8cd0e49f64da76636ebeec033298b4d (patch)
tree0db4d141573b5454d054767ac407e32e7e6bfc9c /Makerules
parentbf7db6d369d7366ffe3ebcf3c2810139b0195517 (diff)
downloadglibc-87d583c6e8cd0e49f64da76636ebeec033298b4d.tar
glibc-87d583c6e8cd0e49f64da76636ebeec033298b4d.tar.gz
glibc-87d583c6e8cd0e49f64da76636ebeec033298b4d.tar.bz2
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--Makerules13
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