Match the selftest output when captured_main is inlined

Message ID 1467733372-28632-1-git-send-email-yao.qi@linaro.org
State New, archived
Headers

Commit Message

Yao Qi July 5, 2016, 3:42 p.m. UTC
  In gdb.gdb/observer.exp, I see the following fail,

(gdb) break captured_main^M
Breakpoint 1 at 0x57e409: file ../../binutils-gdb/gdb/main.c, line 492.^M
(gdb) PASS: gdb.gdb/observer.exp: breakpoint in captured_main
run -nw -nx -data-directory /home/yao.qi/SourceCode/gnu/build/gdb/testsuite/../data-directory^M
Starting program: /home/yao.qi/SourceCode/gnu/build/gdb/testsuite/outputs/gdb.gdb/observer/xgdb -nw -nx -data-directory /home/yao.qi/SourceCode/gnu/build/gdb/testsuite/../data-directory^M
[Thread debugging using libthread_db enabled]^M
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".^M
^M
Breakpoint 1, gdb_main (args=args@entry=0x7fffffffdca0) at ../../binutils-gdb/gdb/main.c:1157^M
1157          captured_main (args);^M
(gdb) FAIL: gdb.gdb/observer.exp: run until breakpoint at captured_main

looks the test sets breakpoint on captured_main, and expects program
stops at captured_main.  However, program stops at the place where
captured_main is called, because captured_main is inlined,

 <1><8519e3>: Abbrev Number: 58 (DW_TAG_subprogram)
    <8519e4>   DW_AT_name        : (indirect string, offset: 0x880d3): captured_main
    <8519e8>   DW_AT_decl_file   : 1
    <8519e9>   DW_AT_decl_line   : 444
    <8519eb>   DW_AT_type        : <0x846e48>
    <8519ef>   DW_AT_inline      : 1    (inlined)
    <8519f0>   DW_AT_sibling     : <0x851c01>

The test passes if I build GDB with '-O0 -g3', because captured_main
isn't inlined.  This patch is to match the output when captured_main
is inlined.

gdb/testsuite:

2016-07-05  Yao Qi  <yao.qi@linaro.org>

	* lib/selftest-support.exp (selftest_setup): Match the output
	when captured_main is inlined.
---
 gdb/testsuite/lib/selftest-support.exp | 5 +++++
 1 file changed, 5 insertions(+)
  

Comments

Yao Qi July 12, 2016, 2:40 p.m. UTC | #1
Yao Qi <qiyaoltc@gmail.com> writes:

> gdb/testsuite:
>
> 2016-07-05  Yao Qi  <yao.qi@linaro.org>
>
> 	* lib/selftest-support.exp (selftest_setup): Match the output
> 	when captured_main is inlined.

Patch is pushed in.
  

Patch

diff --git a/gdb/testsuite/lib/selftest-support.exp b/gdb/testsuite/lib/selftest-support.exp
index df99f58..f171cc8 100644
--- a/gdb/testsuite/lib/selftest-support.exp
+++ b/gdb/testsuite/lib/selftest-support.exp
@@ -94,6 +94,11 @@  proc selftest_setup { executable function } {
         -re "Starting program.*Breakpoint \[0-9\]+,.*$function .data.*$gdb_prompt $" {
             xfail "$description (line numbers scrambled?)"
         }
+	-re "Starting program.*Breakpoint \[0-9\]+,.* at .*main.c:.*$function.*$gdb_prompt $" {
+	    # $function may be inlined, so the program stops at the line
+	    # calling $function.
+	    pass "$description"
+	}
         -re "vfork: No more processes.*$gdb_prompt $" {
             fail "$description (out of virtual memory)"
             set timeout $oldtimeout