diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/gdb.base/eh_return.exp | 36 |
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 } |