This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] remote: Return NULL extra_info/name if they are empty
- From: Pedro Alves <palves at redhat dot com>
- To: Simon Marchi <simon dot marchi at ericsson dot com>, gdb-patches at sourceware dot org
- Date: Tue, 12 Dec 2017 00:24:14 +0000
- Subject: Re: [PATCH] remote: Return NULL extra_info/name if they are empty
- Authentication-results: sourceware.org; auth=none
- References: <1513016513-26428-1-git-send-email-simon.marchi@ericsson.com>
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