aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/config/i386/nm-i386gnu.h5
-rw-r--r--gdb/gnu-nat.c9
-rw-r--r--gdb/gnu-nat.h15
-rw-r--r--gdb/i386-gnu-nat.c4
5 files changed, 27 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e6d86e2..c88216b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
2019-02-14 Thomas Schwinge <thomas@codesourcery.com>
+ * config/i386/nm-i386gnu.h: Don't "#include" any files.
+ * gnu-nat.h (mach_thread_info): New function.
+ * gnu-nat.c (thread_takeover_sc_cmd): Use it.
+
* config/i386/nm-i386gnu.h (gnu_target_pid_to_str): Remove.
2019-02-14 Frederic Konrad <konrad@adacore.com>
diff --git a/gdb/config/i386/nm-i386gnu.h b/gdb/config/i386/nm-i386gnu.h
index 8f36102..e859b23 100644
--- a/gdb/config/i386/nm-i386gnu.h
+++ b/gdb/config/i386/nm-i386gnu.h
@@ -19,11 +19,6 @@
#ifndef CONFIG_I386_NM_I386GNU_H
#define CONFIG_I386_NM_I386GNU_H
-#include <unistd.h>
-#include <mach.h>
-#include <mach/exception.h>
-#include "regcache.h"
-
/* Thread flavors used in re-setting the T bit. */
#define THREAD_STATE_FLAVOR i386_REGS_SEGS_STATE
#define THREAD_STATE_SIZE i386_THREAD_STATE_COUNT
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index cb8331d..bd8fcb6 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -20,6 +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 this first, to pick up the <mach.h> 'thread_info' diversion. */
+#include "gnu-nat.h"
+
/* Mach/Hurd headers are not yet ready for C++ compilation. */
extern "C"
{
@@ -67,7 +70,6 @@ extern "C"
#include "gdb_obstack.h"
#include "tid-parse.h"
-#include "gnu-nat.h"
#include "inf-child.h"
/* MIG stubs are not yet ready for C++ compilation. */
@@ -3429,8 +3431,9 @@ thread_takeover_sc_cmd (const char *args, int from_tty)
thread_basic_info_data_t _info;
thread_basic_info_t info = &_info;
mach_msg_type_number_t info_len = THREAD_BASIC_INFO_COUNT;
- kern_return_t err =
- thread_info (thread->port, THREAD_BASIC_INFO, (int *) &info, &info_len);
+ kern_return_t err
+ = mach_thread_info (thread->port, THREAD_BASIC_INFO,
+ (int *) &info, &info_len);
if (err)
error (("%s."), safe_strerror (err));
thread->sc = info->suspend_count;
diff --git a/gdb/gnu-nat.h b/gdb/gnu-nat.h
index 9df479c..dbad0ca 100644
--- a/gdb/gnu-nat.h
+++ b/gdb/gnu-nat.h
@@ -19,8 +19,21 @@
#ifndef GNU_NAT_H
#define GNU_NAT_H
-#include <unistd.h>
+#include "defs.h"
+
+/* Work around conflict between Mach's 'thread_info' function, and GDB's
+ 'thread_info' class. Make the former available as 'mach_thread_info'. */
+#define thread_info mach_thread_info
+/* Mach headers are not yet ready for C++ compilation. */
+extern "C"
+{
#include <mach.h>
+}
+#undef thread_info
+/* Divert 'mach_thread_info' to the original Mach 'thread_info' function. */
+extern __typeof__ (mach_thread_info) mach_thread_info asm ("thread_info");
+
+#include <unistd.h>
struct inf;
diff --git a/gdb/i386-gnu-nat.c b/gdb/i386-gnu-nat.c
index ffba941..c23c4bc 100644
--- a/gdb/i386-gnu-nat.c
+++ b/gdb/i386-gnu-nat.c
@@ -17,6 +17,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 this first, to pick up the <mach.h> 'thread_info' diversion. */
+#include "gnu-nat.h"
+
/* Mach/Hurd headers are not yet ready for C++ compilation. */
extern "C"
{
@@ -34,7 +37,6 @@ extern "C"
#include "i386-tdep.h"
-#include "gnu-nat.h"
#include "inf-child.h"
#include "i387-tdep.h"