]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PowerPC: Fix test gdb.ada/finish-large.exp
authorCarl Love <cel@linux.ibm.com>
Mon, 20 Nov 2023 16:13:22 +0000 (11:13 -0500)
committerCarl Love <cel@linux.ibm.com>
Mon, 20 Nov 2023 16:13:22 +0000 (11:13 -0500)
Function Create_large returns a large data structure.  On PowerPC, register
r3 contains the address of where the data structure to be returned is to
be stored.  However, on exit the ABI does not guarantee that r3 has not
been changed.  The GDB finish command prints the return value of the
function at the end of the function.  GDB needs to use the
DW_TAG_call_site information to determine the value of r3 on entry to
the function to correctly print the return value at the end of the
function.  The test must be compiled with -fvar-tracking for the
DW_TAG_call_site information to be included in the executable file.

This patch adds the -fvar-tracking option to the compile line if the
option is supported.

The patch fixes the one regression error for the test on PowerPC.

The patch has been tested on Power 10 and X86-64 with no regressions.

gdb/testsuite/gdb.ada/finish-large.exp

index 5661d132a186c6bb7bb92dc4d8899cc3b941a665..6c8b1b2648de95d202d54923da83309fb6798fa0 100644 (file)
@@ -19,7 +19,13 @@ require allow_ada_tests
 
 standard_ada_testfile p
 
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} {
+set flags {debug}
+
+if {[have_fvar_tracking]} {
+  lappend flags "additional_flags=-fvar-tracking"
+}
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
   return -1
 }