From: Pedro Alves <palves@redhat.com>
To: Stan Cox <scox@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [RFC][PATCH v3] Consolidate gdbserver global variables
Date: Fri, 25 May 2018 15:01:00 -0000 [thread overview]
Message-ID: <5a41d41f-a0ce-2941-c759-fb1854a1792c@redhat.com> (raw)
In-Reply-To: <9e844707-a2f8-c969-4d09-7ee2fa3bd1ed@redhat.com>
On 05/08/2018 09:58 PM, Stan Cox wrote:
> (Addressed formatting and ChangeLog issues)
Thanks. This is looking great now. Some comments below,
but no need for another round of review.
>
>> As mentioned, I'm skeptical of all client_state references
>> in the backends.
>>
>> How will this work with multiple clients?  What if one client
>> wants exec events, and the other one doesn't? This seems to
>> suggest that the backends need to enable exec events if _any_
>> client wants them (or unconditionally), and then filter out exec
>> events at a higher level, before reporting the event to
>> each client?
>
> Perhaps filtering that is roughly analogous to the way
> gdb_catch_this_syscall_p filters for particular syscalls.
>
>> This "= 0" is a spurious change. Remove it.
>
> Removed (it eliminated a compiler warning with gcc 7.3.1)
You mean, without the change, we trigger a warning? What
does it look like? If we do, then we'll need to address it
somehow, of course, given -Werror. But I'd like to see
it first.
> Tested on linux with native-gdbserver.
>
> Add client_state struct.
>
> Collect per client specific global data items into struct client_state,
> which is similar in purpose to remote.c::remote_state.
> @@ -1835,6 +1820,7 @@ handle_qxfer_btrace (const char *annex,
> Â Â Â Â Â Â Â Â Â Â Â Â Â gdb_byte *readbuf, const gdb_byte *writebuf,
> Â Â Â Â Â Â Â Â Â Â Â Â Â ULONGEST offset, LONGEST len)
> Â {
> +Â client_state &cs = get_client_state ();
> Â Â static struct buffer cache;
This "static" here made me notice that there is more global
state stored as function local static variables that should
be moved to client_state. E.g.,:
$ nm -A server.o | c++filt | grep " b " | grep "::"
server.o:0000000000000700 b guard variable for handle_query(char*, int, int*)::thread_iter
server.o:00000000000006f8 b handle_query(char*, int, int*)::thread_iter
server.o:00000000000006c0 b handle_qxfer_btrace(char const*, unsigned char*, unsigned char const*, unsigned long long, long long)::cache
server.o:00000000000006a0 b handle_qxfer_threads(char const*, unsigned char*, unsigned char const*, unsigned long long, long long)::result_length
server.o:0000000000000698 b handle_qxfer_threads(char const*, unsigned char*, unsigned char const*, unsigned long long, long long)::result
server.o:00000000000006e0 b handle_qxfer_btrace_conf(char const*, unsigned char*, unsigned char const*, unsigned long long, long long)::cache
server.o:00000000000006b0 b handle_qxfer_traceframe_info(char const*, unsigned char*, unsigned char const*, unsigned long long, long long)::result_length
server.o:00000000000006a8 b handle_qxfer_traceframe_info(char const*, unsigned char*, unsigned char const*, unsigned long long, long long)::result
That can be done as follow up.
> @@ -3643,7 +3642,7 @@ captured_main (int argc, char *argv[])
> Â Â Â Â Â Â Â Â }
> Â Â Â Â }
> Â Â Â Â Â Â else if (strcmp (*next_arg, "--remote-debug") == 0)
> -Â Â Â remote_debug = 1;
> +Â Â Â cs.remote_debug = 1;
remote_debug controls whether to print debug output to gdbserver'
own terminal, so I'm thinking that it should probably remain
a global.
Otherwise it looks good to me. If we don't need to handle
a warning, then feel free to push this in with the
remote_debug issue above addressed.
Thanks,
Pedro Alves
next prev parent reply other threads:[~2018-05-25 14:31 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-07 22:03 [RFC][PATCH] " Stan Cox
2018-01-31 3:41 ` Stan Cox
2018-04-23 17:58 ` Pedro Alves
2018-05-03 15:06 ` [RFC][PATCH v2] " Stan Cox
2018-05-04 14:14 ` Pedro Alves
2018-05-07 19:17 ` Frank Ch. Eigler
2018-05-25 14:31 ` Pedro Alves
2018-05-08 20:58 ` [RFC][PATCH v3] " Stan Cox
2018-05-25 15:01 ` Pedro Alves [this message]
2018-05-29 20:46 ` Stan Cox
2018-05-30 14:30 ` Pedro Alves
2018-06-08 16:11 ` Tom Tromey
2018-06-08 16:46 ` Stan Cox
2018-06-08 16:52 ` Tom Tromey
2018-07-10 1:14 ` Sergio Durigan Junior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5a41d41f-a0ce-2941-c759-fb1854a1792c@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=scox@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox