1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00

Check linker support for INSERT in linker script

Since gold doesn't support INSERT in linker script:

https://sourceware.org/bugzilla/show_bug.cgi?id=21676

tst-split-dynreloc fails to link with gold.  Check if linker supports
INSERT in linker script before using it.

	* config.make.in (have-insert): New.
	* configure.ac (libc_cv_insert): New.  Set to yes if linker
	supports INSERT in linker script.
	(AC_SUBST(libc_cv_insert): New.
	* configure: Regenerated.
	* sysdeps/x86_64/Makefile (tests): Add tst-split-dynreloc only
	if $(have-insert) == yes.
This commit is contained in:
H.J. Lu
2017-08-04 12:17:15 -07:00
parent 3093fd5e5d
commit 19f1a11e7e
5 changed files with 67 additions and 0 deletions

33
configure vendored
View File

@ -629,6 +629,7 @@ libc_cv_z_execstack
libc_cv_z_combreloc
ASFLAGS_config
libc_cv_cc_with_libunwind
libc_cv_insert
libc_cv_protected_data
BISON
INSTALL_INFO
@ -5716,6 +5717,38 @@ fi
$as_echo "$libc_cv_protected_data" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker support for INSERT in linker script" >&5
$as_echo_n "checking linker support for INSERT in linker script... " >&6; }
if ${libc_cv_insert+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
const int __attribute__ ((section(".bar"))) bar = 0x12345678;
int test (void) { return bar; }
EOF
cat > conftest.t <<EOF
SECTIONS
{
.bar : { *(.bar) }
}
INSERT AFTER .rela.dyn;
EOF
libc_cv_insert=no
if { ac_try='${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
libc_cv_insert=yes
fi
rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_insert" >&5
$as_echo "$libc_cv_insert" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken __attribute__((alias()))" >&5
$as_echo_n "checking for broken __attribute__((alias()))... " >&6; }
if ${libc_cv_broken_alias_attribute+:} false; then :