Relax gdb.compile/compile.exp to match the address printed for frame
authorYao Qi <yao.qi@linaro.org>
Wed, 17 Jan 2018 11:19:03 +0000 (11:19 +0000)
committerYao Qi <yao.qi@linaro.org>
Wed, 17 Jan 2018 11:32:36 +0000 (11:32 +0000)
One test in gdb.compile/compile.exp passes on one fedora builder,

 bt
 #0  0x00007ffff7ff43f6 in _gdb_expr (__regs=0x7ffff7ff2000) at gdb
 command line:1^M
 #1  <function called from gdb>^M
 #2  main () at /home/gdb-buildbot/fedora-x86-64-1/fedora-x86-64/build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.compile/compile.c:106^M
 (gdb) PASS: gdb.compile/compile.exp: bt

but fails on my machine with gcc trunk,

 bt^M
 #0  _gdb_expr (__regs=0x7ffff7ff3000) at gdb command line:1^M
 #1  <function called from gdb>^M
 #2  main () at gdb/testsuite/gdb.compile/compile.c:106^M
 (gdb) FAIL: gdb.compile/compile.exp: bt

The test should be tweaked to match both cases (pc in the start of line
vs pc in the middle of line).  Note that I am not clear that why libcc1
emits debug info this way so that the address is in the middle of line.

gdb/testsuite:

2018-01-17  Yao Qi  <yao.qi@linaro.org>

* gdb.compile/compile.exp: Match the address printed for
frame in the output of command "bt".

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.compile/compile.exp

index 452f6c9c1c57e03244250db5423a5285614f294e..cd99b84eb2e71b081fa8e1832347e28e1bc6f81d 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-17  Yao Qi  <yao.qi@linaro.org>
+
+       * gdb.compile/compile.exp: Match the address printed for
+       frame in the output of command "bt".
+
 2018-01-15  Tom Tromey  <tom@tromey.com>
 
        * gdb.guile/scm-ports.exp (test_mem_port_rw): Use get_valueof to
index 15f7cf1916135304ea0f756c31e0191eda4d1659..4303c02f26f8185c54dc88b74a5e89fd580e3b36 100644 (file)
@@ -139,8 +139,11 @@ gdb_test "compile code func_doesnotexist ();" "warning: Could not find symbol \"
 gdb_test "compile code *(volatile int *) 0 = 0;" \
     "The program being debugged was signaled while in a function called from GDB\\.\r\nGDB remains in the frame where the signal was received\\.\r\n.*" \
     "compile code segfault first"
-gdb_test "bt" \
-    "\r\n#0  \[^\r\n\]* in _gdb_expr \[^\r\n\]*\r\n#1  <function called from gdb>\r\n.*"
+gdb_test "bt" [multi_line \
+                  "#0  ($hex in )?_gdb_expr .*" \
+                  "#1  <function called from gdb>" \
+                  "#2  .*" \
+                 ]
 
 set test "p/x \$pc"
 set infcall_pc 0