Re: [PATCH] gdb: use gdb_test_multiple in gdb_breakpoint

Simon Marchi via Gdb-patches
2023-01-10T20:42:52Z

On 1/10/23 14:56, Pedro Alves wrote:
> On 2023-01-10 3:50 p.m., Simon Marchi wrote:
>>
>>
>> On 1/10/23 10:33, Pedro Alves wrote:
>>> On 2023-01-05 4:28 p.m., Simon Marchi via Gdb-patches wrote:
>>>
>>>> ---
>>>> gdb/testsuite/lib/gdb.exp | 6 ++++++
>>>> 1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
>>>> index e17eace4cb13..af538e5c8fbd 100644
>>>> --- a/gdb/testsuite/lib/gdb.exp
>>>> +++ b/gdb/testsuite/lib/gdb.exp
>>>> @@ -657,6 +657,12 @@ proc gdb_breakpoint { linespec args } {
>>>> send_gdb "$pending_response\n"
>>>> exp_continue
>>>> }
>>>> + -re "$gdb_prompt $" {
>>>> + if { $print_fail } {
>>>> + fail $test_name
>>>> + }
>>>> + return 0
>>>> + }
>>>> }
>>>
>>> The other removed "-re" cases also considered $print_fail, so if their replacement
>>> inside gdb_test_multiple is hit, they'll produce a FAIL. Was that intended?
>>> Should we instead add a "-nofail" option to gdb_test / gdb_test_multiple ?
>>
>> Good point, this is a change in behavior. Does this change cause you an
>> unexpected FAIL in practice?
>
> No, I was just trying to catch up on patches a bit, and read your patch and noticed
> that issue. I was going to reply to the patch directly, but then saw the
> follow up discussion and replied there (or rather, here).
>
>> I was actually planning on removing that
>> message / no-message option to gdb_breakpoint [1] to simplify it. I
>> don't see any use for the current behavior, I'd rather have it log a
>> test result all the time.
>
> I've always found the message/no-message API confusing. It exists on
> runto too, and maybe other procs.

I was planning to remove it from runto too.

>
> I think the intention of not issuing PASS by default, was that you can
> use gdb_breakpoint to implement other procedures inside lib/gdb.exp.
> If gdb_breakpoint starts issuing a PASS, then an implementation detail
> of such procedures starts being visible, by ending up with two PASSes for
> each call of the procedure that happens to use gdb_breakpoint, one for
> gdb_breakpoint, and one for the caller procedure proper.

And do you think this is important? Personally, I don't think the
multiple PASSes is a problem.

Simon