[gdb/testsuite] Be quiet about untested dtrace-prob.exp

Message ID 20200218120235.GA9051@delia
State New, archived
Headers

Commit Message

Tom de Vries Feb. 18, 2020, 12:02 p.m. UTC
  Hi,

When running gdb.base/dtrace-probe.exp, I get this on stdout/stderr:
...
Running src/gdb/testsuite/gdb.base/dtrace-probe.exp ...
gdb compile failed, ld: error in \
  build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe.o\
  (.eh_frame); no .eh_frame_hdr table will be created
ld: crt1.o: in function `_start':
start.S:110: undefined reference to `main'
ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
  (.SUNW_dof+0x88): undefined reference to `main'
ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
  (.SUNW_dof+0xb8): undefined reference to `main'
collect2: error: ld returned 1 exit status

                === gdb Summary ===

nr of untested testcases         1
...

There is no reason to be this verbose about the failure to compile.

Fix this by using quiet as additional option to gdb_compile in
dtrace_build_usdt_test_program.  Note that the error message still occurs in
gdb.log.

Tested on x86_64-linux.

OK for trunk?

Thanks,
- Tom

[gdb/testsuite] Be quiet about untested dtrace-prob.exp

gdb/testsuite/ChangeLog:

2020-02-18  Tom de Vries  <tdevries@suse.de>

	* lib/dtrace.exp (dtrace_build_usdt_test_program): Use quiet as
	gdb_compile option.

---
 gdb/testsuite/lib/dtrace.exp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Luis Machado Feb. 18, 2020, 12:35 p.m. UTC | #1
On 2/18/20 9:02 AM, Tom de Vries wrote:
> Hi,
> 
> When running gdb.base/dtrace-probe.exp, I get this on stdout/stderr:
> ...
> Running src/gdb/testsuite/gdb.base/dtrace-probe.exp ...
> gdb compile failed, ld: error in \
>    build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe.o\
>    (.eh_frame); no .eh_frame_hdr table will be created
> ld: crt1.o: in function `_start':
> start.S:110: undefined reference to `main'
> ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>    (.SUNW_dof+0x88): undefined reference to `main'
> ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>    (.SUNW_dof+0xb8): undefined reference to `main'
> collect2: error: ld returned 1 exit status
> 
>                  === gdb Summary ===
> 
> nr of untested testcases         1

Odd. I'm running this natively on aarch64 and i don't see the same. I 
only get output in gdb.log.

> ...
> 
> There is no reason to be this verbose about the failure to compile.
> 
> Fix this by using quiet as additional option to gdb_compile in
> dtrace_build_usdt_test_program.  Note that the error message still occurs in
> gdb.log.
> 
> Tested on x86_64-linux.
> 
> OK for trunk?
> 
> Thanks,
> - Tom
> 
> [gdb/testsuite] Be quiet about untested dtrace-prob.exp
> 
> gdb/testsuite/ChangeLog:
> 
> 2020-02-18  Tom de Vries  <tdevries@suse.de>
> 
> 	* lib/dtrace.exp (dtrace_build_usdt_test_program): Use quiet as
> 	gdb_compile option.
> 
> ---
>   gdb/testsuite/lib/dtrace.exp | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/gdb/testsuite/lib/dtrace.exp b/gdb/testsuite/lib/dtrace.exp
> index 9aed481f32..8f861c9de4 100644
> --- a/gdb/testsuite/lib/dtrace.exp
> +++ b/gdb/testsuite/lib/dtrace.exp
> @@ -52,7 +52,8 @@ proc dtrace_build_usdt_test_program {} {
>       }
>   
>       # 2. Compile testprogram.c.
> -    set options [list debug additional_flags=-I[file dirname $out_header_file]]
> +    set options [list debug quiet \
> +		     additional_flags=-I[file dirname $out_header_file]]
>       if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}.o" object ${options}] != ""} {
>           return -1
>       }
> @@ -65,7 +66,8 @@ proc dtrace_build_usdt_test_program {} {
>       }
>   
>       # 4. Link everything together to get the test program.
> -    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile} executable {debug}] != ""} {
> +    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile} executable \
> +	     {debug quiet}] != ""} {
>           return -1
>       }
>   }
>
Then again, it wouldn't hurt to prevent noisy output. So, this LGTM.
  
Tom de Vries Feb. 18, 2020, 1:13 p.m. UTC | #2
On 18-02-2020 13:35, Luis Machado wrote:
> On 2/18/20 9:02 AM, Tom de Vries wrote:
>> Hi,
>>
>> When running gdb.base/dtrace-probe.exp, I get this on stdout/stderr:
>> ...
>> Running src/gdb/testsuite/gdb.base/dtrace-probe.exp ...
>> gdb compile failed, ld: error in \
>>    build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe.o\
>>    (.eh_frame); no .eh_frame_hdr table will be created
>> ld: crt1.o: in function `_start':
>> start.S:110: undefined reference to `main'
>> ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>>    (.SUNW_dof+0x88): undefined reference to `main'
>> ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>>    (.SUNW_dof+0xb8): undefined reference to `main'
>> collect2: error: ld returned 1 exit status
>>
>>                  === gdb Summary ===
>>
>> nr of untested testcases         1
> 
> Odd. I'm running this natively on aarch64 and i don't see the same. I
> only get output in gdb.log.
> 

I've looked a bit at the semantics of output_clone (in
/usr/share/dejagnu/framework.exp), and the only way I could think of how
that would happen for you is if the output somehow starts with a keyword
like PASS/FAIL/WARNING/ERROR/etc. [ If you want to chase that difference
it could be useful to post a gdb.log/gdb.sum/stdout_stderr.log. ]

Anyway, the behaviour I'm seeing looks correct to me.

>> ...
>>
>> There is no reason to be this verbose about the failure to compile.
>>
>> Fix this by using quiet as additional option to gdb_compile in
>> dtrace_build_usdt_test_program.  Note that the error message still
>> occurs in
>> gdb.log.
>>
>> Tested on x86_64-linux.
>>
>> OK for trunk?
>>
>> Thanks,
>> - Tom
>>
>> [gdb/testsuite] Be quiet about untested dtrace-prob.exp
>>
>> gdb/testsuite/ChangeLog:
>>
>> 2020-02-18  Tom de Vries  <tdevries@suse.de>
>>
>>     * lib/dtrace.exp (dtrace_build_usdt_test_program): Use quiet as
>>     gdb_compile option.
>>
>> ---
>>   gdb/testsuite/lib/dtrace.exp | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/gdb/testsuite/lib/dtrace.exp b/gdb/testsuite/lib/dtrace.exp
>> index 9aed481f32..8f861c9de4 100644
>> --- a/gdb/testsuite/lib/dtrace.exp
>> +++ b/gdb/testsuite/lib/dtrace.exp
>> @@ -52,7 +52,8 @@ proc dtrace_build_usdt_test_program {} {
>>       }
>>         # 2. Compile testprogram.c.
>> -    set options [list debug additional_flags=-I[file dirname
>> $out_header_file]]
>> +    set options [list debug quiet \
>> +             additional_flags=-I[file dirname $out_header_file]]
>>       if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}.o"
>> object ${options}] != ""} {
>>           return -1
>>       }
>> @@ -65,7 +66,8 @@ proc dtrace_build_usdt_test_program {} {
>>       }
>>         # 4. Link everything together to get the test program.
>> -    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile}
>> executable {debug}] != ""} {
>> +    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile}
>> executable \
>> +         {debug quiet}] != ""} {
>>           return -1
>>       }
>>   }
>>
> Then again, it wouldn't hurt to prevent noisy output. So, this LGTM.

Ack, thanks for the review.

- Tom
  
Luis Machado Feb. 18, 2020, 1:20 p.m. UTC | #3
On 2/18/20 10:13 AM, Tom de Vries wrote:
> On 18-02-2020 13:35, Luis Machado wrote:
>> On 2/18/20 9:02 AM, Tom de Vries wrote:
>>> Hi,
>>>
>>> When running gdb.base/dtrace-probe.exp, I get this on stdout/stderr:
>>> ...
>>> Running src/gdb/testsuite/gdb.base/dtrace-probe.exp ...
>>> gdb compile failed, ld: error in \
>>>     build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe.o\
>>>     (.eh_frame); no .eh_frame_hdr table will be created
>>> ld: crt1.o: in function `_start':
>>> start.S:110: undefined reference to `main'
>>> ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>>>     (.SUNW_dof+0x88): undefined reference to `main'
>>> ld: build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>>>     (.SUNW_dof+0xb8): undefined reference to `main'
>>> collect2: error: ld returned 1 exit status
>>>
>>>                   === gdb Summary ===
>>>
>>> nr of untested testcases         1
>>
>> Odd. I'm running this natively on aarch64 and i don't see the same. I
>> only get output in gdb.log.
>>
> 
> I've looked a bit at the semantics of output_clone (in
> /usr/share/dejagnu/framework.exp), and the only way I could think of how
> that would happen for you is if the output somehow starts with a keyword
> like PASS/FAIL/WARNING/ERROR/etc. [ If you want to chase that difference
> it could be useful to post a gdb.log/gdb.sum/stdout_stderr.log. ]

I think the setup i have differs from yours. I don't have DTtrace, so 
the testsuite ends up using pdtrace. That somehow makes things go a 
different way. The build ends up failing, but silently.

as: unrecognized option '-64
readelf: Error: 
'binutils-gdb-master/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o': 
No such file
error: could not extract the start of shdr from 
binutils-gdb-master/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o
UNTESTED: gdb.base/dtrace-probe.exp: failed to compile
  
Tom de Vries Feb. 18, 2020, 1:36 p.m. UTC | #4
On 18-02-2020 14:20, Luis Machado wrote:
> On 2/18/20 10:13 AM, Tom de Vries wrote:
>> On 18-02-2020 13:35, Luis Machado wrote:
>>> On 2/18/20 9:02 AM, Tom de Vries wrote:
>>>> Hi,
>>>>
>>>> When running gdb.base/dtrace-probe.exp, I get this on stdout/stderr:
>>>> ...
>>>> Running src/gdb/testsuite/gdb.base/dtrace-probe.exp ...
>>>> gdb compile failed, ld: error in \
>>>>     build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe.o\
>>>>     (.eh_frame); no .eh_frame_hdr table will be created
>>>> ld: crt1.o: in function `_start':
>>>> start.S:110: undefined reference to `main'
>>>> ld:
>>>> build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>>>>     (.SUNW_dof+0x88): undefined reference to `main'
>>>> ld:
>>>> build/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o:\
>>>>     (.SUNW_dof+0xb8): undefined reference to `main'
>>>> collect2: error: ld returned 1 exit status
>>>>
>>>>                   === gdb Summary ===
>>>>
>>>> nr of untested testcases         1
>>>
>>> Odd. I'm running this natively on aarch64 and i don't see the same. I
>>> only get output in gdb.log.
>>>
>>
>> I've looked a bit at the semantics of output_clone (in
>> /usr/share/dejagnu/framework.exp), and the only way I could think of how
>> that would happen for you is if the output somehow starts with a keyword
>> like PASS/FAIL/WARNING/ERROR/etc. [ If you want to chase that difference
>> it could be useful to post a gdb.log/gdb.sum/stdout_stderr.log. ]
> 
> I think the setup i have differs from yours. I don't have DTtrace, so
> the testsuite ends up using pdtrace.

Same here.

> That somehow makes things go a
> different way. The build ends up failing, but silently.
> 
> as: unrecognized option '-64
> readelf: Error:
> 'binutils-gdb-master/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o':
> No such file
> error: could not extract the start of shdr from
> binutils-gdb-master/gdb/testsuite/outputs/gdb.base/dtrace-probe/dtrace-probe-p.o
> 
> UNTESTED: gdb.base/dtrace-probe.exp: failed to compile

OK, that explains it. In both cases, dtrace_build_usdt_test_program
fails, in my case in a gdb_compile call, in your case in one of the
$dtrace calls (my guess is the second one).

Thanks,
- Tom
  
Tom Tromey Feb. 18, 2020, 9:25 p.m. UTC | #5
>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:

Tom> [gdb/testsuite] Be quiet about untested dtrace-prob.exp

Tom> gdb/testsuite/ChangeLog:

Tom> 2020-02-18  Tom de Vries  <tdevries@suse.de>

Tom> 	* lib/dtrace.exp (dtrace_build_usdt_test_program): Use quiet as
Tom> 	gdb_compile option.

This seems reasonable to me.

Tom
  

Patch

diff --git a/gdb/testsuite/lib/dtrace.exp b/gdb/testsuite/lib/dtrace.exp
index 9aed481f32..8f861c9de4 100644
--- a/gdb/testsuite/lib/dtrace.exp
+++ b/gdb/testsuite/lib/dtrace.exp
@@ -52,7 +52,8 @@  proc dtrace_build_usdt_test_program {} {
     }
 
     # 2. Compile testprogram.c.
-    set options [list debug additional_flags=-I[file dirname $out_header_file]]
+    set options [list debug quiet \
+		     additional_flags=-I[file dirname $out_header_file]]
     if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}.o" object ${options}] != ""} {
         return -1
     }
@@ -65,7 +66,8 @@  proc dtrace_build_usdt_test_program {} {
     }
 
     # 4. Link everything together to get the test program.
-    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile} executable {debug}] != ""} {
+    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile} executable \
+	     {debug quiet}] != ""} {
         return -1
     }
 }