diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2019-04-11 06:52:03 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2019-04-11 06:52:03 -0700 |
commit | b3d7a86748247a68c69939cdf9925d4a78448f2d (patch) | |
tree | 4f53fc7857d2c79e5417bf0d6005c4cb1a8a7a11 /ld | |
parent | a0ea3a14dc6a6062c0c1f2bfbb7ad0373ec20843 (diff) | |
download | gdb-b3d7a86748247a68c69939cdf9925d4a78448f2d.zip gdb-b3d7a86748247a68c69939cdf9925d4a78448f2d.tar.gz gdb-b3d7a86748247a68c69939cdf9925d4a78448f2d.tar.bz2 |
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.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/testsuite/config/default.exp | 37 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/elf.exp | 50 | ||||
-rw-r--r-- | ld/testsuite/ld-ifunc/ifunc.exp | 16 |
4 files changed, 110 insertions, 1 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index e63f2be..d5f4435 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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> PR ld/24302 diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp index 7bc8692..5acab06 100644 --- a/ld/testsuite/config/default.exp +++ b/ld/testsuite/config/default.exp @@ -454,3 +454,40 @@ if { ![info exists STATIC_LDFLAGS] } then { 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 "" + } +} diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp index 4a5ef8a..4686870 100644 --- a/ld/testsuite/ld-elf/elf.exp +++ b/ld/testsuite/ld-elf/elf.exp @@ -235,6 +235,56 @@ if { [istarget *-*-linux*] || [istarget *-*-gnu*] } { 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 \ [list \ "Run mbind2a" \ diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp index 6725d49..e13b561 100644 --- a/ld/testsuite/ld-ifunc/ifunc.exp +++ b/ld/testsuite/ld-ifunc/ifunc.exp @@ -777,6 +777,20 @@ run_ld_link_exec_tests [list \ "pass.out" \ "-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" |