This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/3] Testsuite: Rename "end()" to avoid libinproctrace C++ symbol clash


On 2018-03-16 03:47 PM, Andreas Arnez wrote:
> On Thu, Mar 15 2018, Simon Marchi wrote:
> 
>> On 2018-03-14 12:11 PM, Andreas Arnez wrote:
>>> Some of GDB's trace test cases define a function end() and place a
>>> breakpoint there with "break end".  However, when libinproctrace is linked
>>> to the binary, there are multiple methods named "end", such as
>>> std::string::end() from the C++ library or format_pieces::end() from
>>> common/format.h.  GDB then creates multiple breakpoints instead of just a
>>> single one, and some FAILs result, such as these:
>>>
>>>   FAIL: gdb.trace/trace-mt.exp: ftrace on: break end
>>>   FAIL: gdb.trace/trace-mt.exp: ftrace off: break end
>>>
>>> This is fixed by renaming end() to my_end().  For consistency, where end()
>>> was paired with a previous begin(), the latter is renamed to my_begin() as
>>> well.
>>>
>>> gdb/testsuite/ChangeLog:
>>>
>>> 	* gdb.trace/trace-break.c (end): Rename to...
>>> 	(my_end): ...this.
>>> 	(main): Adjust call.
>>> 	* gdb.trace/trace-mt.c (end): Rename to...
>>> 	(my_end): ...this.
>>> 	(main): Adjust call.
>>> 	* gdb.trace/unavailable.cc (begin): Rename to...
>>> 	(my_begin): ...this.
>>> 	(end): Rename to...
>>> 	(my_end): ...this.
>>> 	(main): Adjust calls.
>>> 	* gdb.trace/trace-break.exp: Reflect function name change.
>>> 	* gdb.trace/trace-mt.exp: Likewise.
>>> 	* gdb.trace/unavailable.exp: Likewise.
>>
>> Hi Andreas,
>>
>> Another way would have been to pass "-qualified" to the break command,
>> or use gdb_breakpoint and pass the "qualified" arg.  There are also
>> other instances of the same "problem" in tests that don't check the
>> output of the break command at all...
>>
>>   gdb_test "break end" ".*" ""
>>
>> In any case, this patch LGTM.
> 
> Hm, actually the use of "-qualified" is a good point.  I'd rather go
> with that.  How about the patch below?
> 
> --
> Andreas
> 
> -- >8 --
> Subject: [PATCH] Testsuite: Fix ambiguous "break" due to libinproctrace
> 
> Some of GDB's trace test cases define a function end() and place a
> breakpoint there with "break end".  However, when libinproctrace is linked
> to the binary, there are multiple methods named "end", such as
> std::string::end() from the C++ library or format_pieces::end() from
> common/format.h.  GDB then creates multiple breakpoints instead of just a
> single one, and some FAILs result, such as these:
> 
>   FAIL: gdb.trace/trace-mt.exp: ftrace on: break end
>   FAIL: gdb.trace/trace-mt.exp: ftrace off: break end
> 
> Fix this by adding the "-qualified" option to the break commands.  For
> consistency, change all occurrences of "break end" (and similar) in all
> trace test cases, even if the current behavior does not cause problems.
> Also, consequently use the gdb_breakpoint convenience proc.
> 
> gdb/testsuite/ChangeLog:
> 
> 	* gdb.trace/actions-changed.exp: Call gdb_breakpoint with the
> 	"qualified" option when setting breakpoints.
> 	* gdb.trace/backtrace.exp: Likewise.
> 	* gdb.trace/circ.exp: Likewise.
> 	* gdb.trace/collection.exp: Likewise.
> 	* gdb.trace/disconnected-tracing.exp: Likewise.
> 	* gdb.trace/ftrace-lock.exp: Likewise.
> 	* gdb.trace/ftrace.exp: Likewise.
> 	* gdb.trace/infotrace.exp: Likewise.
> 	* gdb.trace/packetlen.exp: Likewise.
> 	* gdb.trace/passc-dyn.exp: Likewise.
> 	* gdb.trace/qtro.exp: Likewise.
> 	* gdb.trace/read-memory.exp: Likewise.
> 	* gdb.trace/report.exp: Likewise.
> 	* gdb.trace/signal.exp: Likewise.
> 	* gdb.trace/status-stop.exp: Likewise.
> 	* gdb.trace/strace.exp: Likewise.
> 	* gdb.trace/tfind.exp: Likewise.
> 	* gdb.trace/trace-break.exp: Likewise.
> 	* gdb.trace/trace-condition.exp: Likewise.
> 	* gdb.trace/trace-mt.exp: Likewise.
> 	* gdb.trace/tstatus.exp: Likewise.
> 	* gdb.trace/tsv.exp: Likewise.
> 	* gdb.trace/unavailable-dwarf-piece.exp: Likewise.
> 	* gdb.trace/unavailable.exp: Likewise.
> 	* gdb.trace/while-dyn.exp: Likewise.

Hi Andreas,

Since the gdb_breakpoint proc accepts the multi-location printout, we may
not even need the "qualified", just using gdb_breakpoint would be sufficient.
But I think it's not bad either to use "qualified", as it makes the test more
robust.  It makes sure the test doesn't stop on another random end function/method.

So this LGTM, thanks.

Simon


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]