This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Workaround a FreeBSD ptrace() bug with clearing thread events.
- From: John Baldwin <jhb at freebsd dot org>
- To: "Maciej W. Rozycki" <macro at mips dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Fri, 02 Mar 2018 14:34:36 -0800
- Subject: Re: [PATCH] Workaround a FreeBSD ptrace() bug with clearing thread events.
- Authentication-results: sourceware.org; auth=none
- References: <20180224000935.43344-1-jhb@FreeBSD.org> <1908872.BAzsX71dkG@ralph.baldwin.cx> <alpine.DEB.2.00.1803021921570.10166@tp.orcam.me.uk>
On Friday, March 02, 2018 07:31:49 PM Maciej W. Rozycki wrote:
> On Fri, 2 Mar 2018, John Baldwin wrote:
>
> > > Hmm, doesn't it have to be a run-time check then? Otherwise you're
> > > basing your decision on the host system GDB has been built for and not one
> > > it will be run on, which I suppose does not necessarily have to be of the
> > > same version. Or am I missing anything here?
> >
> > FreeBSD generally does not support forwards-compatability for binaries (newer
> > binary on older kernel), only backwards-compatability (older binary on newer
> > kernel). In this case, using the workaround is also fine on a fixed kernel,
> > so it doesn't hurt if GDB is compiled on an older system (thus using the
> > workaround) and then run under a newer kernel.
>
> Fair enough.
>
> Is the one-way compatibility enforced though, by a system library runtime
> or the kernel somehow, by refusing to run a binary built for a kernel that
> is newer than one currently in charge of the system? Otherwise the rule
> would be quite fragile and error prone, asking for extra care to be taken
> by the user.
It is enforced in some ways but not others. Kernel modules do depend on a
version number in such a way that attempting to load a newer kernel module
on an older kernel will fail. However, the general policy of only supporting
one-way compatibility is well-known among the FreeBSD userbase (for example,
the instructions for upgrading a system from source require booting into a
new kernel before installing the matching userland binaries).
--
John Baldwin