Pass $NOPIE_CFLAGS and $NOPIE_LDFLAGS to more ELF tests

PR ld/21090
	* testsuite/ld-gc/gc.ex: Compile tmpdir/pr14265.o with
	$NOPIE_CFLAGS.
	* testsuite/ld-i386/i386.exp: Pass $NOPIE_CFLAGS and
	$NOPIE_LDFLAGS if non-PIE is required.
	* testsuite/ld-i386/no-plt.exp (NOPIE_CFLAGS): New.
	(NOPIE_LDFLAGS): Likewise.
	Pass $NOPIE_LDFLAGS if non-PIE is required.
	* testsuite/ld-shared/shared.exp: Compile tmpdir/sh1np.o with
	$NOPIE_CFLAGS.
This commit is contained in:
H.J. Lu 2017-06-22 09:53:33 -07:00
parent 16892a0323
commit 9d1c54ed7f
5 changed files with 38 additions and 19 deletions

View File

@ -1,3 +1,16 @@
2017-06-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/21090
* testsuite/ld-gc/gc.ex: Compile tmpdir/pr14265.o with
$NOPIE_CFLAGS.
* testsuite/ld-i386/i386.exp: Pass $NOPIE_CFLAGS and
$NOPIE_LDFLAGS if non-PIE is required.
* testsuite/ld-i386/no-plt.exp (NOPIE_CFLAGS): New.
(NOPIE_LDFLAGS): Likewise.
Pass $NOPIE_LDFLAGS if non-PIE is required.
* testsuite/ld-shared/shared.exp: Compile tmpdir/sh1np.o with
$NOPIE_CFLAGS.
2017-06-22 H.J. Lu <hongjiu.lu@intel.com>
* NEWS: Mention -z shstk and GNU_PROPERTY_X86_FEATURE_1_SHSTK.

View File

@ -26,6 +26,9 @@ if ![check_gc_sections_available] {
set cflags "-ffunction-sections -fdata-sections"
set objfile "tmpdir/gc.o"
# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
global NOPIE_CFLAGS NOPIE_LDFLAGS
if [istarget powerpc64*-*-*] {
# otherwise with -mcmodel=medium gcc we get XPASSes.
set cflags "$cflags -mminimal-toc"
@ -144,7 +147,7 @@ if { [is_remote host] || [which $CC] != 0 } {
}
if { [is_remote host] || [which $CC] != 0 } {
ld_compile "$CC $CFLAGS $cflags" $srcdir/$subdir/pr14265.c tmpdir/pr14265.o
ld_compile "$CC $CFLAGS $cflags $NOPIE_CFLAGS" $srcdir/$subdir/pr14265.c tmpdir/pr14265.o
run_dump_test "pr14265"
}

View File

@ -732,7 +732,7 @@ if { [isnative]
] \
[list \
"Build gotpc1" \
"-Wl,--as-needed tmpdir/gotpc1.o tmpdir/got1d.so" \
"$NOPIE_LDFLAGS -Wl,--as-needed tmpdir/gotpc1.o tmpdir/got1d.so" \
"" \
{ dummy.s } \
{{objdump {-dw} got1.dd}} \
@ -994,7 +994,7 @@ if { [isnative]
] \
[list \
"Run got1" \
"tmpdir/got1d.so" \
"$NOPIE_LDFLAGS tmpdir/got1d.so" \
"" \
{ got1a.S got1b.c got1c.c } \
"got1" \
@ -1107,14 +1107,14 @@ if { [isnative]
] \
]
undefined_weak "" ""
undefined_weak "-fPIE" ""
undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
undefined_weak "-fPIE" "$NOPIE_LDFLAGS"
undefined_weak "-fPIE" "-pie"
undefined_weak "-fPIE" "-z nodynamic-undefined-weak"
undefined_weak "-fPIE" "-z nodynamic-undefined-weak $NOPIE_LDFLAGS"
undefined_weak "-fPIE" "-pie -z nodynamic-undefined-weak"
}
global NOPIE_LDFLAGS
global NOPIE_CFLAGS NOPIE_LDFLAGS
# Must be native with the C compiler and working IFUNC support,
if { [isnative]

View File

@ -39,6 +39,9 @@ if { [which $CC] == 0 } {
return
}
# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
global NOPIE_CFLAGS NOPIE_LDFLAGS
run_cc_link_tests [list \
[list \
"Build no-plt-func1.o no-plt-main1.o" \
@ -73,7 +76,7 @@ run_cc_link_tests [list \
] \
[list \
"No PLT (dynamic 1a)" \
"tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
"" \
{dummy.s} \
@ -91,7 +94,7 @@ run_cc_link_tests [list \
] \
[list \
"No PLT (dynamic 1c)" \
"tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/libno-plt-1b.so" \
"" \
{dummy.s} \
@ -136,7 +139,7 @@ run_cc_link_tests [list \
] \
[list \
"No PLT (dynamic 1h)" \
"tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
"" \
{dummy.s} \
@ -145,7 +148,7 @@ run_cc_link_tests [list \
] \
[list \
"No PLT (dynamic 1i)" \
"tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-extern1b.o tmpdir/libno-plt-1a.so" \
"" \
{dummy.s} \
@ -229,7 +232,7 @@ run_ld_link_exec_tests [list \
] \
[list \
"No PLT (dynamic 1h)" \
"tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
"" \
{dummy.s} \
@ -238,7 +241,7 @@ run_ld_link_exec_tests [list \
] \
[list \
"No PLT (dynamic 1i)" \
"tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-extern1b.o tmpdir/libno-plt-1a.so" \
"" \
{dummy.s} \
@ -291,7 +294,7 @@ if { [check_ifunc_available] } {
run_ld_link_exec_tests [list \
[list \
"Run pr20244-3a" \
"tmpdir/pr20244-3a.o tmpdir/pr20244-3b.o \
"$NOPIE_LDFLAGS tmpdir/pr20244-3a.o tmpdir/pr20244-3b.o \
tmpdir/pr20244-3c.o tmpdir/pr20244-3d.o" \
"" \
{ dummy.c } \
@ -352,7 +355,7 @@ if { [check_ifunc_available] } {
] \
[list \
"Run pr20253-1f" \
"tmpdir/pr20253-1a.o" \
"$NOPIE_LDFLAGS tmpdir/pr20253-1a.o" \
"" \
{ pr20253-1b.S pr20253-1c.S pr20253-1d.S } \
"pr20253-1f" \
@ -370,7 +373,7 @@ if { [check_ifunc_available] } {
] \
[list \
"Run pr20253-2a" \
"tmpdir/pr20253-2a.o tmpdir/pr20253-2b.o \
"$NOPIE_LDFLAGS tmpdir/pr20253-2a.o tmpdir/pr20253-2b.o \
tmpdir/pr20253-2c.o tmpdir/pr20253-2d.o" \
"" \
{ dummy.s } \
@ -388,7 +391,7 @@ if { [check_ifunc_available] } {
] \
[list \
"Run pr20253-2c" \
"tmpdir/pr20253-2a.o" \
"$NOPIE_LDFLAGS tmpdir/pr20253-2a.o" \
"" \
{ pr20253-2b.S pr20253-2c.S pr20253-2d.S } \
"pr20253-2c" \

View File

@ -225,8 +225,8 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.o]
# will need to do more relocation work. However, note that not
# using -fpic will cause some of the tests to return different
# results. Make sure that PLT is used since PLT is expected.
global PLT_CFLAGS
if { ![ld_compile "$CC $PLT_CFLAGS $CFLAGS $SHCFLAG" $srcdir/$subdir/sh1.c $tmpdir/sh1np.o]
global PLT_CFLAGS NOPIE_CFLAGS
if { ![ld_compile "$CC $PLT_CFLAGS $NOPIE_CFLAGS $CFLAGS $SHCFLAG" $srcdir/$subdir/sh1.c $tmpdir/sh1np.o]
|| ![ld_compile "$CC $PLT_CFLAGS $CFLAGS $SHCFLAG" $srcdir/$subdir/sh2.c $tmpdir/sh2np.o] } {
unresolved "shared (non PIC)"
} else { if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {