public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
To: gdb-patches@sourceware.org
Cc: brobecker@adacore.com
Subject: Re: [PATCH] testsuite: asm-source.exp: add powerpc64 support
Date: Tue, 23 Nov 2010 18:44:00 -0000	[thread overview]
Message-ID: <1290537758-28943-1-git-send-email-emachado@linux.vnet.ibm.com> (raw)
In-Reply-To: <20101120053408.GQ2634@adacore.com>

Thanks Joel for the feedback. I'm sending the first part of the patch
related to the powerpc64 support on the asm-source.exp testcase.

Thanks,
--
Edjunior

gdb/testsuite/
2010-11-23  Edjunior Machado  <emachado@br.ibm.com>

 	* asm-source.exp: Add new target "powerpc64"; expect leading `.'
 	on ppc64's symbols; "finish" and "return" commands must accept to
 	show the caller line again as well as the line after.
 	* powerpc64.inc: New file

---
 gdb/testsuite/gdb.asm/asm-source.exp |   44 ++++++++++++++++++++++---
 gdb/testsuite/gdb.asm/powerpc64.inc  |   57 ++++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+), 6 deletions(-)
 create mode 100644 gdb/testsuite/gdb.asm/powerpc64.inc

diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
index ca342bd..9053711 100644
--- a/gdb/testsuite/gdb.asm/asm-source.exp
+++ b/gdb/testsuite/gdb.asm/asm-source.exp
@@ -101,7 +101,15 @@ switch -glob -- [istarget] {
         set asm-arch mips
     }
     "powerpc*-*" {
-        set asm-arch powerpc
+        if { [is_lp64_target] } {
+            set asm-arch powerpc64
+            set asm-flags "-a64 -I${srcdir}/${subdir} -I${objdir}/${subdir}"
+            append link-flags " -m elf64ppc"
+        } else {
+            set asm-arch powerpc
+            set asm-flags "-a32 -I${srcdir}/${subdir} -I${objdir}/${subdir}"
+            append link-flags " -m elf32ppc"
+        }
     }
     "sh*-*-*" {
         set asm-arch sh
@@ -362,8 +370,19 @@ gdb_test "info source" \
 	"info source asmsrc1.s"
 
 # Try 'finishing' from foo3
-gdb_test "finish" "Run till exit from.*\[\r\n\]$line_call_foo3_again\[ \t\]+gdbasm_call foo3" \
-	"finish from foo3"
+# Some architectures will have one or more instructions after the
+# call instruction which still is part of the call sequence, so we
+# must be prepared for a "finish" to show us the caller line
+# again as well as the statement after.
+gdb_test_multiple "finish" "finish from foo3" {
+    -re "Run till exit from.*\[\r\n\]$line_call_foo3\[ \t\]+gdbasm_call foo3.*$gdb_prompt $" {
+        pass "finish from foo3"
+        gdb_test "s" ".*" "s after finish"
+    }
+    -re "Run till exit from.*\[\r\n\]$line_call_foo3_again\[ \t\]+gdbasm_call foo3.*$gdb_prompt $" {
+        pass "finish from foo3"
+    }
+}
 
 # Try 'info source' from asmsrc2.s
 gdb_test "info source" \
@@ -400,15 +419,28 @@ gdb_test_multiple "info sources" "info sources" {
 
 # Try 'info line'
 gdb_test "info line" \
-	"Line $line_call_foo3_again of.*asmsrc2.s.*starts at.*<foo2+.*> and ends at.*<foo2+.*>." \
+	"Line $line_call_foo3_again of.*asmsrc2.s.*starts at.*<\\.?foo2+.*> and ends at.*<\\.?foo2+.*>." \
 	"info line"
 
 # Try 'nexting' over next call to foo3
 gdb_test "next" "$line_foo2_leave\[ \t\]+gdbasm_leave" "next over foo3"
 
 # Try 'return' from foo2
-gdb_test "return" "\#0  main .*$line_main_exit\[ \t\]+gdbasm_exit0" "return from foo2" \
-	"Make (foo2|selected stack frame) return now\?.*" "y"
+# Like "finish", "return" command also can return to the caller
+# line again or the statement after, depending on the architecture.
+gdb_test_multiple "return" "return from foo2" {
+    -re "Make (foo2|selected stack frame) return now\?.*" {
+        send_gdb "y\n"
+        exp_continue
+    }
+    -re "\#0.*main .*$line_call_foo2\[ \t\]+gdbasm_call foo2.*$gdb_prompt $" {
+        pass "return from foo2"
+        gdb_test "s" ".*" "s after return"
+    }
+    -re "\#0.*main .*$line_main_exit\[ \t\]+gdbasm_exit0.*$gdb_prompt $" {
+        pass "return from foo2"
+    }
+}
 
 # Disassemble something, check the output
 proc test_dis { command var } {
diff --git a/gdb/testsuite/gdb.asm/powerpc64.inc b/gdb/testsuite/gdb.asm/powerpc64.inc
new file mode 100644
index 0000000..7265c07
--- /dev/null
+++ b/gdb/testsuite/gdb.asm/powerpc64.inc
@@ -0,0 +1,57 @@
+        comment "subroutine declare"
+        .purgem gdbasm_declare
+        .macro gdbasm_declare name
+	.section	".opd","aw"
+\name:
+	.quad .\name, .TOC.@tocbase, 0
+	.section	".text"
+	.type	\name, @function
+.\name:
+        .endm
+
+	comment "subroutine prologue"
+	.macro gdbasm_enter
+	stdu 1, -112(1)
+	mflr 0
+	std 0, 128(1)
+	.endm
+
+	comment "subroutine epilogue"
+	.macro gdbasm_leave
+	ld 0, 128(1)
+	mtlr 0
+	ld 1, 0(1)
+	blr
+	.endm
+
+	.macro gdbasm_call subr
+	bl \subr
+	nop
+	.endm
+
+	.macro gdbasm_several_nops
+	nop
+	nop
+	nop
+	nop
+	.endm
+
+	comment "exit (0)"
+	.macro gdbasm_exit0
+	comment "sys_exit"
+	li	0, 1
+	sc
+	.endm
+
+	comment "crt0 startup"
+	.macro gdbasm_startup
+	.p2align 2
+	.endm
+
+	comment "Declare a data variable"
+	.purgem gdbasm_datavar
+	.macro gdbasm_datavar name value
+	.section	".data"
+\name:
+	.long \value
+	.endm
-- 
1.7.1

  reply	other threads:[~2010-11-23 18:44 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-10  7:30 Edjunior Barbosa Machado
2010-11-10  7:45 ` Mark Kettenis
2010-11-10 13:01   ` Edjunior Barbosa Machado
2010-11-20  5:34 ` Joel Brobecker
2010-11-23 18:44   ` Edjunior Barbosa Machado [this message]
2010-11-23 20:01     ` Joel Brobecker
2010-11-24 18:20     ` Thiago Jung Bauermann
2010-11-23 18:46   ` [PATCH] testsuite: asm-source.exp: use 'sys_exit' on powerpc.inc Edjunior Barbosa Machado
2010-11-24 18:22     ` Thiago Jung Bauermann
2010-11-25 11:23     ` Mark Kettenis
2010-11-25 13:56       ` Edjunior Barbosa Machado

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1290537758-28943-1-git-send-email-emachado@linux.vnet.ibm.com \
    --to=emachado@linux.vnet.ibm.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).