public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] PowerPC: fix for gdb.base/eh_return.exp
@ 2022-07-15 15:18 Carl Love
  0 siblings, 0 replies; only message in thread
From: Carl Love @ 2022-07-15 15:18 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=aa63b0a77e193b5181390f19465f33c314d0490e

commit aa63b0a77e193b5181390f19465f33c314d0490e
Author: Carl Love <cel@us.ibm.com>
Date:   Fri Jul 15 15:17:34 2022 +0000

    PowerPC: fix for gdb.base/eh_return.exp
    
    Disable the Traceback Table generation on PowerPC for this test.  The
    Traceback Table consists of a series of bit fields to indicate things like
    the Traceback Table version, language, and specific information about the
    function.  The Traceback Table is generated following the end of the code
    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 functions
    by default and is part of the function length.  The table is typically
    interpreted by the disassembler as data represented by .long xxx entries.
    
    Generation of the Traceback Table is disabled in this test using the
    PowerPC specific gcc compiler option -mtraceback=no, the xlc option
    additional_flags-qtable=none and the clang optons
     -mllvm -xcoff-traceback-table=false.  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 statement
    "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 @@
 
 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
 }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-15 15:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-15 15:18 [binutils-gdb] PowerPC: fix for gdb.base/eh_return.exp Carl Love

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).