[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/5] Hurd, C++: Mach/Hurd headers and MIG stubs are not yet fit f
From: |
Thomas Schwinge |
Subject: |
[PATCH 5/5] Hurd, C++: Mach/Hurd headers and MIG stubs are not yet fit for C++ |
Date: |
Thu, 8 Dec 2016 08:50:36 +0100 |
..., so handle these in "C" mode still:
gdb/
* config/i386/i386gnu.mh (%_S.o %_U.o): Add "-x c" to
"COMPILE.post".
* gnu-nat.c: #include Mach/Hurd headers before all others. Wrap
Mach/Hurd headers and MIG stubs' prototypes in 'extern "C"'.
* i386-gnu-nat.c: Likewise.
---
gdb/ChangeLog | 6 ++++++
gdb/config/i386/i386gnu.mh | 3 +++
gdb/gnu-nat.c | 35 ++++++++++++++++++++++-------------
gdb/i386-gnu-nat.c | 14 +++++++++-----
4 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a40eb29..171d03a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2016-12-08 Thomas Schwinge <thomas@codesourcery.com>
+ * config/i386/i386gnu.mh (%_S.o %_U.o): Add "-x c" to
+ "COMPILE.post".
+ * gnu-nat.c: #include Mach/Hurd headers before all others. Wrap
+ Mach/Hurd headers and MIG stubs' prototypes in 'extern "C"'.
+ * i386-gnu-nat.c: Likewise.
+
* gnu-nat.c (proc_get_exception_port, proc_set_exception_port)
(INF_RESUME_MSGPORT_RPC, proc_get_state, _proc_get_exc_port)
(proc_steal_exc_port, proc_restore_exc_port, make_proc)
diff --git a/gdb/config/i386/i386gnu.mh b/gdb/config/i386/i386gnu.mh
index 24e817e..070497f 100644
--- a/gdb/config/i386/i386gnu.mh
+++ b/gdb/config/i386/i386gnu.mh
@@ -32,6 +32,9 @@ MIGCOM = $(MIG) -cc cat - /dev/null
$(CPP) $(CPPFLAGS) $($*-MIGUFLAGS) -x c $< \
| $(MIGCOM) -sheader /dev/null -server /dev/null -user $*_U.c -header
$*_U.h
+# MIG stubs are not yet ready for C++ compilation.
+%_S.o %_U.o : COMPILE.post += -x c
+
NAT_GENERATED_FILES = notify_S.h notify_S.c \
process_reply_S.h process_reply_S.c \
msg_reply_S.h msg_reply_S.c msg_U.h msg_U.c \
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index ae4430d..5fd59a2 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -20,14 +20,9 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#include "defs.h"
-
-#include <ctype.h>
-#include <limits.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <sys/ptrace.h>
-
+/* Mach/Hurd headers are not yet ready for C++ compilation. */
+extern "C"
+{
#include <mach.h>
#include <mach_error.h>
#include <mach/exception.h>
@@ -48,6 +43,15 @@
#include <hurd/sigpreempt.h>
#include <portinfo.h>
+}
+
+#include "defs.h"
+
+#include <ctype.h>
+#include <limits.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <sys/ptrace.h>
#include "inferior.h"
#include "symtab.h"
@@ -63,12 +67,16 @@
#include "gnu-nat.h"
#include "inf-child.h"
+/* MIG stubs are not yet ready for C++ compilation. */
+extern "C"
+{
#include "exc_request_S.h"
#include "notify_S.h"
#include "process_reply_S.h"
#include "msg_reply_S.h"
#include "exc_request_U.h"
#include "msg_U.h"
+}
static process_t proc_server = MACH_PORT_NULL;
@@ -1443,6 +1451,12 @@ struct inf *gnu_current_inf = 0;
multi-threaded, we don't bother to lock this. */
struct inf *waiting_inf;
+/* MIG stubs are not yet ready for C++ compilation. */
+extern "C" int exc_server (mach_msg_header_t *, mach_msg_header_t *);
+extern "C" int msg_reply_server (mach_msg_header_t *, mach_msg_header_t *);
+extern "C" int notify_server (mach_msg_header_t *, mach_msg_header_t *);
+extern "C" int process_reply_server (mach_msg_header_t *, mach_msg_header_t *);
+
/* Wait for something to happen in the inferior, returning what in STATUS. */
static ptid_t
gnu_wait (struct target_ops *ops,
@@ -1458,11 +1472,6 @@ gnu_wait (struct target_ops *ops,
struct proc *thread;
struct inf *inf = gnu_current_inf;
- extern int exc_server (mach_msg_header_t *, mach_msg_header_t *);
- extern int msg_reply_server (mach_msg_header_t *, mach_msg_header_t *);
- extern int notify_server (mach_msg_header_t *, mach_msg_header_t *);
- extern int process_reply_server (mach_msg_header_t *, mach_msg_header_t *);
-
gdb_assert (inf->task);
if (!inf->threads && !inf->pending_execs)
diff --git a/gdb/i386-gnu-nat.c b/gdb/i386-gnu-nat.c
index add0aa4..77081b8 100644
--- a/gdb/i386-gnu-nat.c
+++ b/gdb/i386-gnu-nat.c
@@ -17,17 +17,21 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
+/* Mach/Hurd headers are not yet ready for C++ compilation. */
+extern "C"
+{
+#include <mach.h>
+#include <mach_error.h>
+#include <mach/message.h>
+#include <mach/exception.h>
+}
+
#include "defs.h"
#include "x86-nat.h"
#include "inferior.h"
#include "floatformat.h"
#include "regcache.h"
-#include <mach.h>
-#include <mach_error.h>
-#include <mach/message.h>
-#include <mach/exception.h>
-
#include "i386-tdep.h"
#include "gnu-nat.h"
--
2.10.2
- Fix C++ compilation of the Hurd port, Thomas Schwinge, 2016/12/08
- [PATCH 1/5] Hurd, C++: Explicitly cast "void *", Thomas Schwinge, 2016/12/08
- [PATCH 2/5] Hurd, C++: Avoid GNU C nested functions, Thomas Schwinge, 2016/12/08
- [PATCH 5/5] Hurd, C++: Mach/Hurd headers and MIG stubs are not yet fit for C++,
Thomas Schwinge <=
- [PATCH 3/5] Hurd, C++: Avoid "const char *" to "char *" casts, Thomas Schwinge, 2016/12/08
- [PATCH 4/5] Hurd, C++: kern_return_t vs. error_t, Thomas Schwinge, 2016/12/08
- Re: Fix C++ compilation of the Hurd port, Luis Machado, 2016/12/23