diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/testsuite/README | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/amd64-disp-step.exp | 3 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/amd64-entry-value.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp | 3 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-float.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-signal.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-reg-undefined.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 13 |
9 files changed, 38 insertions, 7 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f3224d4..1ac687e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2018-12-21 Jan Vrany <jan.vrany@fit.cvut.cz> + + * lib/gdb.exp (gdb_compile): Add new nopie flag enforce + non-PIE executables. + * README: Mention the gdb,nopie_flag board setting. + * gdb.arch/amd64-disp-step.exp: Use nopie flag to enforce + non-PIE executable. + * gdb.arch/amd64-entry-value.exp: Likewise. + * gdb.arch/amd64-invalid-stack-middle.exp: Likewise. + * gdb.arch/i386-float.exp: Likewise. + * gdb.arch/i386-signal.exp: Likewise. + * gdb.mi/mi-reg-undefined.exp: Likewise. + 2018-12-21 Paul Marechal <paul.marechal@ericsson.com> PR gdb/23974 diff --git a/gdb/testsuite/README b/gdb/testsuite/README index 723d8ba..b5e75b9 100644 --- a/gdb/testsuite/README +++ b/gdb/testsuite/README @@ -482,6 +482,11 @@ gdb,no_thread_names The target doesn't support thread names. +gdb,nopie_flag + + The flag required to force the compiler to produce non-position-independent + executables. + Testsuite Organization ********************** diff --git a/gdb/testsuite/gdb.arch/amd64-disp-step.exp b/gdb/testsuite/gdb.arch/amd64-disp-step.exp index 782b758..0b941e7 100644 --- a/gdb/testsuite/gdb.arch/amd64-disp-step.exp +++ b/gdb/testsuite/gdb.arch/amd64-disp-step.exp @@ -25,9 +25,10 @@ if { ![istarget x86_64-*-* ] || ![is_lp64_target] } { set newline "\[\r\n\]*" +set opts {debug nopie} standard_testfile .S -if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } { +if { [prepare_for_testing "failed to prepare" $testfile $srcfile $opts] } { return -1 } diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value.exp b/gdb/testsuite/gdb.arch/amd64-entry-value.exp index 72700d5..a8d7d4e 100644 --- a/gdb/testsuite/gdb.arch/amd64-entry-value.exp +++ b/gdb/testsuite/gdb.arch/amd64-entry-value.exp @@ -14,7 +14,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. standard_testfile .s -set opts {} +set opts {nopie} if [info exists COMPILE] { # make check RUNTESTFLAGS="gdb.arch/amd64-entry-value.exp COMPILE=1" diff --git a/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp b/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp index 2bb0344..db4d9d7 100644 --- a/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp +++ b/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp @@ -27,7 +27,6 @@ # run twice, and we restart gdb before testing each different command to # ensure that nothing is being cached. -set opts {} standard_testfile .S if { ![istarget x86_64-*-* ] || ![is_lp64_target] } { @@ -35,7 +34,7 @@ if { ![istarget x86_64-*-* ] || ![is_lp64_target] } { return } -if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $opts] } { +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {nopie}] } { return -1 } diff --git a/gdb/testsuite/gdb.arch/i386-float.exp b/gdb/testsuite/gdb.arch/i386-float.exp index 87c90c3..f0d05f3 100644 --- a/gdb/testsuite/gdb.arch/i386-float.exp +++ b/gdb/testsuite/gdb.arch/i386-float.exp @@ -28,7 +28,7 @@ standard_testfile .S # some targets have leading underscores on assembly symbols. set additional_flags [gdb_target_symbol_prefix_flags_asm] -if { [prepare_for_testing "failed to prepare" $testfile $srcfile [list debug $additional_flags]] } { +if { [prepare_for_testing "failed to prepare" $testfile $srcfile [list debug nopie $additional_flags]] } { return -1 } diff --git a/gdb/testsuite/gdb.arch/i386-signal.exp b/gdb/testsuite/gdb.arch/i386-signal.exp index 38046a1..d7acb04 100644 --- a/gdb/testsuite/gdb.arch/i386-signal.exp +++ b/gdb/testsuite/gdb.arch/i386-signal.exp @@ -23,7 +23,7 @@ if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then { standard_testfile if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ - executable { debug }] != "" } { + executable { debug nopie }] != "" } { untested "failed to compile" return -1 } diff --git a/gdb/testsuite/gdb.mi/mi-reg-undefined.exp b/gdb/testsuite/gdb.mi/mi-reg-undefined.exp index 83abab1..e7f0b54 100644 --- a/gdb/testsuite/gdb.mi/mi-reg-undefined.exp +++ b/gdb/testsuite/gdb.mi/mi-reg-undefined.exp @@ -33,7 +33,7 @@ if [mi_gdb_start] { standard_testfile .S -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nopie}] != "" } { untested "failed to compile" return -1 } diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 5a5713b..c5fda74 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -3482,6 +3482,7 @@ set gdb_saved_set_unbuffered_mode_obj "" # dynamically load libraries at runtime. For example, on Linux, this adds # -ldl so that the test can use dlopen. # - nowarnings: Inhibit all compiler warnings. +# - nopie: Prevent creation of PIE executables. # # And here are some of the not too obscure options understood by DejaGnu that # influence the compilation: @@ -3603,6 +3604,18 @@ proc gdb_compile {source dest type options} { set options [lreplace $options $nowarnings $nowarnings $flag] } + # Replace the "nopie" option with the appropriate additional_flags + # to disable PIE executables. + set nopie [lsearch -exact $options nopie] + if {$nopie != -1} { + if [target_info exists gdb,nopie_flag] { + set flag "ldflags=[target_info gdb,nopie_flag]" + } else { + set flag "ldflags=-no-pie" + } + set options [lreplace $options $nopie $nopie $flag] + } + if { $type == "executable" } { if { ([istarget "*-*-mingw*"] || [istarget "*-*-*djgpp"] |