public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] PowerPC: fix for gdb.base/eh_return.exp
@ 2022-05-05 20:07 Carl Love
  2022-05-06 18:08 ` Kevin Buettner
  0 siblings, 1 reply; 23+ messages in thread
From: Carl Love @ 2022-05-05 20:07 UTC (permalink / raw)
  To: gdb-patches; +Cc: cel, Will Schmidt, Rogerio Alves

GDB maintainers:

The following patch fixes a test failure on PowerPC.  The test needs to
determing the last instruction in function e2.  The current parsing to
get the last instruction doesn't work on PowerPC as there are three
additional .long statements after the last instruction.

This patch adds an entry to the gdb_test_multiple statement to parse
the PowerPC assembly code to get the address. 

The patch has been tested on PowerPC and Intel with no regression
failures.  Please let me know if this patch is acceptable.  Thanks.

                                  Carl Love
----------------------------------------------
PowerPC: fix for gdb.base/eh_return.exp

The expect file does a disassembly of function eh2 to get the address of
the last instruction of function eh2.  The last instruction on PowerPC is
followed by three .long entries.  This requires a different pattern
matching for PowerPC versus other architectures.

This patch adds the needed gdb_test_multiple match statement for the
PowerPC disassembly code.

This patch fixes the one test failure on PowerPC.

The patch has been tested on Power 10 and Intel 64.
---
 gdb/testsuite/gdb.base/eh_return.exp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/eh_return.exp
index df55dbc72da..ce46a3623d9 100644
--- a/gdb/testsuite/gdb.base/eh_return.exp
+++ b/gdb/testsuite/gdb.base/eh_return.exp
@@ -27,6 +27,22 @@ set address -1
 
 # Get the address of the last insn in function eh2.
 gdb_test_multiple "disassemble eh2" "" {
+    -re "($hex)\[^\r\n\]*blr.*" {
+	# The dissassebmly on Powerpc looks like:
+	#   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.
+	#
+	#  Powerpc needs the address for the blr instruction above.
+	set address $expect_out(1,string)
+	pass $gdb_test_name
+    }
     -re -wrap "($hex)\[^\r\n\]*\r\nEnd of assembler dump." {
 	set address $expect_out(1,string)
 	pass $gdb_test_name
-- 
2.31.1



^ permalink raw reply	[flat|nested] 23+ messages in thread
* [PATCH] Powerpc fix for gdb.base/eh_return.exp
@ 2022-03-23 17:49 Carl Love
  0 siblings, 0 replies; 23+ messages in thread
From: Carl Love @ 2022-03-23 17:49 UTC (permalink / raw)
  To: gdb-patches, cel; +Cc: Rogerio Alves, Will Schmidt

GDB maintainers:

The following patch fixes the one testfailure in gdb.base/eh_return.exp
on Powerpc.  Basically, the output format of the disassembly for
Powerpc is a little different requiring an additional test for Powerpc
in the gdb_test_multiple statement.

The patch has been tested on a Power 10 platform and on an Intel 64-bit 
system.  No test regressions were found.

Please let me know if this patch is acceptable for gdb mainline. 
Thanks.

                Carl Love


-----------------------------------------------
Powerpc fix for gdb.base/eh_return.exp

The expect file does a disassembly of function eh2 to get the address of
the last instruction of function eh2.  The last instruction on Powerpc is
followed by three .long entries.  This requires a different pattern
matching for Intel and Power.

This patch adds the needed gdb_test_multiple match statement for the
Powerpc disassembly code.

This patch fixes the one test failure on Powerpc.
---
 gdb/testsuite/gdb.base/eh_return.exp | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/eh_return.exp
index df55dbc72da..041df5f2c84 100644
--- a/gdb/testsuite/gdb.base/eh_return.exp
+++ b/gdb/testsuite/gdb.base/eh_return.exp
@@ -26,7 +26,35 @@ if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
 set address -1
 
 # Get the address of the last insn in function eh2.
+# The dissassebmly on Powerpc looks like:
+#   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.
+#
+#  Powerpc needs the address for the blr instruction above
+#
+# The dissassembly on Intel looks like:
+#   Dump of assembler code for function eh2:
+#   0x00000000004012cf <+0>:     endbr64
+#   0x00000000004012d3 <+4>:     push   %rbp
+#   ...
+#   0x000000000040134d <+126>:   pop    %rcx
+#   0x000000000040134e <+127>:   jmp    *%rcx
+#   End of assembler dump.
+#
+# Intel needs the address of the last jmp instruction
+
 gdb_test_multiple "disassemble eh2" "" {
+    -re "($hex)\[^\r\n\]*blr.*" {
+	set address $expect_out(1,string)
+	pass $gdb_test_name
+    }
     -re -wrap "($hex)\[^\r\n\]*\r\nEnd of assembler dump." {
 	set address $expect_out(1,string)
 	pass $gdb_test_name
-- 
2.32.0



^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2022-07-15 13:41 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 20:07 [PATCH] PowerPC: fix for gdb.base/eh_return.exp Carl Love
2022-05-06 18:08 ` Kevin Buettner
2022-05-06 21:16   ` Pedro Alves
2022-05-06 22:45     ` will schmidt
2022-05-09 19:17       ` [PATCH V2] " Carl Love
2022-05-09 20:57         ` will schmidt
2022-05-10 11:43           ` Pedro Alves
2022-05-11 21:52             ` Carl Love
2022-05-11 21:52           ` [PATCH V3] " Carl Love
2022-05-11 22:48             ` Kevin Buettner
2022-05-12 16:00               ` Carl Love
2022-06-02 16:52               ` Carl Love
2022-06-08 18:32                 ` Pedro Alves
2022-06-08 18:51                   ` Carl Love
2022-06-09 15:24                   ` Carl Love
2022-06-02 17:00             ` [PATCH V4] " Carl Love
2022-06-07 17:54               ` will schmidt
2022-06-08 15:33                 ` [PATCH V5] " Carl Love
2022-06-08 15:36                   ` Carl Love
2022-06-08 16:29                     ` will schmidt
2022-07-13 17:07                     ` [Ping] " Carl Love
2022-07-15 13:41                     ` Ulrich Weigand
  -- strict thread matches above, loose matches on Subject: below --
2022-03-23 17:49 [PATCH] Powerpc " 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).