From: Michael Snyder <msnyder@cygnus.com>
To: gdb-patches@sources.redhat.com
Cc: fnasser@redhat.com
Subject: [PATCH] Add "needs_status_wrapper" feature to gdb testsuite.
Date: Mon, 06 May 2002 17:48:00 -0000 [thread overview]
Message-ID: <200205070035.g470ZL426477@reddwarf.sfbay.redhat.com> (raw)
This is a feature that has been being used in the GCC testsuite,
but I was completely unaware of it before now.
This enables tests that look for an exit status to succeed even
on targets that don't implement the exit status. I think it's
pretty cool!
I've modified two tests from gdb/testsuite to take advantage of it.
I'm not sure which other tests may also need modification, but
now there are a couple of examples to look at.
Index: lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.15
diff -p -r1.15 gdb.exp
*** lib/gdb.exp 3 Apr 2002 16:17:11 -0000 1.15
--- lib/gdb.exp 7 May 2002 00:10:06 -0000
*************** proc gdb_preprocess {source dest args} {
*** 1092,1099 ****
--- 1092,1125 ----
return $result;
}
+ set gdb_wrapper_initialized 0
+
+ proc gdb_wrapper_init { args } {
+ global gdb_wrapper_initialized;
+ global gdb_wrapper_file;
+ global gdb_wrapper_flags;
+
+ if { $gdb_wrapper_initialized == 1 } { return; }
+
+ if {[target_info exists needs_status_wrapper] && \
+ [target_info needs_status_wrapper] != "0" && \
+ ![info exists gdb_wrapper_file]} {
+ set result [build_wrapper "testglue.o"];
+ if { $result != "" } {
+ set gdb_wrapper_file [lindex $result 0];
+ set gdb_wrapper_flags [lindex $result 1];
+ } else {
+ warning "Status wrapper failed to build."
+ }
+ }
+ set gdb_wrapper_initialized 1
+ }
+
proc gdb_compile {source dest type options} {
global GDB_TESTCASE_OPTIONS;
+ global gdb_wrapper_file;
+ global gdb_wrapper_flags;
+ global gdb_wrapper_initialized;
if [target_info exists gdb_stub] {
set options2 { "additional_flags=-Dusestubs" }
*************** proc gdb_compile {source dest type optio
*** 1110,1115 ****
--- 1136,1150 ----
}
verbose "options are $options"
verbose "source is $source $dest $type $options"
+
+ if { $gdb_wrapper_initialized == 0 } { gdb_wrapper_init }
+
+ if {[target_info exists needs_status_wrapper] && \
+ [target_info needs_status_wrapper] != "0" && \
+ [info exists gdb_wrapper_file]} {
+ lappend options "libs=${gdb_wrapper_file}"
+ lappend options "ldflags=${gdb_wrapper_flags}"
+ }
set result [target_compile $source $dest $type $options];
regsub "\[\r\n\]*$" "$result" "" result;
Index: gdb.base/a2-run.exp
2002-05-06 Michael Snyder <msnyder@redhat.com>
Enable the "needs_status_wrapper" testsuite feature.
* lib/gdb.exp (gdb_wrapper_init): New procedure.
(gdb_compile): Conditionally call gdb_wrapper_init.
* gdb.base/a2-run.exp: Recognize output from status wrapper.
* gdb.c++/method.exp: Recognize output from status wrapper.
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/a2-run.exp,v
retrieving revision 1.4
diff -p -r1.4 a2-run.exp
*** gdb.base/a2-run.exp 14 Feb 2002 06:25:18 -0000 1.4
--- gdb.base/a2-run.exp 7 May 2002 00:10:06 -0000
*************** if [istarget "*-*-vxworks*"] then {
*** 80,85 ****
--- 80,88 ----
-re ".*usage: factorial <number>.*Program exited with code 01.*$gdb_prompt $" {
pass "run \"$testfile\" with no args"
}
+ -re ".*usage: factorial <number>.* EXIT code 1.*Program exited normally.*$gdb_prompt $" {
+ pass "run \"$testfile\" with no args (exit wrapper)"
+ }
-re ".*$gdb_prompt $" {
fail "run \"$testfile\" with no args"
verbose "expect_out is $expect_out(buffer)" 2
Index: gdb.c++/method.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.c++/method.exp,v
retrieving revision 1.7
diff -p -r1.7 method.exp
*** gdb.c++/method.exp 8 Apr 2002 22:41:46 -0000 1.7
--- gdb.c++/method.exp 7 May 2002 00:10:06 -0000
*************** gdb_expect {
*** 180,185 ****
timeout { fail "(timeout) ptype A" }
}
! gdb_test "cont" \
! "Continuing.\r\n\r\nProgram exited normally." \
! "finish program"
--- 180,194 ----
timeout { fail "(timeout) ptype A" }
}
! send_gdb "cont\n"
! gdb_expect {
! -re "Continuing\r\n\r\nProgram exited normally.*$gdb_prompt $" {
! pass "finish program"
! }
! -re "Continuing.* EXIT code 0.*Program exited normally.*$gdb_prompt $" {
! pass "finish program (exit wrapper)"
! }
! -re ".*$gdb_prompt $" { fail "finish program" }
! default:{ fail "finish program (timeout)" }
! }
!
next reply other threads:[~2002-05-07 0:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-06 17:48 Michael Snyder [this message]
2002-05-10 12:51 ` Andrew Cagney
2002-05-23 10:07 ` Andrew Cagney
2002-05-23 10:21 ` Michael Snyder
2002-05-23 10:25 ` Andrew Cagney
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=200205070035.g470ZL426477@reddwarf.sfbay.redhat.com \
--to=msnyder@cygnus.com \
--cc=fnasser@redhat.com \
--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