This is the mail archive of the gdb-cvs@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]

[binutils-gdb] Fix gdb 8.1 Solaris compilation


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4fa7574eecb9a92ef40f77de572541e402a2749e

commit 4fa7574eecb9a92ef40f77de572541e402a2749e
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Fri Sep 22 10:42:45 2017 +0200

    Fix gdb 8.1 Solaris compilation
    
    I just tried to compile gdb trunk on Solaris 11.4 (formerly 12), and
    failed for a couple of reasons:
    
    *
    
    In file included from /usr/include/python2.7/Python.h:128:0,
                     from /vol/src/gnu/gdb/gdb/dist/gdb/python/python-internal.h:94,
                     from /vol/src/gnu/gdb/gdb/dist/gdb/python/py-instruction.h:23,
                     from /vol/src/gnu/gdb/gdb/dist/gdb/python/py-instruction.c:21:
    /usr/include/python2.7/ceval.h:67:0: error: ignoring #pragma no_inline  [-Werror=unknown-pragmas]
     #pragma no_inline(PyEval_EvalFrameEx)
     ^
    
      New in Solaris 11.4: <python2.7/ceval.h> uses a Studio-only #pragma.
      I've disabled the warning in warnings.m4.
    
    *
    
    /vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c: In function â??int pipe_open(serial*, const char*)â??:
    /vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c:77:9: error: â??pid_t vfork()â?? is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
       pid = vfork ();
             ^
    /vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c:77:16: error: â??pid_t vfork()â?? is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
       pid = vfork ();
                    ^
    
      Since Solaris 11, vfork () is marked deprecated in <unistd.h>.
    
      cf. vfork(2):
    
           The  vfork()  and vforkx() functions are deprecated. Their sole legiti-
           mate use as a prelude to an immediate call to a function from the  exec
           family can be achieved safely by posix_spawn(3C) or posix_spawnp(3C).
    
      Again, I've disabled the warning.
    
    *
    
    /vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c: In function â??void shell_escape(const char*, int)â??:
    /vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c:750:14: error: â??pid_t vfork()â?? is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
       if ((pid = vfork ()) == 0)
                  ^
    /vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c:750:21: error: â??pid_t vfork()â?? is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
       if ((pid = vfork ()) == 0)
                         ^
    
      Same problem.
    
    *
    
    /vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function â??void procfs_init_inferior(target_ops*, int)â??:
    /vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:4380:30: error: â??START_INFERIOR_TRAPS_EXPECTEDâ?? was not declared in this scope
       gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
                                  ^
    
      defined in nat/fork-inferior.h, need to include that header
    
    /vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function â??void procfs_create_inferior(target_ops*, const char*, const string&, char**, int)â??:
    /vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:4605:38: error: â??fork_inferiorâ?? was not declared in this scope
              NULL, NULL, shell_file, NULL);
                                          ^
    
      likewise
    
    /vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function â??void procfs_info_proc(target_ops*, const char*, info_proc_what)â??:
    /vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:5124:20: error: â??argvâ?? was not declared in this scope
       for (char *arg : argv)
                        ^
    
      Typo, should be built_argv instead!
    
    *
    
    Undefined                       first referenced
     symbol                             in file
    fork_inferior(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*)) procfs.o
    startup_inferior(int, int, target_waitstatus*, ptid_t*) fork-child.o
    ld: fatal: symbol referencing errors
    collect2: error: ld returned 1 exit status
    make[2]: *** [Makefile:2249: gdb] Error 1
    
      Need to add fork-inferior.o to NATDEPFILES.
    
    With the changes below, I can build gdb on sparcv9-sun-solaris2.11 and
    amd64-pc-solaris2.11 and a simple smoke test (gdb/gdb gdb/gdb) works.

Diff:
---
 gdb/ChangeLog     | 13 +++++++++++++
 gdb/configure     | 13 ++++++++++---
 gdb/configure.nat |  8 +++++---
 gdb/procfs.c      |  3 ++-
 gdb/warning.m4    | 13 ++++++++++---
 5 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1b1a2b6..02229bc 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2017-09-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.nat <i386sol2,i386>: Add fork-inferior.o to NATDEPFILES.
+	<sol2,sparc>: Likewise.
+	<sol2-64,i386>: Likewise.
+
+	* warning.m4 (AM_GDB_WARNINGS): Disable -Wunknown-pragmas,
+	-Wdeprecated-declarations on *-*-solaris*.
+	* configure: Regenerate.
+
+	* procfs.c: Include "nat/inferior.h".
+	(procfs_info_proc): Fix typo.
+
 2017-09-21  Kevin Buettner  <kevinb@redhat.com>
 
 	* remote.c (vector): Include.
diff --git a/gdb/configure b/gdb/configure
index c7746fc..61e8fa8 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -15155,10 +15155,17 @@ build_warnings="-Wall -Wpointer-arith \
 -Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized \
 -Wno-mismatched-tags"
 
-# Enable -Wno-format by default when using gcc on mingw since many
-# GCC versions complain about %I64.
 case "${host}" in
-  *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
+  *-*-mingw32*)
+    # Enable -Wno-format by default when using gcc on mingw since many
+    # GCC versions complain about %I64.
+    build_warnings="$build_warnings -Wno-format" ;;
+  *-*-solaris*)
+    # Solaris 11.4 <python2.7/ceval.h> uses #pragma no_inline that GCC
+    # doesn't understand.
+    build_warnings="$build_warnings -Wno-unknown-pragmas"
+    # Solaris 11 <unistd.h> marks vfork deprecated.
+    build_warnings="$build_warnings -Wno-deprecated-declarations" ;;
   *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
 esac
 
diff --git a/gdb/configure.nat b/gdb/configure.nat
index a318b4a..bf851f5 100644
--- a/gdb/configure.nat
+++ b/gdb/configure.nat
@@ -216,7 +216,8 @@ case ${gdb_host} in
 	case ${gdb_host_cpu} in
 	    i386)
 		# Host: Solaris x86
-		NATDEPFILES='fork-child.o i386-v4-nat.o i386-sol2-nat.o \
+		NATDEPFILES='fork-child.o fork-inferior.o \
+		i386-v4-nat.o i386-sol2-nat.o \
 		procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o'
 		HAVE_NATIVE_GCORE_HOST=1
 		;;
@@ -464,7 +465,7 @@ case ${gdb_host} in
 		# Host: Solaris SPARC & UltraSPARC
 		NAT_FILE='nm-sol2.h'
 		NATDEPFILES='sparc-sol2-nat.o \
-		fork-child.o \
+		fork-child.o fork-inferior.o \
 		procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o'
 		HAVE_NATIVE_GCORE_HOST=1
 		;;
@@ -474,7 +475,8 @@ case ${gdb_host} in
 	case ${gdb_host_cpu} in
 	    i386)
 		# Host: Solaris x86_64
-		NATDEPFILES='fork-child.o amd64-nat.o i386-v4-nat.o i386-sol2-nat.o \
+		NATDEPFILES='fork-child.o fork-inferior.o \
+		amd64-nat.o i386-v4-nat.o i386-sol2-nat.o \
 		procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o'
 		HAVE_NATIVE_GCORE_HOST=1
 		;;
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 7344304..34515a0 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -30,6 +30,7 @@
 #include "gdbthread.h"
 #include "regcache.h"
 #include "inf-child.h"
+#include "nat/fork-inferior.h"
 #include "filestuff.h"
 
 #if defined (NEW_PROC_API)
@@ -5121,7 +5122,7 @@ procfs_info_proc (struct target_ops *ops, const char *args,
 
   old_chain = make_cleanup (null_cleanup, 0);
   gdb_argv built_argv (args);
-  for (char *arg : argv)
+  for (char *arg : built_argv)
     {
       if (isdigit (arg[0]))
 	{
diff --git a/gdb/warning.m4 b/gdb/warning.m4
index 0b6aaab..0601c2d 100644
--- a/gdb/warning.m4
+++ b/gdb/warning.m4
@@ -43,10 +43,17 @@ build_warnings="-Wall -Wpointer-arith \
 -Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized \
 -Wno-mismatched-tags"
 
-# Enable -Wno-format by default when using gcc on mingw since many
-# GCC versions complain about %I64.
 case "${host}" in
-  *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;;
+  *-*-mingw32*)
+    # Enable -Wno-format by default when using gcc on mingw since many
+    # GCC versions complain about %I64.
+    build_warnings="$build_warnings -Wno-format" ;;
+  *-*-solaris*)
+    # Solaris 11.4 <python2.7/ceval.h> uses #pragma no_inline that GCC
+    # doesn't understand.
+    build_warnings="$build_warnings -Wno-unknown-pragmas"
+    # Solaris 11 <unistd.h> marks vfork deprecated.
+    build_warnings="$build_warnings -Wno-deprecated-declarations" ;;
   *) build_warnings="$build_warnings -Wformat-nonliteral" ;;
 esac


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