Re: [PATCH] nat/fork-inferior: include linux-ptrace.h

Thomas Petazzoni
2018-06-27T14:31:43Z

Hello Simon,

On Wed, 27 Jun 2018 10:24:07 -0400, Simon Marchi wrote:

> > diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c
> > index 8b59387fa5..05167628a6 100644
> > --- a/gdb/nat/fork-inferior.c
> > +++ b/gdb/nat/fork-inferior.c
> > @@ -26,6 +26,7 @@
> > #include "common-gdbthread.h"
> > #include "signals-state-save-restore.h"
> > #include "gdb_tilde_expand.h"
> > +#include "linux-ptrace.h"
> > #include <vector>
> >
> > extern char **environ;
>
> Hi Thomas,
>
> fork-inferior.c is also included in native builds for BSDs, AIX, Solaris
> and Darwin (see gdb/configure.nat). I am a bit concerned that
> linux-ptrace.h could use some Linux-specific things, and thus would
> break the other builds. However, I built-tested on FreeBSD and it seems
> fine. Worst case, we can probably wrap this include in "#ifdef
> __linux__" if that becomes a problem.

Or better, this horrible mess of __UCLIBC__ and HAS_NOMMU macros should
be replaced by a proper autoconf check testing for the availability of
fork().

> Do you have push access, or do you prefer if I push the patch for you?

I don't have push access.

> I suppose that error was caught by a Buildroot autobuilder? Would it be
> possible to have the config, so I can add a similar configuration to my
> collection of cross-compiled GDB builds I use for build-testing?

The error wasn't caught by the autobuilders, but by the automated build
logic we use for http://toolchains.bootlin.com to build toolchains for
a wide range of CPU architectures.

The failure was
https://gitlab.com/free-electrons/toolchains-builder/-/jobs/77021057,
and the Buildroot configuration being built was:

BR2_m68k=y
BR2_m68k_cf5208=y
BR2_WGET="wget --passive-ftp -nd -t 3 --no-check-certificate"
BR2_HOST_DIR="/opt/m68k-coldfire--uclibc--bleeding-edge-2018.06-1"
BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu"
BR2_KERNEL_HEADERS_4_14=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_PTHREAD_DEBUG=y
BR2_BINUTILS_VERSION_2_30_X=y
BR2_GCC_VERSION_8_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_HOST_GDB=y
BR2_GDB_VERSION_8_1=y
BR2_INIT_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_GDB=y
# BR2_TARGET_ROOTFS_TAR is not set

Note that with Buildroot's latest master, this configuration will build
fine, because we already merged the fix for the fork/vfork issue.

Best regards,

Thomas Petazzoni
--
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering