This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
RFA: test macro expansion in presence of #line directives
- From: Jim Blandy <jimb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: 06 Nov 2002 12:20:54 -0500
- Subject: RFA: test macro expansion in presence of #line directives
gdb/testsuite/ChangeLog:
2002-11-01 Jim Blandy <jimb@redhat.com>
* gdb.base/step-line.exp: Check that GDB can handle filenames that
appear in the line number info, but not in the preprocessor macro
info.
Index: gdb/testsuite/gdb.base/step-line.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/step-line.exp,v
retrieving revision 1.1
diff -c -r1.1 step-line.exp
*** gdb/testsuite/gdb.base/step-line.exp 27 Mar 2001 01:32:45 -0000 1.1
--- gdb/testsuite/gdb.base/step-line.exp 1 Nov 2002 20:30:25 -0000
***************
*** 53,58 ****
--- 53,94 ----
gdb_test "next" \
".*i = f2 \\(i\\);.*" \
"next over dummy 1"
+
+ # As of Oct 2002, GCC does record the effect of #line directives in
+ # the source line info, but not in macro info. This means that GDB's
+ # symtabs (built from the former, among other things) may mention
+ # filenames that GDB's macro tables (built from the latter) don't have
+ # any record of. Make sure GDB can handle this by trying to evaluate
+ # an expression, which will do a macro expansion.
+ send_gdb "print i\n"
+ gdb_expect {
+ -re ".* = 4.*$gdb_prompt $" {
+ pass "macro-expand expression after #line directive"
+ }
+ -re ".*A problem internal to GDB has been detected.*Quit this debugging session\\? \\(y or n\\) $" {
+ send_gdb "n\n"
+ gdb_expect {
+ -re "Create a core file of GDB\\? \\(y or n\\) $" {
+ }
+ timeout {
+ fail "resync after #line failure (timeout)"
+ }
+ }
+ send_gdb "n\n"
+ gdb_expect {
+ -re "$gdb_prompt $" {
+ }
+ timeout {
+ fail "resync after #line failure (timeout)"
+ }
+ }
+ fail "macro-expand expression after #line directive"
+ }
+ timeout {
+ fail "macro-expand expression after #line directive (timeout)"
+ }
+ }
+
gdb_test "next" \
".*dummy \\(2, i\\);.*" \
"next to dummy 2"