mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
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>
This commit is contained in:
parent
bf7db6d369
commit
87d583c6e8
13
Makerules
13
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
|
||||
|
@ -9450,7 +9450,6 @@ move-if-change
|
||||
check-execstack.awk
|
||||
pylint
|
||||
pylintrc
|
||||
output-format.sed
|
||||
merge-test-results.sh
|
||||
update-copyrights
|
||||
config-uname.sh
|
||||
|
@ -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@
|
||||
|
19
configure
vendored
19
configure
vendored
@ -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
|
||||
@ -6074,24 +6073,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 :
|
||||
|
11
configure.ac
11
configure.ac
@ -1429,17 +1429,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;
|
||||
|
@ -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
|
Loading…
Reference in New Issue
Block a user