aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog13
-rw-r--r--gdb/testsuite/README5
-rw-r--r--gdb/testsuite/gdb.arch/amd64-disp-step.exp3
-rw-r--r--gdb/testsuite/gdb.arch/amd64-entry-value.exp2
-rw-r--r--gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp3
-rw-r--r--gdb/testsuite/gdb.arch/i386-float.exp2
-rw-r--r--gdb/testsuite/gdb.arch/i386-signal.exp2
-rw-r--r--gdb/testsuite/gdb.mi/mi-reg-undefined.exp2
-rw-r--r--gdb/testsuite/lib/gdb.exp13
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"]