From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1983) id 54A443857BBD; Fri, 15 Jul 2022 15:18:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 54A443857BBD Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Carl Love To: gdb-cvs@sourceware.org Subject: [binutils-gdb] PowerPC: fix for gdb.base/eh_return.exp X-Act-Checkin: binutils-gdb X-Git-Author: Carl Love X-Git-Refname: refs/heads/master X-Git-Oldrev: bf4d777d39da152371dec9df08db1ef4179f7ad9 X-Git-Newrev: aa63b0a77e193b5181390f19465f33c314d0490e Message-Id: <20220715151821.54A443857BBD@sourceware.org> Date: Fri, 15 Jul 2022 15:18:21 +0000 (GMT) X-BeenThere: gdb-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jul 2022 15:18:21 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Daa63b0a77e19= 3b5181390f19465f33c314d0490e commit aa63b0a77e193b5181390f19465f33c314d0490e Author: Carl Love Date: Fri Jul 15 15:17:34 2022 +0000 PowerPC: fix for gdb.base/eh_return.exp =20 Disable the Traceback Table generation on PowerPC for this test. The Traceback Table consists of a series of bit fields to indicate things l= ike the Traceback Table version, language, and specific information about t= he function. The Traceback Table is generated following the end of the co= de for every function by default. The Traceback Table is defined in the PowerPC ELF ABI and is intended to support debuggers and exception handlers. The Traceback Table is displayed in the disassembly of funct= ions by default and is part of the function length. The table is typically interpreted by the disassembler as data represented by .long xxx entrie= s. =20 Generation of the Traceback Table is disabled in this test using the PowerPC specific gcc compiler option -mtraceback=3Dno, the xlc option additional_flags-qtable=3Dnone and the clang optons -mllvm -xcoff-traceback-table=3Dfalse. Disabling the Traceback Table generation in this test results in the gdb_test_multiple statement correctly locating the address of the bclr instruction before the state= ment "End of assembler dump." in the disassembly output. Diff: --- gdb/testsuite/gdb.base/eh_return.exp | 36 ++++++++++++++++++++++++++++++++= +++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/= eh_return.exp index df55dbc72da..6e4b9bd0bba 100644 --- a/gdb/testsuite/gdb.base/eh_return.exp +++ b/gdb/testsuite/gdb.base/eh_return.exp @@ -18,8 +18,42 @@ =20 standard_testfile =20 +# 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 exam= ple: + # + # 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 stateme= nt. + if { [test_compiler_info "gcc-*"] } { + set compile_flags {debug nopie additional_flags=3D-mtraceback=3Dno} + } elseif { [test_compiler_info "xlc-*"] } { + set compile_flags {debug nopie additional_flags=3D-qtbtable=3Dnone} + } elseif { [test_compiler_info "clang-*"] } { + set compile_flags [list debug nopie additional_flags=3D-mllvm \ + additional_flags=3D-xcoff-traceback-table=3Dfalse] + } 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 }