diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2017-09-22 10:42:45 +0200 |
---|---|---|
committer | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2017-09-22 10:42:45 +0200 |
commit | 4fa7574eecb9a92ef40f77de572541e402a2749e (patch) | |
tree | dff5acf6822c437e7b4b9ced183a40cd80f0f636 | |
parent | 7790bd6c748fc8e46c621b065562729735114f6b (diff) | |
download | binutils-4fa7574eecb9a92ef40f77de572541e402a2749e.zip binutils-4fa7574eecb9a92ef40f77de572541e402a2749e.tar.gz binutils-4fa7574eecb9a92ef40f77de572541e402a2749e.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rwxr-xr-x | gdb/configure | 13 | ||||
-rw-r--r-- | gdb/configure.nat | 8 | ||||
-rw-r--r-- | gdb/procfs.c | 3 | ||||
-rw-r--r-- | 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 |