From: Michael Elizabeth Chastain <mec@shout.net>
To: gdb-patches@sources.redhat.com
Subject: [PATCH] gdb.c++/method.exp
Date: Mon, 08 Apr 2002 00:21:00 -0000 [thread overview]
Message-ID: <200204080721.g387Lfe09282@duracef.shout.net> (raw)
I am committing the following patch to gdb.c++/method.exp.
This cleans up the script considerably. It also fixes several spurious
FAILs by accepting "A * const" and "const A * const".
After applying this patch, there is still 1 FAIL in two configurations:
"print this in A::bar" still FAILs on native i686-pc-linux-gnu with
gcc gcc-3_1-branch and gcc HEAD.
Michael C
2002-04-07 Michael Chastain <mec@shout.net>
* gdb.c++/method.exp: Use gdb_test instead of send_gdb/gdb_expect.
Accept "A * const" and "const A * const" as type of "this".
Fix spelling of getFunky throughout. Make messages uniform.
Index: method.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.c++/method.exp,v
retrieving revision 1.5
diff -c -3 -p -r1.5 method.exp
*** method.exp 20 Jan 2002 19:46:32 -0000 1.5
--- method.exp 8 Apr 2002 07:14:16 -0000
*************** if ![runto_main] then {
*** 70,226 ****
continue
}
! send_gdb "break A::foo\n"
! gdb_expect {
! -re "Breakpoint \[0-9\]* at $hex.*file .*method.cc, line 38*\\.\r\n$gdb_prompt $" {
! pass "set breakpoint on A::foo"
! }
! -re ".*$gdb_prompt $" { fail "set breakpoint on A::foo" }
! timeout { fail "(timeout) set breakpoint on A::foo" }
! }
! send_gdb "continue\n"
! gdb_expect {
! -re "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, A::foo(\\(int\\)|) \\(this=$hex, arg=13\\) at .*method\\.cc:38\r\n38\[\t \]*x \\+= arg;\r\n$gdb_prompt $" {
! pass "continued and got breakpoint in A::foo"
! }
! -re ".*$gdb_prompt $" { fail "continuing and breaking in A::foo" }
! timeout { fail "(timeout) continue" }
! }
# Check ability to access this-relative stuff.
! send_gdb "print x\n"
! gdb_expect {
! -re "\\$\[0-9\]* = 20\r\n$gdb_prompt $" {
! pass "access this-relative x (in foo)"
! }
! -re ".*$gdb_prompt $" { fail "print x (in foo)" }
! timeout { fail "(timeout) print x (in foo)" }
! }
# Check access to this pointer
! send_gdb "print this\n"
! gdb_expect {
! -re "\\$\[0-9\]* = \\(A \\*\\) $hex\r\n$gdb_prompt $" {
! pass "print this (in foo)"
! }
! -re ".*$gdb_prompt $" { fail "print this (in foo)" }
! timeout { fail "(timeout) print this (in foo)" }
! }
# Now do everything over again for A::bar, because sometimes processing one method
# (the first one) is fine, but the second one's debug info gets munged beyond recognition.
! send_gdb "break A::bar\n"
! gdb_expect {
! -re "Breakpoint \[0-9\]* at $hex.*file .*method.cc, line 44\\.\r\n$gdb_prompt $" {
! pass "set breakpoint on A::bar"
! }
! -re ".*$gdb_prompt $" { fail "set breakpoint on A::bar" }
! timeout { fail "(timeout) set breakpoint on A::bar" }
! }
! send_gdb "continue\n"
! gdb_expect {
! -re "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, A::bar(\\(int\\) const|) \\(this=$hex, arg=15\\) at .*method\\.cc:44\r\n44\[\t \]*return arg \\+ 2 \\* x;\r\n$gdb_prompt $" {
! pass "continued and got breakpoint in A::bar"
! }
! -re ".*$gdb_prompt $" { fail "continuing and breaking in A::bar" }
! timeout { fail "(timeout) continue" }
! }
# Check ability to access this-relative stuff.
! send_gdb "print x\n"
! gdb_expect {
! -re "\\$\[0-9\]* = 33\r\n$gdb_prompt $" {
! pass "access this-relative x (in bar)"
! }
! -re ".*$gdb_prompt $" { fail "print x (in bar)" }
! timeout { fail "(timeout) print x (in bar)" }
! }
# Check access to this pointer
! send_gdb "print this\n"
! gdb_expect {
! -re "\\$\[0-9\]* = \\(const class A \\*\\) $hex\r\n$gdb_prompt $" {
! global gcc_compiled
! if {$gcc_compiled} {
! xfail "print this (in bar)"
! } else {
! pass "print this (in bar)"
! }
! }
! -re "\\$\[0-9\]* = \\(A \\*\\) $hex\r\n$gdb_prompt $" {
! global gcc_compiled
! if {$gcc_compiled} {
! pass "print this (in bar)"
! } else {
! xfail "print this (in bar)"
! }
! }
! -re ".*$gdb_prompt $" { fail "print this (in bar)" }
! timeout { fail "(timeout) print this (in bar)" }
! }
# Check again with funk::getFunky (this is the original test case
# for CHFts23426); sometimes having a constructor with no arguments
# will nuke the debug info read in for other methods in the class.
! send_gdb "break funk::getFunky\n"
! gdb_expect {
! -re "Breakpoint \[0-9\]* at $hex.*file .*method.cc, line 20\\.\r\n$gdb_prompt $" {
! pass "set breakpoint on funk::getFunky"
! }
! -re ".*$gdb_prompt $" { fail "set breakpoint on funk::getfunky" }
! timeout { fail "(timeout) set breakpoint on funk::getfunky" }
! }
! send_gdb "continue\n"
! gdb_expect {
! -re "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, funk::getFunky(\\(int, int\\)|) \\(this=$hex, a=1, b=2\\) at .*method\\.cc:20\r\n20\[\t \]*res = a \\+ b - data_;\r\n$gdb_prompt $" {
! pass "continued and got breakpoint in funk::getfunky"
! }
! -re ".*$gdb_prompt $" { fail "continuing and breaking in funk::getfunky" }
! timeout { fail "(timeout) continue" }
! }
# Check ability to access this-relative stuff.
! send_gdb "print data_\n"
! gdb_expect {
! -re "\\$\[0-9\]* = 33\r\n$gdb_prompt $" {
! pass "access this-relative data_ in getFunky"
! }
! -re ".*$gdb_prompt $" { fail "print data_ in getFunky" }
! timeout { fail "(timeout) print data_ in getFunky" }
! }
# Check access to this pointer
! send_gdb "print this\n"
! gdb_expect {
! -re "\\$\[0-9\]* = \\(funk \\*\\) $hex\r\n$gdb_prompt $" {
! pass "print this in getFunky"
! }
! -re ".*$gdb_prompt $" { fail "print this in getfunky" }
! timeout { fail "(timeout) print this in getfunky" }
! }
# Check access to local variable
! send_gdb "print res\n"
! gdb_expect {
! -re "\\$\[0-9\]* = .\[0-9\]*\r\n$gdb_prompt $" {
! pass "print res in getFunky"
! }
! -re ".*$gdb_prompt $" { fail "print res in getfunky" }
! timeout { fail "(timeout) print res in getfunky" }
! }
!
# Check ptype of class -- should show const/volatile methods
--- 70,144 ----
continue
}
! gdb_test "break A::foo" \
! "Breakpoint \[0-9\]* at $hex.*file .*method.cc, line 38\\."
! gdb_test "continue" \
! "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, A::foo(\\(int\\)|) \\(this=$hex, arg=13\\) at .*method\\.cc:38\r\n38\[\t \]*x \\+= arg;" \
! "continue to A::foo"
# Check ability to access this-relative stuff.
! gdb_test "print x" \
! "\\$\[0-9\]* = 20" \
! "print x in A::foo"
# Check access to this pointer
! gdb_test "print this" \
! "\\$\[0-9\]* = \\((class |)A *\\* *(const|)\\) $hex" \
! "print this in A::foo"
# Now do everything over again for A::bar, because sometimes processing one method
# (the first one) is fine, but the second one's debug info gets munged beyond recognition.
! gdb_test "break A::bar" \
! "Breakpoint \[0-9\]* at $hex.*file .*method.cc, line 44\\."
! gdb_test "continue" \
! "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, A::bar(\\(int\\) const|) \\(this=$hex, arg=15\\) at .*method\\.cc:44\r\n44\[\t \]*return arg \\+ 2 \\* x;" \
! "continue to A::bar"
# Check ability to access this-relative stuff.
! gdb_test "print x" \
! "\\$\[0-9\]* = 33" \
! "print x in A::bar"
# Check access to this pointer
! gdb_test "print this" \
! "\\$\[0-9\]* = \\((const |)(class |)A *\\* *(const|)\\) $hex" \
! "print this in A::bar"
# Check again with funk::getFunky (this is the original test case
# for CHFts23426); sometimes having a constructor with no arguments
# will nuke the debug info read in for other methods in the class.
! gdb_test "break 21" \
! "Breakpoint \[0-9\]* at $hex.*file .*method.cc, line 21\\."
! gdb_test "continue" \
! "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, funk::getFunky(\\(int, int\\)|) \\(this=$hex, a=1, b=2\\) at .*method\\.cc:21\r\n21\[\t \]*data_ = res;" \
! "continue to 21"
# Check ability to access this-relative stuff.
! gdb_test "print data_" \
! "\\$\[0-9\]* = 33" \
! "print data_ in funk::getFunky"
# Check access to this pointer
! gdb_test "print this" \
! "\\$\[0-9\]* = \\((class |)funk *\\* *(const|)\\) $hex" \
! "print this in funk::getFunky"
# Check access to local variable
! gdb_test "print res" \
! "\\$\[0-9\]* = -30" \
! "print res in funk::getFunky"
# Check ptype of class -- should show const/volatile methods
*************** gdb_expect {
*** 242,253 ****
timeout { fail "(timeout) ptype A" }
}
! send_gdb "cont\n"
! gdb_expect {
! -re "Continuing.\r\n\r\nProgram exited normally.\r\n$gdb_prompt $" {
! pass "finish program"
! }
! -re "$gdb_prompt $" { fail "finish program" }
! timeout { fail "(timeout) finish program" }
! }
!
--- 160,165 ----
timeout { fail "(timeout) ptype A" }
}
! gdb_test "cont" \
! "Continuing.\r\n\r\nProgram exited normally." \
! "finish program"
next reply other threads:[~2002-04-08 7:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-08 0:21 Michael Elizabeth Chastain [this message]
2002-04-08 7:37 ` Daniel Jacobowitz
2002-04-08 0:26 Michael Elizabeth Chastain
2002-04-08 8:12 Michael Elizabeth Chastain
2002-04-08 8:19 ` Daniel Jacobowitz
2002-04-08 10:17 Michael Elizabeth Chastain
2002-04-08 11:43 ` Daniel Jacobowitz
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=200204080721.g387Lfe09282@duracef.shout.net \
--to=mec@shout.net \
--cc=gdb-patches@sources.redhat.com \
/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