This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [linux] Always ignore restart/cancellation signals
> Date: Thu, 8 Dec 2005 15:43:01 -0500
> From: Daniel Jacobowitz <drow@false.org>
> Cc: gdb-patches@sources.redhat.com
>
> On Thu, Dec 08, 2005 at 01:38:24PM -0700, Kevin Buettner wrote:
> > > Hmm, I thought symbols starting with __ were "reserved by the
> > > implemntation" and should not be used by user space programs.
>
> We're a program tightly tied to the implementation, and they're symbols
> provided by the implementation. gdbserver already uses them; rda was
> recently changed to use them; gdb/signals/signals.c already uses them.
> >
> > For the symbols in question, the header file, <bits/signum.h>, says:
> >
> > /* These are the hard limits of the kernel. These values should not be
> > used directly at user level. */
> > #define __SIGRTMIN 32
> > #define __SIGRTMAX (_NSIG - 1)
> >
> > So the comment supports your claim.
> >
> > The only alternative that I can think of is to hardcode the constant
> > (32, in this case) into the GDB sources. Of these two approaches, I'd
> > prefer to use __ symbol from the system headers. I do think that we
> > ought to check for its existence first though.
>
> I'll do it if you like.
There's no need to, IMHO. I think Jim was wrong: symbols starting
with __ are indeed reserved for the implementation, but the meaning of
that reservation is that user code should not _define_ such symbols,
not that it must not use them. In effect, this rule sets up a
namespace that the library implementation can use without risking that
it steps on the feet of user code. But if we don't define any symbols
that begin with __, we are safe accessing them, I think.
I have no idea why the above comment from bits/signum.h was written.
I think it is wrong and the glibc maintainers should be asked to
either remove it or explain why they think these symbols should not be
used at user level.