Index: gdb/procfs.c |
diff --git a/gdb/procfs.c b/gdb/procfs.c |
index 774df2e0113a1dd38ac2e898651a13c7153c9ef9..ef9bb3de40aaf050736af900cf7c3cdc516646d1 100644 |
--- a/gdb/procfs.c |
+++ b/gdb/procfs.c |
@@ -1,6 +1,6 @@ |
/* Machine independent support for SVR4 /proc (process file system) for GDB. |
- Copyright (C) 1999-2003, 2006-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1999-2013 Free Software Foundation, Inc. |
Written by Michael Snyder at Cygnus Solutions. |
Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others. |
@@ -45,7 +45,8 @@ |
#include "gdb_wait.h" |
#include <signal.h> |
#include <ctype.h> |
-#include "gdb_string.h" |
+#include "gdb_bfd.h" |
+#include <string.h> |
#include "gdb_assert.h" |
#include "inflow.h" |
#include "auxv.h" |
@@ -61,7 +62,6 @@ |
Irix |
Solaris |
OSF |
- Unixware |
AIX5 |
/proc works by imitating a file system: you open a simulated file |
@@ -89,12 +89,12 @@ |
#ifdef NEW_PROC_API |
#include <sys/types.h> |
-#include "gdb_dirent.h" /* opendir/readdir, for listing the LWP's */ |
+#include <dirent.h> /* opendir/readdir, for listing the LWP's */ |
#endif |
#include <fcntl.h> /* for O_RDONLY */ |
#include <unistd.h> /* for "X_OK" */ |
-#include "gdb_stat.h" /* for struct stat */ |
+#include <sys/stat.h> /* for struct stat */ |
/* Note: procfs-utils.h must be included after the above system header |
files, because it redefines various system calls using macros. |
@@ -110,7 +110,7 @@ |
/* This module defines the GDB target vector and its methods. */ |
static void procfs_attach (struct target_ops *, char *, int); |
-static void procfs_detach (struct target_ops *, char *, int); |
+static void procfs_detach (struct target_ops *, const char *, int); |
static void procfs_resume (struct target_ops *, |
ptid_t, int, enum gdb_signal); |
static void procfs_stop (ptid_t); |
@@ -141,11 +141,7 @@ static int procfs_thread_alive (struct target_ops *ops, ptid_t); |
static void procfs_find_new_threads (struct target_ops *ops); |
static char *procfs_pid_to_str (struct target_ops *, ptid_t); |
-static int proc_find_memory_regions (int (*) (CORE_ADDR, |
- unsigned long, |
- int, int, int, |
- void *), |
- void *); |
+static int proc_find_memory_regions (find_memory_region_ftype, void *); |
static char * procfs_make_note_section (bfd *, int *); |
@@ -162,7 +158,7 @@ static int |
procfs_auxv_parse (struct target_ops *ops, gdb_byte **readptr, |
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) |
{ |
- enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch); |
+ enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ()); |
gdb_byte *ptr = *readptr; |
if (endptr == ptr) |
@@ -552,7 +548,7 @@ open_procinfo_files (procinfo *pi, int which) |
/* This function is getting ALMOST long enough to break up into |
several. Here is some rationale: |
- NEW_PROC_API (Solaris 2.6, Solaris 2.7, Unixware): |
+ NEW_PROC_API (Solaris 2.6, Solaris 2.7): |
There are several file descriptors that may need to be open |
for any given process or LWP. The ones we're intereted in are: |
- control (ctl) write-only change the state |
@@ -1078,16 +1074,6 @@ proc_get_status (procinfo *pi) |
(char *) &pi->prstatus, |
sizeof (gdb_prstatus_t)) |
== sizeof (gdb_prstatus_t)); |
-#if 0 /*def UNIXWARE*/ |
- if (pi->status_valid && |
- (pi->prstatus.pr_lwp.pr_flags & PR_ISTOP) && |
- pi->prstatus.pr_lwp.pr_why == PR_REQUESTED) |
- /* Unixware peculiarity -- read the damn thing again! */ |
- pi->status_valid = (read (pi->status_fd, |
- (char *) &pi->prstatus, |
- sizeof (gdb_prstatus_t)) |
- == sizeof (gdb_prstatus_t)); |
-#endif /* UNIXWARE */ |
} |
} |
#else /* ioctl method */ |
@@ -1151,14 +1137,7 @@ proc_flags (procinfo *pi) |
return 0; /* FIXME: not a good failure value (but what is?) */ |
#ifdef NEW_PROC_API |
-# ifdef UNIXWARE |
- /* UnixWare 7.1 puts process status flags, e.g. PR_ASYNC, in |
- pstatus_t and LWP status flags, e.g. PR_STOPPED, in lwpstatus_t. |
- The two sets of flags don't overlap. */ |
- return pi->prstatus.pr_flags | pi->prstatus.pr_lwp.pr_flags; |
-# else |
return pi->prstatus.pr_lwp.pr_flags; |
-# endif |
#else |
return pi->prstatus.pr_flags; |
#endif |
@@ -1209,12 +1188,12 @@ proc_watchpoint_address (procinfo *pi, CORE_ADDR *addr) |
return 0; |
#ifdef NEW_PROC_API |
- *addr = (CORE_ADDR) gdbarch_pointer_to_address (target_gdbarch, |
- builtin_type (target_gdbarch)->builtin_data_ptr, |
+ *addr = (CORE_ADDR) gdbarch_pointer_to_address (target_gdbarch (), |
+ builtin_type (target_gdbarch ())->builtin_data_ptr, |
(gdb_byte *) &pi->prstatus.pr_lwp.pr_info.si_addr); |
#else |
- *addr = (CORE_ADDR) gdbarch_pointer_to_address (target_gdbarch, |
- builtin_type (target_gdbarch)->builtin_data_ptr, |
+ *addr = (CORE_ADDR) gdbarch_pointer_to_address (target_gdbarch (), |
+ builtin_type (target_gdbarch ())->builtin_data_ptr, |
(gdb_byte *) &pi->prstatus.pr_info.si_addr); |
#endif |
return 1; |
@@ -1320,7 +1299,7 @@ proc_modify_flag (procinfo *pi, long flag, long mode) |
if (pi->pid != 0) |
pi = find_procinfo_or_die (pi->pid, 0); |
-#ifdef NEW_PROC_API /* Newest method: UnixWare and newer Solarii. */ |
+#ifdef NEW_PROC_API /* Newest method: Newer Solarii. */ |
/* First normalize the PCUNSET/PCRESET command opcode |
(which for no obvious reason has a different definition |
from one operating system to the next...) */ |
@@ -1824,11 +1803,7 @@ proc_get_held_signals (procinfo *pi, gdb_sigset_t *save) |
if (!proc_get_status (pi)) |
return NULL; |
-#ifdef UNIXWARE |
- ret = &pi->prstatus.pr_lwp.pr_context.uc_sigmask; |
-#else |
ret = &pi->prstatus.pr_lwp.pr_lwphold; |
-#endif /* UNIXWARE */ |
#else /* not NEW_PROC_API */ |
{ |
static gdb_sigset_t sigheld; |
@@ -2210,15 +2185,8 @@ proc_get_gregs (procinfo *pi) |
if (!proc_get_status (pi)) |
return NULL; |
- /* OK, sorry about the ifdef's. There's three cases instead of two, |
- because in this case Unixware and Solaris/RW differ. */ |
- |
#ifdef NEW_PROC_API |
-# ifdef UNIXWARE /* FIXME: Should be autoconfigured. */ |
- return &pi->prstatus.pr_lwp.pr_context.uc_mcontext.gregs; |
-# else |
return &pi->prstatus.pr_lwp.pr_reg; |
-# endif |
#else |
return &pi->prstatus.pr_reg; |
#endif |
@@ -2235,11 +2203,7 @@ proc_get_fpregs (procinfo *pi) |
if (!proc_get_status (pi)) |
return NULL; |
-# ifdef UNIXWARE /* FIXME: Should be autoconfigured. */ |
- return &pi->prstatus.pr_lwp.pr_context.uc_mcontext.fpregs; |
-# else |
return &pi->prstatus.pr_lwp.pr_fpreg; |
-# endif |
#else /* not NEW_PROC_API */ |
if (pi->fpregs_valid) |
@@ -2454,15 +2418,15 @@ proc_parent_pid (procinfo *pi) |
(a.k.a void pointer)! */ |
#if (defined (PCWATCH) || defined (PIOCSWATCH)) \ |
- && !(defined (PIOCOPENLWP) || defined (UNIXWARE)) |
+ && !(defined (PIOCOPENLWP)) |
static void * |
procfs_address_to_host_pointer (CORE_ADDR addr) |
{ |
- struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; |
+ struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr; |
void *ptr; |
gdb_assert (sizeof (ptr) == TYPE_LENGTH (ptr_type)); |
- gdbarch_address_to_pointer (target_gdbarch, ptr_type, |
+ gdbarch_address_to_pointer (target_gdbarch (), ptr_type, |
(gdb_byte *) &ptr, addr); |
return ptr; |
} |
@@ -2478,7 +2442,7 @@ proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, int len, int wflags) |
return 0; |
#else |
/* Horrible hack! Detect Solaris 2.5, because this doesn't work on 2.5. */ |
-#if defined (PIOCOPENLWP) || defined (UNIXWARE) /* Solaris 2.5: bail out. */ |
+#if defined (PIOCOPENLWP) /* Solaris 2.5: bail out. */ |
return 0; |
#else |
struct { |
@@ -2520,7 +2484,7 @@ proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, int len, int wflags) |
register for the LWP that we're interested in. Returns the |
matching ssh struct (LDT entry). */ |
-struct ssd * |
+static struct ssd * |
proc_get_LDT_entry (procinfo *pi, int key) |
{ |
static struct ssd *ldt_entry = NULL; |
@@ -2605,17 +2569,17 @@ procfs_find_LDT_entry (ptid_t ptid) |
procinfo *pi; |
/* Find procinfo for the lwp. */ |
- if ((pi = find_procinfo (PIDGET (ptid), TIDGET (ptid))) == NULL) |
+ if ((pi = find_procinfo (ptid_get_pid (ptid), ptid_get_lwp (ptid))) == NULL) |
{ |
warning (_("procfs_find_LDT_entry: could not find procinfo for %d:%ld."), |
- PIDGET (ptid), TIDGET (ptid)); |
+ ptid_get_pid (ptid), ptid_get_lwp (ptid)); |
return NULL; |
} |
/* get its general registers. */ |
if ((gregs = proc_get_gregs (pi)) == NULL) |
{ |
warning (_("procfs_find_LDT_entry: could not read gregs for %d:%ld."), |
- PIDGET (ptid), TIDGET (ptid)); |
+ ptid_get_pid (ptid), ptid_get_lwp (ptid)); |
return NULL; |
} |
/* Now extract the GS register's lower 16 bits. */ |
@@ -2651,7 +2615,7 @@ proc_get_nthreads (procinfo *pi) |
#else |
#if defined (SYS_lwpcreate) || defined (SYS_lwp_create) /* FIXME: multiple */ |
-/* Solaris and Unixware version */ |
+/* Solaris version */ |
static int |
proc_get_nthreads (procinfo *pi) |
{ |
@@ -2686,7 +2650,7 @@ proc_get_nthreads (procinfo *pi) |
currently executing. */ |
#if defined (SYS_lwpcreate) || defined (SYS_lwp_create) /* FIXME: multiple */ |
-/* Solaris and Unixware version */ |
+/* Solaris version */ |
static int |
proc_get_current_thread (procinfo *pi) |
{ |
@@ -2794,7 +2758,7 @@ proc_update_threads (procinfo *pi) |
} |
#else |
#ifdef NEW_PROC_API |
-/* Unixware and Solaris 6 (and later) version. */ |
+/* Solaris 6 (and later) version. */ |
static void |
do_closedir_cleanup (void *dir) |
{ |
@@ -2821,13 +2785,11 @@ proc_update_threads (procinfo *pi) |
proc_iterate_over_threads (pi, proc_delete_dead_threads, NULL); |
- /* Unixware |
- |
- Note: this brute-force method is the only way I know of to |
- accomplish this task on Unixware. This method will also work on |
- Solaris 2.6 and 2.7. There is a much simpler and more elegant |
- way to do this on Solaris, but the margins of this manuscript are |
- too small to write it here... ;-) */ |
+ /* Note: this brute-force method was originally devised for Unixware |
+ (support removed since), and will also work on Solaris 2.6 and |
+ 2.7. The original comment mentioned the existence of a much |
+ simpler and more elegant way to do this on Solaris, but didn't |
+ point out what that was. */ |
strcpy (pathname, pi->pathname); |
strcat (pathname, "/lwp"); |
@@ -3109,10 +3071,10 @@ procfs_attach (struct target_ops *ops, char *args, int from_tty) |
} |
static void |
-procfs_detach (struct target_ops *ops, char *args, int from_tty) |
+procfs_detach (struct target_ops *ops, const char *args, int from_tty) |
{ |
int sig = 0; |
- int pid = PIDGET (inferior_ptid); |
+ int pid = ptid_get_pid (inferior_ptid); |
if (args) |
sig = atoi (args); |
@@ -3145,14 +3107,14 @@ do_attach (ptid_t ptid) |
int fail; |
int lwpid; |
- if ((pi = create_procinfo (PIDGET (ptid), 0)) == NULL) |
+ if ((pi = create_procinfo (ptid_get_pid (ptid), 0)) == NULL) |
perror (_("procfs: out of memory in 'attach'")); |
if (!open_procinfo_files (pi, FD_CTL)) |
{ |
fprintf_filtered (gdb_stderr, "procfs:%d -- ", __LINE__); |
sprintf (errmsg, "do_attach: couldn't open /proc file for process %d", |
- PIDGET (ptid)); |
+ ptid_get_pid (ptid)); |
dead_procinfo (pi, errmsg, NOKILL); |
} |
@@ -3201,7 +3163,7 @@ do_attach (ptid_t ptid) |
create_procinfo (pi->pid, lwpid); |
/* Add it to gdb's thread list. */ |
- ptid = MERGEPID (pi->pid, lwpid); |
+ ptid = ptid_build (pi->pid, lwpid, 0); |
add_thread (ptid); |
return ptid; |
@@ -3213,7 +3175,8 @@ do_detach (int signo) |
procinfo *pi; |
/* Find procinfo for the main process. */ |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); /* FIXME: threads */ |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), |
+ 0); /* FIXME: threads */ |
if (signo) |
if (!proc_set_current_signal (pi, signo)) |
proc_warn (pi, "do_detach, set_current_signal", __LINE__); |
@@ -3271,8 +3234,8 @@ procfs_fetch_registers (struct target_ops *ops, |
{ |
gdb_gregset_t *gregs; |
procinfo *pi; |
- int pid = PIDGET (inferior_ptid); |
- int tid = TIDGET (inferior_ptid); |
+ int pid = ptid_get_pid (inferior_ptid); |
+ int tid = ptid_get_lwp (inferior_ptid); |
struct gdbarch *gdbarch = get_regcache_arch (regcache); |
pi = find_procinfo_or_die (pid, tid); |
@@ -3320,8 +3283,8 @@ procfs_store_registers (struct target_ops *ops, |
{ |
gdb_gregset_t *gregs; |
procinfo *pi; |
- int pid = PIDGET (inferior_ptid); |
- int tid = TIDGET (inferior_ptid); |
+ int pid = ptid_get_pid (inferior_ptid); |
+ int tid = ptid_get_lwp (inferior_ptid); |
struct gdbarch *gdbarch = get_regcache_arch (regcache); |
pi = find_procinfo_or_die (pid, tid); |
@@ -3433,7 +3396,7 @@ remove_dbx_link_breakpoint (void) |
if (dbx_link_bpt_addr == 0) |
return; |
- if (deprecated_remove_raw_breakpoint (target_gdbarch, dbx_link_bpt) != 0) |
+ if (deprecated_remove_raw_breakpoint (target_gdbarch (), dbx_link_bpt) != 0) |
warning (_("Unable to remove __dbx_link breakpoint.")); |
dbx_link_bpt_addr = 0; |
@@ -3486,7 +3449,7 @@ insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored) |
long storage_needed; |
CORE_ADDR sym_addr; |
- abfd = bfd_fdopenr ("unamed", 0, fd); |
+ abfd = gdb_bfd_fdopenr ("unamed", 0, fd); |
if (abfd == NULL) |
{ |
warning (_("Failed to create a bfd: %s."), bfd_errmsg (bfd_get_error ())); |
@@ -3497,7 +3460,7 @@ insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored) |
{ |
/* Not the correct format, so we can not possibly find the dbx_link |
symbol in it. */ |
- bfd_close (abfd); |
+ gdb_bfd_unref (abfd); |
return 0; |
} |
@@ -3506,19 +3469,19 @@ insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored) |
{ |
/* Insert the breakpoint. */ |
dbx_link_bpt_addr = sym_addr; |
- dbx_link_bpt = deprecated_insert_raw_breakpoint (target_gdbarch, NULL, |
+ dbx_link_bpt = deprecated_insert_raw_breakpoint (target_gdbarch (), NULL, |
sym_addr); |
if (dbx_link_bpt == NULL) |
{ |
warning (_("Failed to insert dbx_link breakpoint.")); |
- bfd_close (abfd); |
+ gdb_bfd_unref (abfd); |
return 0; |
} |
- bfd_close (abfd); |
+ gdb_bfd_unref (abfd); |
return 1; |
} |
- bfd_close (abfd); |
+ gdb_bfd_unref (abfd); |
return 0; |
} |
@@ -3622,7 +3585,7 @@ wait_again: |
retval = pid_to_ptid (-1); |
/* Find procinfo for main process. */ |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
if (pi) |
{ |
/* We must assume that the status is stale now... */ |
@@ -3648,10 +3611,11 @@ wait_again: |
/* /proc file not found; presumably child has terminated. */ |
wait_retval = wait (&wstat); /* "wait" for the child's exit. */ |
- if (wait_retval != PIDGET (inferior_ptid)) /* wrong child? */ |
+ /* Wrong child? */ |
+ if (wait_retval != ptid_get_pid (inferior_ptid)) |
error (_("procfs: couldn't stop " |
"process %d: wait returned %d."), |
- PIDGET (inferior_ptid), wait_retval); |
+ ptid_get_pid (inferior_ptid), wait_retval); |
/* FIXME: might I not just use waitpid? |
Or try find_procinfo to see if I know about this child? */ |
retval = pid_to_ptid (wait_retval); |
@@ -3695,7 +3659,7 @@ wait_again: |
/* The 'pid' we will return to GDB is composed of |
the process ID plus the lwp ID. */ |
- retval = MERGEPID (pi->pid, proc_get_current_thread (pi)); |
+ retval = ptid_build (pi->pid, proc_get_current_thread (pi), 0); |
switch (why) { |
case PR_SIGNALLED: |
@@ -3831,7 +3795,7 @@ wait_again: |
if (!find_procinfo (pi->pid, temp_tid)) |
create_procinfo (pi->pid, temp_tid); |
- temp_ptid = MERGEPID (pi->pid, temp_tid); |
+ temp_ptid = ptid_build (pi->pid, temp_tid, 0); |
/* If not in GDB's thread list, add it. */ |
if (!in_thread_list (temp_ptid)) |
add_thread (temp_ptid); |
@@ -3901,7 +3865,7 @@ wait_again: |
create_procinfo (pi->pid, temp_tid); |
/* If not in GDB's thread list, add it. */ |
- temp_ptid = MERGEPID (pi->pid, temp_tid); |
+ temp_ptid = ptid_build (pi->pid, temp_tid, 0); |
if (!in_thread_list (temp_ptid)) |
add_thread (temp_ptid); |
@@ -3980,7 +3944,7 @@ wait_again: |
} |
/* Got this far without error: If retval isn't in the |
threads database, add it. */ |
- if (PIDGET (retval) > 0 && |
+ if (ptid_get_pid (retval) > 0 && |
!ptid_equal (retval, inferior_ptid) && |
!in_thread_list (retval)) |
{ |
@@ -3988,8 +3952,10 @@ wait_again: |
GDB's list and to our own. If we don't create a |
procinfo, resume may be unhappy later. */ |
add_thread (retval); |
- if (find_procinfo (PIDGET (retval), TIDGET (retval)) == NULL) |
- create_procinfo (PIDGET (retval), TIDGET (retval)); |
+ if (find_procinfo (ptid_get_pid (retval), |
+ ptid_get_lwp (retval)) == NULL) |
+ create_procinfo (ptid_get_pid (retval), |
+ ptid_get_lwp (retval)); |
} |
} |
else /* Flags do not indicate STOPPED. */ |
@@ -4061,7 +4027,7 @@ procfs_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int dowrite, |
int nbytes = 0; |
/* Find procinfo for main process. */ |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
if (pi->as_fd == 0 && |
open_procinfo_files (pi, FD_AS) == 0) |
{ |
@@ -4121,7 +4087,7 @@ invalidate_cache (procinfo *parent, procinfo *pi, void *ptr) |
if (!proc_set_gregs (pi)) /* flush gregs cache */ |
proc_warn (pi, "target_resume, set_gregs", |
__LINE__); |
- if (gdbarch_fp0_regnum (target_gdbarch) >= 0) |
+ if (gdbarch_fp0_regnum (target_gdbarch ()) >= 0) |
if (pi->fpregs_dirty) |
if (parent == NULL || |
proc_get_current_thread (parent) != pi->tid) |
@@ -4204,7 +4170,7 @@ procfs_resume (struct target_ops *ops, |
to proc_run_process (for use in the prrun struct by ioctl). */ |
/* Find procinfo for main process. */ |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
/* First cut: ignore pid argument. */ |
errno = 0; |
@@ -4224,11 +4190,11 @@ procfs_resume (struct target_ops *ops, |
/* Void the process procinfo's caches. */ |
invalidate_cache (NULL, pi, NULL); |
- if (PIDGET (ptid) != -1) |
+ if (ptid_get_pid (ptid) != -1) |
{ |
/* Resume a specific thread, presumably suppressing the |
others. */ |
- thread = find_procinfo (PIDGET (ptid), TIDGET (ptid)); |
+ thread = find_procinfo (ptid_get_pid (ptid), ptid_get_lwp (ptid)); |
if (thread != NULL) |
{ |
if (thread->tid != 0) |
@@ -4266,7 +4232,7 @@ static void |
procfs_pass_signals (int numsigs, unsigned char *pass_signals) |
{ |
gdb_sigset_t signals; |
- procinfo *pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ procinfo *pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
int signo; |
prfillset (&signals); |
@@ -4373,7 +4339,7 @@ procfs_kill_inferior (struct target_ops *ops) |
if (!ptid_equal (inferior_ptid, null_ptid)) /* ? */ |
{ |
/* Find procinfo for main process. */ |
- procinfo *pi = find_procinfo (PIDGET (inferior_ptid), 0); |
+ procinfo *pi = find_procinfo (ptid_get_pid (inferior_ptid), 0); |
if (pi) |
unconditionally_kill_inferior (pi); |
@@ -4391,7 +4357,7 @@ procfs_mourn_inferior (struct target_ops *ops) |
if (!ptid_equal (inferior_ptid, null_ptid)) |
{ |
/* Find procinfo for main process. */ |
- pi = find_procinfo (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo (ptid_get_pid (inferior_ptid), 0); |
if (pi) |
destroy_procinfo (pi); |
} |
@@ -4399,7 +4365,7 @@ procfs_mourn_inferior (struct target_ops *ops) |
if (dbx_link_bpt != NULL) |
{ |
- deprecated_remove_raw_breakpoint (target_gdbarch, dbx_link_bpt); |
+ deprecated_remove_raw_breakpoint (target_gdbarch (), dbx_link_bpt); |
dbx_link_bpt_addr = 0; |
dbx_link_bpt = NULL; |
} |
@@ -4483,10 +4449,8 @@ procfs_init_inferior (struct target_ops *ops, int pid) |
this point, but it didn't have any lwp info yet. Notify the core |
about it. This changes inferior_ptid as well. */ |
thread_change_ptid (pid_to_ptid (pid), |
- MERGEPID (pid, lwpid)); |
+ ptid_build (pid, lwpid, 0)); |
- /* Typically two, one trap to exec the shell, one to exec the |
- program being debugged. Defined by "inferior.h". */ |
startup_inferior (START_INFERIOR_TRAPS_EXPECTED); |
#ifdef SYS_syssgi |
@@ -4736,8 +4700,8 @@ procfs_inferior_created (struct target_ops *ops, int from_tty) |
if (current_inferior ()->attach_flag || !target_can_run (¤t_target)) |
return; |
- proc_trace_syscalls_1 (find_procinfo_or_die (PIDGET (inferior_ptid), 0), |
- SYS_syssgi, PR_SYSEXIT, FLAG_RESET, 0); |
+ proc_trace_syscalls_1 (find_procinfo_or_die (ptid_get_pid (inferior_ptid), |
+ 0), SYS_syssgi, PR_SYSEXIT, FLAG_RESET, 0); |
#endif |
} |
@@ -4746,7 +4710,7 @@ procfs_inferior_created (struct target_ops *ops, int from_tty) |
static int |
procfs_notice_thread (procinfo *pi, procinfo *thread, void *ptr) |
{ |
- ptid_t gdb_threadid = MERGEPID (pi->pid, thread->tid); |
+ ptid_t gdb_threadid = ptid_build (pi->pid, thread->tid, 0); |
if (!in_thread_list (gdb_threadid) || is_exited (gdb_threadid)) |
add_thread (gdb_threadid); |
@@ -4763,7 +4727,7 @@ procfs_find_new_threads (struct target_ops *ops) |
procinfo *pi; |
/* Find procinfo for main process. */ |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
proc_update_threads (pi); |
proc_iterate_over_threads (pi, procfs_notice_thread, NULL); |
} |
@@ -4778,8 +4742,8 @@ procfs_thread_alive (struct target_ops *ops, ptid_t ptid) |
int proc, thread; |
procinfo *pi; |
- proc = PIDGET (ptid); |
- thread = TIDGET (ptid); |
+ proc = ptid_get_pid (ptid); |
+ thread = ptid_get_lwp (ptid); |
/* If I don't know it, it ain't alive! */ |
if ((pi = find_procinfo (proc, thread)) == NULL) |
return 0; |
@@ -4804,10 +4768,10 @@ procfs_pid_to_str (struct target_ops *ops, ptid_t ptid) |
{ |
static char buf[80]; |
- if (TIDGET (ptid) == 0) |
- sprintf (buf, "process %d", PIDGET (ptid)); |
+ if (ptid_get_lwp (ptid) == 0) |
+ sprintf (buf, "process %d", ptid_get_pid (ptid)); |
else |
- sprintf (buf, "LWP %ld", TIDGET (ptid)); |
+ sprintf (buf, "LWP %ld", ptid_get_lwp (ptid)); |
return buf; |
} |
@@ -4818,13 +4782,13 @@ static int |
procfs_set_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rwflag, |
int after) |
{ |
-#ifndef UNIXWARE |
#ifndef AIX5 |
int pflags = 0; |
procinfo *pi; |
- pi = find_procinfo_or_die (PIDGET (ptid) == -1 ? |
- PIDGET (inferior_ptid) : PIDGET (ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (ptid) == -1 ? |
+ ptid_get_pid (inferior_ptid) : ptid_get_pid (ptid), |
+ 0); |
/* Translate from GDB's flags to /proc's. */ |
if (len > 0) /* len == 0 means delete watchpoint. */ |
@@ -4860,7 +4824,6 @@ procfs_set_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rwflag, |
proc_error (pi, "set_watchpoint", __LINE__); |
} |
#endif /* AIX5 */ |
-#endif /* UNIXWARE */ |
return 0; |
} |
@@ -4884,7 +4847,7 @@ procfs_can_use_hw_breakpoint (int type, int cnt, int othertype) |
procfs_address_to_host_pointer will reveal that an internal error |
will be generated when the host and target pointer sizes are |
different. */ |
- struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr; |
+ struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr; |
if (sizeof (void *) != TYPE_LENGTH (ptr_type)) |
return 0; |
@@ -4902,7 +4865,7 @@ procfs_stopped_by_watchpoint (void) |
{ |
procinfo *pi; |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
if (proc_flags (pi) & (PR_STOPPED | PR_ISTOP)) |
{ |
@@ -4932,7 +4895,7 @@ procfs_stopped_data_address (struct target_ops *targ, CORE_ADDR *addr) |
{ |
procinfo *pi; |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
return proc_watchpoint_address (pi, addr); |
} |
@@ -4941,7 +4904,7 @@ procfs_insert_watchpoint (CORE_ADDR addr, int len, int type, |
struct expression *cond) |
{ |
if (!target_have_steppable_watchpoint |
- && !gdbarch_have_nonsteppable_watchpoint (target_gdbarch)) |
+ && !gdbarch_have_nonsteppable_watchpoint (target_gdbarch ())) |
{ |
/* When a hardware watchpoint fires off the PC will be left at |
the instruction following the one which caused the |
@@ -5074,6 +5037,7 @@ find_memory_regions_callback (struct prmap *map, |
(map->pr_mflags & MA_READ) != 0, |
(map->pr_mflags & MA_WRITE) != 0, |
(map->pr_mflags & MA_EXEC) != 0, |
+ 1, /* MODIFIED is unknown, pass it as true. */ |
data); |
} |
@@ -5092,7 +5056,7 @@ find_memory_regions_callback (struct prmap *map, |
static int |
proc_find_memory_regions (find_memory_region_ftype func, void *data) |
{ |
- procinfo *pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ procinfo *pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
return iterate_over_mappings (pi, func, data, |
find_memory_regions_callback); |
@@ -5140,7 +5104,7 @@ info_mappings_callback (struct prmap *map, find_memory_region_ftype ignore, |
pr_off = map->pr_off; |
#endif |
- if (gdbarch_addr_bit (target_gdbarch) == 32) |
+ if (gdbarch_addr_bit (target_gdbarch ()) == 32) |
printf_filtered ("\t%#10lx %#10lx %#10lx %#10x %7s\n", |
(unsigned long) map->pr_vaddr, |
(unsigned long) map->pr_vaddr + map->pr_size - 1, |
@@ -5167,7 +5131,7 @@ info_proc_mappings (procinfo *pi, int summary) |
return; /* No output for summary mode. */ |
printf_filtered (_("Mapped address spaces:\n\n")); |
- if (gdbarch_ptr_bit (target_gdbarch) == 32) |
+ if (gdbarch_ptr_bit (target_gdbarch ()) == 32) |
printf_filtered ("\t%10s %10s %10s %10s %7s\n", |
"Start Addr", |
" End Addr", |
@@ -5236,7 +5200,7 @@ procfs_info_proc (struct target_ops *ops, char *args, |
argv++; |
} |
if (pid == 0) |
- pid = PIDGET (inferior_ptid); |
+ pid = ptid_get_pid (inferior_ptid); |
if (pid == 0) |
error (_("No current process: you must name one.")); |
else |
@@ -5328,13 +5292,13 @@ proc_trace_syscalls (char *args, int from_tty, int entry_or_exit, int mode) |
{ |
procinfo *pi; |
- if (PIDGET (inferior_ptid) <= 0) |
+ if (ptid_get_pid (inferior_ptid) <= 0) |
error (_("you must be debugging a process to use this command.")); |
if (args == NULL || args[0] == 0) |
error_no_arg (_("system call to trace")); |
- pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
if (isdigit (args[0])) |
{ |
const int syscallnum = atoi (args); |
@@ -5405,8 +5369,8 @@ procfs_first_available (void) |
} |
/* =================== GCORE .NOTE "MODULE" =================== */ |
-#if defined (UNIXWARE) || defined (PIOCOPENLWP) || defined (PCAGENT) |
-/* gcore only implemented on solaris and unixware (so far) */ |
+#if defined (PIOCOPENLWP) || defined (PCAGENT) |
+/* gcore only implemented on solaris (so far) */ |
static char * |
procfs_do_thread_registers (bfd *obfd, ptid_t ptid, |
@@ -5419,7 +5383,7 @@ procfs_do_thread_registers (bfd *obfd, ptid_t ptid, |
unsigned long merged_pid; |
struct cleanup *old_chain; |
- merged_pid = TIDGET (ptid) << 16 | PIDGET (ptid); |
+ merged_pid = ptid_get_lwp (ptid) << 16 | ptid_get_pid (ptid); |
/* This part is the old method for fetching registers. |
It should be replaced by the newer one using regsets |
@@ -5472,7 +5436,7 @@ procfs_corefile_thread_callback (procinfo *pi, procinfo *thread, void *data) |
if (pi != NULL) |
{ |
- ptid_t ptid = MERGEPID (pi->pid, thread->tid); |
+ ptid_t ptid = ptid_build (pi->pid, thread->tid, 0); |
args->note_data = procfs_do_thread_registers (args->obfd, ptid, |
args->note_data, |
@@ -5512,7 +5476,7 @@ procfs_make_note_section (bfd *obfd, int *note_size) |
gdb_fpregset_t fpregs; |
char fname[16] = {'\0'}; |
char psargs[80] = {'\0'}; |
- procinfo *pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0); |
+ procinfo *pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid), 0); |
char *note_data = NULL; |
char *inf_args; |
struct procfs_corefile_thread_data thread_args; |
@@ -5546,10 +5510,10 @@ procfs_make_note_section (bfd *obfd, int *note_size) |
stop_signal = find_stop_signal (); |
-#ifdef UNIXWARE |
+#ifdef NEW_PROC_API |
fill_gregset (get_current_regcache (), &gregs, -1); |
note_data = elfcore_write_pstatus (obfd, note_data, note_size, |
- PIDGET (inferior_ptid), |
+ ptid_get_pid (inferior_ptid), |
stop_signal, &gregs); |
#endif |
@@ -5576,12 +5540,12 @@ procfs_make_note_section (bfd *obfd, int *note_size) |
make_cleanup (xfree, note_data); |
return note_data; |
} |
-#else /* !(Solaris or Unixware) */ |
+#else /* !Solaris */ |
static char * |
procfs_make_note_section (bfd *obfd, int *note_size) |
{ |
error (_("gcore not implemented for this host.")); |
return NULL; /* lint */ |
} |
-#endif /* Solaris or Unixware */ |
+#endif /* Solaris */ |
/* =================== END GCORE .NOTE "MODULE" =================== */ |