From: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
To: gdb-patches@sourceware.org
Subject: Fix gdb 8.1 Solaris compilation
Date: Thu, 21 Sep 2017 13:02:00 -0000 [thread overview]
Message-ID: <yddy3p8p5l6.fsf@CeBiTec.Uni-Bielefeld.DE> (raw)
[-- Attachment #1: Type: text/plain, Size: 4468 bytes --]
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.
Ok for mainline?
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2017-09-21 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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol2-gdb81.patch --]
[-- Type: text/x-patch, Size: 2561 bytes --]
diff --git a/gdb/configure.nat b/gdb/configure.nat
--- 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
--- 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
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
--- 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
next reply other threads:[~2017-09-21 13:02 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-21 13:02 Rainer Orth [this message]
2017-09-21 13:17 ` Andreas Schwab
2017-09-21 14:14 ` Rainer Orth
2017-09-21 14:31 ` Obsolete/remove Solaris < 10 [was: Re: Fix gdb 8.1 Solaris compilation] Rainer Orth
2017-09-21 14:39 ` Pedro Alves
2017-09-22 14:45 ` Rainer Orth
2017-09-22 15:40 ` Pedro Alves
2017-09-26 11:20 ` Rainer Orth
2017-09-26 11:26 ` Pedro Alves
2017-09-26 13:25 ` Rainer Orth
2017-09-26 13:45 ` Pedro Alves
2017-09-26 13:55 ` Rainer Orth
2017-09-26 14:18 ` Pedro Alves
2017-09-26 14:21 ` Pedro Alves
2017-10-03 13:01 ` Rainer Orth
2017-09-29 11:53 ` Eli Zaretskii
2017-09-21 14:21 ` Fix gdb 8.1 Solaris compilation Pedro Alves
2017-09-21 14:23 ` Rainer Orth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=yddy3p8p5l6.fsf@CeBiTec.Uni-Bielefeld.DE \
--to=ro@cebitec.uni-bielefeld.de \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox