This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch v4 20/24] btrace, gdbserver: read branch trace incrementally
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: "Metzger, Markus T" <markus dot t dot metzger at intel dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>, Pedro Alves <palves at redhat dot com>
- Date: Wed, 25 Sep 2013 21:05:23 +0200
- Subject: Re: [patch v4 20/24] btrace, gdbserver: read branch trace incrementally
- Authentication-results: sourceware.org; auth=none
- References: <1372842874-28951-1-git-send-email-markus dot t dot metzger at intel dot com> <1372842874-28951-21-git-send-email-markus dot t dot metzger at intel dot com> <20130818190905 dot GP24153 at host2 dot jankratochvil dot net> <A78C989F6D9628469189715575E55B230A9CEBAD at IRSMSX104 dot ger dot corp dot intel dot com> <20130922144224 dot GC19149 at host2 dot jankratochvil dot net> <A78C989F6D9628469189715575E55B230A9D4990 at IRSMSX104 dot ger dot corp dot intel dot com>
On Mon, 23 Sep 2013 09:09:18 +0200, Metzger, Markus T wrote:
> > > I need to distinguish different types of errors, e.g. overflow and not
> > supported.
> >
> > Then use enum. There is for example:
> > enum return_reason
> > {
> > /* User interrupt. */
> > RETURN_QUIT = -2,
> > /* Any other error. */
> > RETURN_ERROR
> > };
> >
> > One could even throw and catch specific exceptions (enum errors) but I find
> > that needlessly overcomplicated when we just return to the immediate
> > caller.
>
> In addition to errors I defined myself, I might get errors from the system call,
> e.g. ENOMEM, EOPNOTSUPP, ENOSYS.
I do not see such system call. linux_read_btrace can ever return only 0,
-EOVERFLOW or -ENOSYS and nothing else. It never returns for example
variable value like "-errno".
> For the not-available function, for
> example, I'm just mimicking the error that would be returned by the system
> call on systems where that call is not available.
This is not GDB style, it probably comes from Linux kernel. GDB code should
not needlessly depend on any system E* macros as it reduces portability
(these are linux-* files but still).
> Do you want me to translate those into an enum?
As it can return only 0, -EOVERFLOW and -ENOSYS yes, I find enum as the best
one.
Thanks,
Jan