[PATCH] remote: Return NULL extra_info/name if they are empty
Simon Marchi
simon.marchi@polymtl.ca
Tue Dec 12 02:06:00 GMT 2017
On 2017-12-11 19:24, Pedro Alves wrote:
> On 12/11/2017 06:21 PM, Simon Marchi wrote:
>> Commit
>>
>> remote: C++ify thread_item and threads_listing_context
>> 21fe1c752e254167d953fa8c846280f63a3a5290
>>
>> broke the test gdb.threads/names.exp. The problem is that since we
>> now
>> use an std::string to hold the extra_info, an empty string is returned
>> by target_extra_thread_info to print_thread_info_1 when the remote
>> stub
>> didn't send any extra info, instead of NULL before. Because of that,
>> print_thread_info_1 prints the extra info between parentheses, which
>> results in some spurious empty parentheses.
>>
>> Expected: * 1 Thread 22752.22752 "main" all_threads_ready () at
>> ...
>> Actual : * 1 Thread 22752.22752 "main" () all_threads_ready () a
>> ...
>>
>> Since the bug was introduced by a behavior change in the remote
>> target,
>> I chose to fix it on the remote target side by making it return NULL
>> when the extra string is empty. This will avoid possibly changing the
>> behavior of the common code and affecting other targets.
>>
>> The name field has the same problem. If a remote stub returns no
>> thread
>> names, remote_thread_name will return an empty string instead of NULL,
>> so print_thread_info_1 will show empty quotes ("") instead of nothing.
>>
>> gdb/ChangeLog:
>>
>> PR gdb/22556
>> * remote.c (remote_thread_name): Return NULL if name is empty.
>> (remote_threads_extra_info): Return NULL if extra info is empty.
>
> Looks good, thanks.
>
> Pedro Alves
Thanks, pushed.
Simon
More information about the Gdb-patches
mailing list