ld: Add -static-pie tests
Add -static-pie tests for DT_INIT_ARRAY, DT_FINI_ARRAY, DT_PREINIT_ARRAY and IFUNC. * testsuite/config/default.exp (STATIC_PIE_LDFLAGS): New. Set to "-static-pie" if target compiler supports it. * testsuite/ld-elf/elf.exp: Run -static-pie tests if $STATIC_PIE_LDFLAGS isn't empty. * testsuite/ld-ifunc/ifunc.exp: Likewise.
This commit is contained in:
parent
a0ea3a14dc
commit
b3d7a86748
|
@ -1,3 +1,11 @@
|
||||||
|
2019-04-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* testsuite/config/default.exp (STATIC_PIE_LDFLAGS): New. Set
|
||||||
|
to "-static-pie" if target compiler supports it.
|
||||||
|
* testsuite/ld-elf/elf.exp: Run -static-pie tests if
|
||||||
|
$STATIC_PIE_LDFLAGS isn't empty.
|
||||||
|
* testsuite/ld-ifunc/ifunc.exp: Likewise.
|
||||||
|
|
||||||
2019-04-11 Tamar Christina <tamar.christina@arm.com>
|
2019-04-11 Tamar Christina <tamar.christina@arm.com>
|
||||||
|
|
||||||
PR ld/24302
|
PR ld/24302
|
||||||
|
|
|
@ -454,3 +454,40 @@ if { ![info exists STATIC_LDFLAGS] } then {
|
||||||
set STATIC_LDFLAGS ""
|
set STATIC_LDFLAGS ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Set STATIC_PIE_LDFLAGS to "-static-pie" if target compiler supports it.
|
||||||
|
|
||||||
|
if { ![info exists STATIC_PIE_LDFLAGS] } then {
|
||||||
|
if { [which $CC] != 0 } {
|
||||||
|
# Check if gcc supports -static-pie.
|
||||||
|
set flags ""
|
||||||
|
if [board_info [target_info name] exists cflags] {
|
||||||
|
append flags " [board_info [target_info name] cflags]"
|
||||||
|
}
|
||||||
|
if [board_info [target_info name] exists ldflags] {
|
||||||
|
append flags " [board_info [target_info name] ldflags]"
|
||||||
|
}
|
||||||
|
|
||||||
|
set basename "tmpdir/static[pid]"
|
||||||
|
set src ${basename}.c
|
||||||
|
set output ${basename}
|
||||||
|
set f [open $src "w"]
|
||||||
|
puts $f "int main (void) { return 0; }"
|
||||||
|
close $f
|
||||||
|
if [is_remote host] {
|
||||||
|
set src [remote_download host $src]
|
||||||
|
}
|
||||||
|
set static_available [run_host_cmd_yesno "$CC" "-static-pie $flags $src -o $output"]
|
||||||
|
remote_file host delete $src
|
||||||
|
remote_file host delete $output
|
||||||
|
file delete $src
|
||||||
|
|
||||||
|
if { $static_available == 1 } then {
|
||||||
|
set STATIC_PIE_LDFLAGS "-static-pie"
|
||||||
|
} else {
|
||||||
|
set STATIC_PIE_LDFLAGS ""
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
set STATIC_PIE_LDFLAGS ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -235,6 +235,56 @@ if { [istarget *-*-linux*]
|
||||||
|| [istarget *-*-gnu*] } {
|
|| [istarget *-*-gnu*] } {
|
||||||
run_ld_link_exec_tests $array_tests_pie $xfails
|
run_ld_link_exec_tests $array_tests_pie $xfails
|
||||||
|
|
||||||
|
if { $STATIC_PIE_LDFLAGS != "" } then {
|
||||||
|
run_ld_link_exec_tests [list \
|
||||||
|
[list \
|
||||||
|
"Static PIE preinit array" \
|
||||||
|
"$STATIC_PIE_LDFLAGS" \
|
||||||
|
"" \
|
||||||
|
{preinit.c} \
|
||||||
|
"preinit-static-pie" \
|
||||||
|
"preinit.out" \
|
||||||
|
"-fPIE" \
|
||||||
|
] \
|
||||||
|
[list \
|
||||||
|
"Static PIE init array" \
|
||||||
|
"$STATIC_PIE_LDFLAGS" \
|
||||||
|
"" \
|
||||||
|
{init.c} \
|
||||||
|
"init-static-pie" \
|
||||||
|
"init.out" \
|
||||||
|
"-fPIE" \
|
||||||
|
] \
|
||||||
|
[list \
|
||||||
|
"Static PIE fini array" \
|
||||||
|
"$STATIC_PIE_LDFLAGS" \
|
||||||
|
"" \
|
||||||
|
{fini.c} \
|
||||||
|
"fini-static-pie" \
|
||||||
|
"fini.out" \
|
||||||
|
"-fPIE" \
|
||||||
|
] \
|
||||||
|
[list \
|
||||||
|
"Static PIE init array mixed" \
|
||||||
|
"$STATIC_PIE_LDFLAGS" \
|
||||||
|
"" \
|
||||||
|
{init-mixed.c} \
|
||||||
|
"init-mixed-static-pie" \
|
||||||
|
"init-mixed.out" \
|
||||||
|
"-I. -fPIE" \
|
||||||
|
] \
|
||||||
|
[list \
|
||||||
|
"Static PIE PR ld/14525" \
|
||||||
|
"$STATIC_PIE_LDFLAGS" \
|
||||||
|
"" \
|
||||||
|
{pr14525.c} \
|
||||||
|
"pr14525-static-pie" \
|
||||||
|
"pr14525.out" \
|
||||||
|
"-fPIE" \
|
||||||
|
] \
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
run_ld_link_exec_tests [list \
|
run_ld_link_exec_tests [list \
|
||||||
[list \
|
[list \
|
||||||
"Run mbind2a" \
|
"Run mbind2a" \
|
||||||
|
|
|
@ -777,6 +777,20 @@ run_ld_link_exec_tests [list \
|
||||||
"pass.out" \
|
"pass.out" \
|
||||||
"-fPIE -O2 -g" \
|
"-fPIE -O2 -g" \
|
||||||
] \
|
] \
|
||||||
]}
|
]
|
||||||
|
if { $STATIC_PIE_LDFLAGS != "" } then {
|
||||||
|
run_ld_link_exec_tests [list \
|
||||||
|
[list \
|
||||||
|
"Run pr23169g" \
|
||||||
|
"$STATIC_PIE_LDFLAGS" \
|
||||||
|
"" \
|
||||||
|
{ pr23169a.c pr23169b.c pr23169c.c } \
|
||||||
|
"pr23169g" \
|
||||||
|
"pass.out" \
|
||||||
|
"-fPIE -O2 -g" \
|
||||||
|
] \
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set ASFLAGS "$saved_ASFLAGS"
|
set ASFLAGS "$saved_ASFLAGS"
|
||||||
|
|
Loading…
Reference in New Issue