aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/gdb.base/eh_return.exp36
1 files changed, 35 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/eh_return.exp
index df55dbc..6e4b9bd 100644
--- a/gdb/testsuite/gdb.base/eh_return.exp
+++ b/gdb/testsuite/gdb.base/eh_return.exp
@@ -18,8 +18,42 @@
standard_testfile
+# Set compiler flags.
+if {[istarget "powerpc*"]} then {
+ # PowerPC generates a Traceback Table, as defined in the PPC64 ABI,
+ # following each function by default. The Traceback Table information is
+ # typically interpreted by the disassembler as data represented with
+ # .long xxxx following the last instruction in the function. For example:
+ #
+ # Dump of assembler code for function eh2:
+ # 0x00000000100009e0 <+0>: lis r2,4098
+ # ...
+ # 0x0000000010000b04 <+292>: add r1,r1,r10
+ # 0x0000000010000b08 <+296>: blr
+ # 0x0000000010000b0c <+300>: .long 0x0
+ # 0x0000000010000b10 <+304>: .long 0x1000000
+ # 0x0000000010000b14 <+308>: .long 0x1000180
+ # End of assembler dump.
+ #
+ # Disable the Traceback Table generation, using the PowerPC specific
+ # compiler option, so the test gdb_test_multiple "disassemble eh2" will
+ # locate the address of the blr instruction not the last .long statement.
+ if { [test_compiler_info "gcc-*"] } {
+ set compile_flags {debug nopie additional_flags=-mtraceback=no}
+ } elseif { [test_compiler_info "xlc-*"] } {
+ set compile_flags {debug nopie additional_flags=-qtbtable=none}
+ } elseif { [test_compiler_info "clang-*"] } {
+ set compile_flags [list debug nopie additional_flags=-mllvm \
+ additional_flags=-xcoff-traceback-table=false]
+ } else {
+ set compile_flags {debug nopie }
+ }
+} else {
+ set compile_flags {debug nopie}
+}
+
if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
- {debug nopie}]} {
+ $compile_flags]} {
return -1
}