mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
[gdb, hurd] Work around conflict between Mach's 'thread_info' function, and GDB's 'thread_info' class
In file included from ./nm.h:25:0, from [...]/gdb/defs.h:423, from [...]/gdb/gdb.c:19: [...]/gdb/regcache.h:35:46: warning: 'get_thread_regcache' initialized and declared 'extern' extern struct regcache *get_thread_regcache (thread_info *thread); ^~~~~~~~~~~ [...]/gdb/regcache.h:35:46: error: 'regcache* get_thread_regcache' redeclared as different kind of symbol [...] [...]/gdb/gdbarch.h:1203:69: error: 'thread_info' is not a type extern LONGEST gdbarch_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread); ^~~~~~~~~~~ Fixed with a different (self-contained, more maintainable?) approach compared to what has been done in commit7aabaf9d4a
"Create private_thread_info hierarchy", and commit75cbc781e3
"gdb: For macOS, s/thread_info/struct thread_info/". We don't want to change all the GDB code to everywhere use 'class thread_info' or 'struct thread_info' instead of plain 'thread_info'. gdb/ * 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.
This commit is contained in:
parent
b1041ae0ae
commit
cabb5f067d
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user