This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


On 2018-06-25 04:05, Thomas Petazzoni wrote:
To decide whether fork() or vfork() should be used, fork-inferior.c
uses the following test:

  #if !(defined(__UCLIBC__) && defined(HAS_NOMMU))

However, HAS_NOMMU is never defined, because it gets defined in
linux-ptrace.h, which is not included by fork-inferior.c. Due to this,
gdbserver fails to build on noMMU architectures. This commit fixes
that by simply including linux-ptrace.h.

This bug was introduced by commit
2090129c36c7e582943b7d300968d19b46160d84 ("Share fork_inferior et al
with gdbserver"). Indeed, the same fork()/vfork() selection was done,
but in another file where linux-ptrace.h was included.

Fixes the following build issue:

../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*,
const string&, char**, void (*)(), void (*)(int), void (*)(), const
char*, void (*)(const char*, char* const*, char* const*))':
../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope
     pid = fork ();
           ^~~~
../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork'
     pid = fork ();
           ^~~~
           vfork

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 gdb/nat/fork-inferior.c | 1 +
 1 file changed, 1 insertion(+)

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.

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

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?

Thanks,

Simon


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]