This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ptid from core section


Pedro Alves wrote:
On Friday 05 June 2009 15:04:19, Aleksandar Ristovski wrote:

What are the circumstances under which core_gdbarch would not be found? If we are opening a core from a system gdb was not configured for?

E.g., we still have targets using the deprecated_add_core_fns
mechanism, and AFAICS, usually those don't usually install
gdbarch sniffers for the core bfd's they handle. E.g.,

Understood and agreed.


Here is a new patch. I made sure it works even if core_gdbarch is NULL. I also fixed my previous patch for target signal by checking if there is a core_gdbarch.

Thanks,

--
Aleksandar Ristovski
QNX Software Systems

Change log remained the same, but repeated for reference:

2009-06-05 Aleksandar Ristovski <aristovski@qnx.com>

	* corelow.c (add_to_thread_list): Use new
	gdbarch_ptid_from_core_section_name.
	(get_core_register_section): Use new
	gdbarch_core_section_name_from_ptid.

	* gdbarch.sh (core_reg_section_encodes_pid): Deleted.
	(ptid_from_core_section_name)
	(core_section_name_from_ptid): New gdbarch callbacks.
	(default_ptid_from_core_section_name)
	(default_core_section_name_from_ptid): New functions.
	* gdbarch.h, gdbarch.c: Regenerate.

* sol2-tdep.h (sol2_ptid_from_core_section_name)
(sol2_core_section_name_from_ptid): New declarations.
* sol2-tdep.c (sol2_ptid_from_core_section_name)
(sol2_core_section_name_from_ptid): New functions.
* amd64-sol2-tdep.c (amd64_sol2_init_abi): Register the two functions.
* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Likewise.
* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Likewise.
* i386-sol2-tdep.c (i386_sol2_init_abi): Likewise.


Index: gdb/corelow.c
===================================================================
RCS file: /cvs/src/src/gdb/corelow.c,v
retrieving revision 1.85
diff -u -p -r1.85 corelow.c
--- gdb/corelow.c	3 Jun 2009 18:50:36 -0000	1.85
+++ gdb/corelow.c	5 Jun 2009 14:49:27 -0000
@@ -239,25 +239,23 @@ static void
 add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
 {
   ptid_t ptid;
-  int thread_id;
   asection *reg_sect = (asection *) reg_sect_arg;
 
   if (strncmp (bfd_section_name (abfd, asect), ".reg/", 5) != 0)
     return;
 
-  thread_id = atoi (bfd_section_name (abfd, asect) + 5);
-
-  if (core_gdbarch
-      && gdbarch_core_reg_section_encodes_pid (core_gdbarch))
+  if (core_gdbarch != NULL)
+    ptid = gdbarch_ptid_from_core_section_name (core_gdbarch, abfd,
+						bfd_section_name (abfd, asect));
+  else
     {
-      uint32_t merged_pid = thread_id;
-      ptid = ptid_build (merged_pid & 0xffff,
-			 merged_pid >> 16, 0);
+      int thread_id = atoi (bfd_section_name (abfd, asect) + 5);
+
+      ptid = ptid_build (ptid_get_pid (inferior_ptid), thread_id, 0);
     }
-  else
-    ptid = ptid_build (ptid_get_pid (inferior_ptid), thread_id, 0);
 
-  if (ptid_get_lwp (inferior_ptid) == 0)
+  if (ptid_get_tid (inferior_ptid) == 0
+      && ptid_get_lwp (inferior_ptid) == 0)
     /* The main thread has already been added before getting here, and
        this is the first time we hear about a thread id.  Assume this
        is the main thread.  */
@@ -421,7 +419,9 @@ core_open (char *filename, int from_tty)
        name ..._from_host(). */
     printf_filtered (_("Program terminated with signal %d, %s.\n"), siggy,
 		     target_signal_to_string (
-		       gdbarch_target_signal_from_host (core_gdbarch, siggy)));
+		       core_gdbarch ? 
+			  gdbarch_target_signal_from_host (core_gdbarch, siggy)
+			  : siggy));
 
   /* Fetch all registers from core file.  */
   target_fetch_registers (get_current_regcache (), -1);
@@ -464,11 +464,11 @@ deprecated_core_resize_section_table (in
    them to core_vec->core_read_registers, as the register set numbered
    WHICH.
 
-   If inferior_ptid's lwp member is zero, do the single-threaded
-   thing: look for a section named NAME.  If inferior_ptid's lwp
-   member is non-zero, do the multi-threaded thing: look for a section
-   named "NAME/LWP", where LWP is the shortest ASCII decimal
-   representation of inferior_ptid's lwp member.
+   Architecture supplied function determines if NAME needs to be encoded
+   with process/thread information.  Many architectures will, depending
+   on inferior_ptid, append "/LWP" or "/TID" where LWP and TID are the shortest
+   ASCII decimal representation of inferior_ptid's lwp/tid member.  Some
+   architectures however, encode both process id and lwp/tid.
 
    HUMAN_NAME is a human-readable name for the kind of registers the
    NAME section contains, for use in error messages.
@@ -490,16 +490,11 @@ get_core_register_section (struct regcac
 
   xfree (section_name);
 
-  if (core_gdbarch
-      && gdbarch_core_reg_section_encodes_pid (core_gdbarch))
-    {
-      uint32_t merged_pid;
-
-      merged_pid = ptid_get_lwp (inferior_ptid);
-      merged_pid = merged_pid << 16 | ptid_get_pid (inferior_ptid);
-
-      section_name = xstrprintf ("%s/%s", name, plongest (merged_pid));
-    }
+  if (core_gdbarch != NULL)
+    section_name = gdbarch_core_section_name_from_ptid (core_gdbarch,
+							core_bfd,
+							name,
+							inferior_ptid);
   else if (ptid_get_lwp (inferior_ptid))
     section_name = xstrprintf ("%s/%ld", name, ptid_get_lwp (inferior_ptid));
   else
Index: gdb/gdbarch.sh
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.sh,v
retrieving revision 1.489
diff -u -p -r1.489 gdbarch.sh
--- gdb/gdbarch.sh	19 May 2009 00:23:49 -0000	1.489
+++ gdb/gdbarch.sh	5 Jun 2009 14:49:27 -0000
@@ -602,10 +602,14 @@ M:const struct regset *:regset_from_core
 
 # When creating core dumps, some systems encode the PID in addition
 # to the LWP id in core file register section names.  In those cases, the
-# "XXX" in ".reg/XXX" is encoded as [LWPID << 16 | PID].  This setting
-# is set to true for such architectures; false if "XXX" represents an LWP
-# or thread id with no special encoding.
-v:int:core_reg_section_encodes_pid:::0:0::0
+# "XXX" in ".reg/XXX" is encoded as [LWPID << 16 | PID].  Others have thread_id
+# but no LWP.  This let's different architectures provide their own
+# ptid for a given section.
+m:ptid_t:ptid_from_core_section_name:const bfd *abfd, const char *name:abfd, name::default_ptid_from_core_section_name::0
+# Mirror function of ptid_from_core_section_name, returns architecture-specific
+# section name given NAME base.  For example if NAME is ".reg" resulting
+# name may be ".reg/42" where 42 is thread ID, or LWP or [LWPID << 16 | PID].
+m:char *:core_section_name_from_ptid:const bfd *abfd, const char *name, ptid_t ptid:abfd, name, ptid::default_core_section_name_from_ptid::0
 
 # Supported register notes in a core file.
 v:struct core_regset_section *:core_regset_sections:const char *name, int len::::::host_address_to_string (gdbarch->core_regset_sections)
@@ -1188,6 +1192,13 @@ cat <<EOF
 /* Static function declarations */
 
 static void alloc_gdbarch_data (struct gdbarch *);
+static ptid_t default_ptid_from_core_section_name (struct gdbarch *,
+						   const bfd *,
+						   const char *);
+static char *default_core_section_name_from_ptid (struct gdbarch *,
+						  const bfd *,
+						  const char *name,
+						  ptid_t);
 
 /* Non-zero if we want to trace architecture code.  */
 
@@ -1663,6 +1674,35 @@ done
 # All the trailing guff
 cat <<EOF
 
+static ptid_t
+default_ptid_from_core_section_name (struct gdbarch *gdbarch, const bfd *abfd,
+				     const char *name)
+{
+  int thread_id;
+  ptid_t ptid;
+  const char *pos;
+
+  pos = strchr (name, '/'); 
+  if (pos == NULL)
+    pos = name + strlen (name);
+  else
+    pos++;
+  thread_id = atoi (pos);
+  ptid = ptid_build (ptid_get_pid (inferior_ptid), thread_id, 0);
+  return ptid;
+}
+
+static char *
+default_core_section_name_from_ptid (struct gdbarch *gdbarch, 
+				     const bfd *abfd,
+				     const char *name,
+				     ptid_t ptid)
+{
+  if (ptid_get_lwp (ptid))
+    return xstrprintf ("%s/%ld", name, ptid_get_lwp (ptid));
+  else
+    return xstrdup (name);
+}
 
 /* Keep a registry of per-architecture data-pointers required by GDB
    modules. */
Index: gdb/gdbarch.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.h,v
retrieving revision 1.397
diff -u -p -r1.397 gdbarch.h
--- gdb/gdbarch.h	19 May 2009 00:23:49 -0000	1.397
+++ gdb/gdbarch.h	5 Jun 2009 14:49:28 -0000
@@ -651,12 +651,21 @@ extern void set_gdbarch_regset_from_core
 
 /* When creating core dumps, some systems encode the PID in addition
    to the LWP id in core file register section names.  In those cases, the
-   "XXX" in ".reg/XXX" is encoded as [LWPID << 16 | PID].  This setting
-   is set to true for such architectures; false if "XXX" represents an LWP
-   or thread id with no special encoding. */
-
-extern int gdbarch_core_reg_section_encodes_pid (struct gdbarch *gdbarch);
-extern void set_gdbarch_core_reg_section_encodes_pid (struct gdbarch *gdbarch, int core_reg_section_encodes_pid);
+   "XXX" in ".reg/XXX" is encoded as [LWPID << 16 | PID].  Others have thread_id
+   but no LWP.  This let's different architectures provide their own
+   ptid for a given section. */
+
+typedef ptid_t (gdbarch_ptid_from_core_section_name_ftype) (struct gdbarch *gdbarch, const bfd *abfd, const char *name);
+extern ptid_t gdbarch_ptid_from_core_section_name (struct gdbarch *gdbarch, const bfd *abfd, const char *name);
+extern void set_gdbarch_ptid_from_core_section_name (struct gdbarch *gdbarch, gdbarch_ptid_from_core_section_name_ftype *ptid_from_core_section_name);
+
+/* Mirror function of ptid_from_core_section_name, returns architecture-specific
+   section name given NAME base.  For example if NAME is ".reg" resulting
+   name may be ".reg/42" where 42 is thread ID, or LWP or [LWPID << 16 | PID]. */
+
+typedef char * (gdbarch_core_section_name_from_ptid_ftype) (struct gdbarch *gdbarch, const bfd *abfd, const char *name, ptid_t ptid);
+extern char * gdbarch_core_section_name_from_ptid (struct gdbarch *gdbarch, const bfd *abfd, const char *name, ptid_t ptid);
+extern void set_gdbarch_core_section_name_from_ptid (struct gdbarch *gdbarch, gdbarch_core_section_name_from_ptid_ftype *core_section_name_from_ptid);
 
 /* Supported register notes in a core file. */
 
Index: gdb/gdbarch.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.c,v
retrieving revision 1.446
diff -u -p -r1.446 gdbarch.c
--- gdb/gdbarch.c	19 May 2009 00:23:49 -0000	1.446
+++ gdb/gdbarch.c	5 Jun 2009 14:49:28 -0000
@@ -53,6 +53,13 @@
 /* Static function declarations */
 
 static void alloc_gdbarch_data (struct gdbarch *);
+static ptid_t default_ptid_from_core_section_name (struct gdbarch *,
+						   const bfd *,
+						   const char *);
+static char *default_core_section_name_from_ptid (struct gdbarch *,
+						  const bfd *,
+						  const char *name,
+						  ptid_t);
 
 /* Non-zero if we want to trace architecture code.  */
 
@@ -223,7 +230,8 @@ struct gdbarch
   gdbarch_register_reggroup_p_ftype *register_reggroup_p;
   gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument;
   gdbarch_regset_from_core_section_ftype *regset_from_core_section;
-  int core_reg_section_encodes_pid;
+  gdbarch_ptid_from_core_section_name_ftype *ptid_from_core_section_name;
+  gdbarch_core_section_name_from_ptid_ftype *core_section_name_from_ptid;
   struct core_regset_section * core_regset_sections;
   gdbarch_core_xfer_shared_libraries_ftype *core_xfer_shared_libraries;
   gdbarch_core_pid_to_str_ftype *core_pid_to_str;
@@ -360,7 +368,8 @@ struct gdbarch startup_gdbarch =
   default_register_reggroup_p,  /* register_reggroup_p */
   0,  /* fetch_pointer_argument */
   0,  /* regset_from_core_section */
-  0,  /* core_reg_section_encodes_pid */
+  default_ptid_from_core_section_name,  /* ptid_from_core_section_name */
+  default_core_section_name_from_ptid,  /* core_section_name_from_ptid */
   0,  /* core_regset_sections */
   0,  /* core_xfer_shared_libraries */
   0,  /* core_pid_to_str */
@@ -462,6 +471,8 @@ gdbarch_alloc (const struct gdbarch_info
   gdbarch->elf_make_msymbol_special = default_elf_make_msymbol_special;
   gdbarch->coff_make_msymbol_special = default_coff_make_msymbol_special;
   gdbarch->register_reggroup_p = default_register_reggroup_p;
+  gdbarch->ptid_from_core_section_name = default_ptid_from_core_section_name;
+  gdbarch->core_section_name_from_ptid = default_core_section_name_from_ptid;
   gdbarch->displaced_step_fixup = NULL;
   gdbarch->displaced_step_free_closure = NULL;
   gdbarch->displaced_step_location = NULL;
@@ -617,7 +628,8 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of register_reggroup_p, invalid_p == 0 */
   /* Skip verify of fetch_pointer_argument, has predicate */
   /* Skip verify of regset_from_core_section, has predicate */
-  /* Skip verify of core_reg_section_encodes_pid, invalid_p == 0 */
+  /* Skip verify of ptid_from_core_section_name, invalid_p == 0 */
+  /* Skip verify of core_section_name_from_ptid, invalid_p == 0 */
   /* Skip verify of core_xfer_shared_libraries, has predicate */
   /* Skip verify of core_pid_to_str, has predicate */
   /* Skip verify of vtable_function_descriptors, invalid_p == 0 */
@@ -754,12 +766,12 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: core_read_description = <%s>\n",
                       host_address_to_string (gdbarch->core_read_description));
   fprintf_unfiltered (file,
-                      "gdbarch_dump: core_reg_section_encodes_pid = %s\n",
-                      plongest (gdbarch->core_reg_section_encodes_pid));
-  fprintf_unfiltered (file,
                       "gdbarch_dump: core_regset_sections = %s\n",
                       host_address_to_string (gdbarch->core_regset_sections));
   fprintf_unfiltered (file,
+                      "gdbarch_dump: core_section_name_from_ptid = <%s>\n",
+                      host_address_to_string (gdbarch->core_section_name_from_ptid));
+  fprintf_unfiltered (file,
                       "gdbarch_dump: gdbarch_core_xfer_shared_libraries_p() = %d\n",
                       gdbarch_core_xfer_shared_libraries_p (gdbarch));
   fprintf_unfiltered (file,
@@ -976,6 +988,9 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: pseudo_register_write = <%s>\n",
                       host_address_to_string (gdbarch->pseudo_register_write));
   fprintf_unfiltered (file,
+                      "gdbarch_dump: ptid_from_core_section_name = <%s>\n",
+                      host_address_to_string (gdbarch->ptid_from_core_section_name));
+  fprintf_unfiltered (file,
                       "gdbarch_dump: ptr_bit = %s\n",
                       plongest (gdbarch->ptr_bit));
   fprintf_unfiltered (file,
@@ -2929,21 +2944,38 @@ set_gdbarch_regset_from_core_section (st
   gdbarch->regset_from_core_section = regset_from_core_section;
 }
 
-int
-gdbarch_core_reg_section_encodes_pid (struct gdbarch *gdbarch)
+ptid_t
+gdbarch_ptid_from_core_section_name (struct gdbarch *gdbarch, const bfd *abfd, const char *name)
+{
+  gdb_assert (gdbarch != NULL);
+  gdb_assert (gdbarch->ptid_from_core_section_name != NULL);
+  if (gdbarch_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_ptid_from_core_section_name called\n");
+  return gdbarch->ptid_from_core_section_name (gdbarch, abfd, name);
+}
+
+void
+set_gdbarch_ptid_from_core_section_name (struct gdbarch *gdbarch,
+                                         gdbarch_ptid_from_core_section_name_ftype ptid_from_core_section_name)
+{
+  gdbarch->ptid_from_core_section_name = ptid_from_core_section_name;
+}
+
+char *
+gdbarch_core_section_name_from_ptid (struct gdbarch *gdbarch, const bfd *abfd, const char *name, ptid_t ptid)
 {
   gdb_assert (gdbarch != NULL);
-  /* Skip verify of core_reg_section_encodes_pid, invalid_p == 0 */
+  gdb_assert (gdbarch->core_section_name_from_ptid != NULL);
   if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_core_reg_section_encodes_pid called\n");
-  return gdbarch->core_reg_section_encodes_pid;
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_core_section_name_from_ptid called\n");
+  return gdbarch->core_section_name_from_ptid (gdbarch, abfd, name, ptid);
 }
 
 void
-set_gdbarch_core_reg_section_encodes_pid (struct gdbarch *gdbarch,
-                                          int core_reg_section_encodes_pid)
+set_gdbarch_core_section_name_from_ptid (struct gdbarch *gdbarch,
+                                         gdbarch_core_section_name_from_ptid_ftype core_section_name_from_ptid)
 {
-  gdbarch->core_reg_section_encodes_pid = core_reg_section_encodes_pid;
+  gdbarch->core_section_name_from_ptid = core_section_name_from_ptid;
 }
 
 struct core_regset_section *
@@ -3405,6 +3437,35 @@ set_gdbarch_has_global_breakpoints (stru
   gdbarch->has_global_breakpoints = has_global_breakpoints;
 }
 
+static ptid_t
+default_ptid_from_core_section_name (struct gdbarch *gdbarch, const bfd *abfd,
+				     const char *name)
+{
+  int thread_id;
+  ptid_t ptid;
+  const char *pos;
+
+  pos = strchr (name, '/'); 
+  if (pos == NULL)
+    pos = name + strlen (name);
+  else
+    pos++;
+  thread_id = atoi (pos);
+  ptid = ptid_build (ptid_get_pid (inferior_ptid), thread_id, 0);
+  return ptid;
+}
+
+static char *
+default_core_section_name_from_ptid (struct gdbarch *gdbarch, 
+				     const bfd *abfd,
+				     const char *name,
+				     ptid_t ptid)
+{
+  if (ptid_get_lwp (ptid))
+    return xstrprintf ("%s/%ld", name, ptid_get_lwp (ptid));
+  else
+    return xstrdup (name);
+}
 
 /* Keep a registry of per-architecture data-pointers required by GDB
    modules. */
Index: gdb/sol2-tdep.h
===================================================================
RCS file: /cvs/src/src/gdb/sol2-tdep.h,v
retrieving revision 1.6
diff -u -p -r1.6 sol2-tdep.h
--- gdb/sol2-tdep.h	23 Feb 2009 00:03:50 -0000	1.6
+++ gdb/sol2-tdep.h	5 Jun 2009 14:49:28 -0000
@@ -26,4 +26,11 @@ CORE_ADDR sol2_skip_solib_resolver (stru
 
 char *sol2_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid);
 
+ptid_t sol2_ptid_from_core_section_name (struct gdbarch *, const bfd *,
+					 const char *);
+
+char *sol2_core_section_name_from_ptid (struct gdbarch *, const bfd *,
+					const char *,
+					ptid_t);
+
 #endif /* sol2-tdep.h */
Index: gdb/sol2-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sol2-tdep.c,v
retrieving revision 1.8
diff -u -p -r1.8 sol2-tdep.c
--- gdb/sol2-tdep.c	23 Feb 2009 00:03:50 -0000	1.8
+++ gdb/sol2-tdep.c	5 Jun 2009 14:49:28 -0000
@@ -47,3 +47,35 @@ sol2_core_pid_to_str (struct gdbarch *gd
   xsnprintf (buf, sizeof buf, "LWP %ld", ptid_get_lwp (ptid));
   return buf;
 }
+
+
+ptid_t
+sol2_ptid_from_core_section_name (struct gdbarch *gdbarch, const bfd *abfd,
+				  const char *name)
+{
+  int thread_id;
+  const char *pos;
+
+  gdb_assert (name != NULL);
+  pos = strchr (name, '/');
+  if (pos == NULL)
+    pos = name + strlen (name);
+  else
+    pos++;
+  thread_id = (*pos) ? atoi (pos) : 0;
+  return ptid_build (thread_id & 0xffff, 0,
+		     thread_id >> 16);
+}
+
+char *
+sol2_core_section_name_from_ptid (struct gdbarch *gdbarch, const bfd *abfd,
+				  const char *name,
+				  ptid_t ptid)
+{
+  uint32_t merged_pid;
+
+  merged_pid = ptid_get_lwp (ptid);
+  merged_pid = merged_pid << 16 | ptid_get_pid (ptid);
+  return xstrprintf ("%s/%s", name, plongest (merged_pid));
+}
+
Index: gdb/amd64-sol2-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64-sol2-tdep.c,v
retrieving revision 1.10
diff -u -p -r1.10 amd64-sol2-tdep.c
--- gdb/amd64-sol2-tdep.c	23 Feb 2009 00:03:48 -0000	1.10
+++ gdb/amd64-sol2-tdep.c	5 Jun 2009 14:49:28 -0000
@@ -116,7 +116,10 @@ amd64_sol2_init_abi (struct gdbarch_info
 
   /* Solaris encodes the pid of the inferior in regset section
      names.  */
-  set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1);
+  set_gdbarch_ptid_from_core_section_name (gdbarch,
+					   sol2_ptid_from_core_section_name);
+  set_gdbarch_core_section_name_from_ptid (gdbarch,
+					   sol2_core_section_name_from_ptid);
 
   /* How to print LWP PTIDs from core files.  */
   set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
Index: gdb/sparc-sol2-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc-sol2-tdep.c,v
retrieving revision 1.20
diff -u -p -r1.20 sparc-sol2-tdep.c
--- gdb/sparc-sol2-tdep.c	23 Feb 2009 00:03:50 -0000	1.20
+++ gdb/sparc-sol2-tdep.c	5 Jun 2009 14:49:28 -0000
@@ -234,7 +234,10 @@ sparc32_sol2_init_abi (struct gdbarch_in
 
   /* Solaris encodes the pid of the inferior in regset section
      names.  */
-  set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1);
+  set_gdbarch_ptid_from_core_section_name (gdbarch,
+					   sol2_ptid_from_core_section_name);
+  set_gdbarch_core_section_name_from_ptid (gdbarch,
+					   sol2_core_section_name_from_ptid);
 
   /* How to print LWP PTIDs from core files.  */
   set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
Index: gdb/sparc64-sol2-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64-sol2-tdep.c,v
retrieving revision 1.19
diff -u -p -r1.19 sparc64-sol2-tdep.c
--- gdb/sparc64-sol2-tdep.c	23 Feb 2009 00:03:50 -0000	1.19
+++ gdb/sparc64-sol2-tdep.c	5 Jun 2009 14:49:28 -0000
@@ -183,7 +183,10 @@ sparc64_sol2_init_abi (struct gdbarch_in
 
   /* Solaris encodes the pid of the inferior in regset section
      names.  */
-  set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1);
+  set_gdbarch_ptid_from_core_section_name (gdbarch,
+					   sol2_ptid_from_core_section_name);
+  set_gdbarch_core_section_name_from_ptid (gdbarch,
+					   sol2_core_section_name_from_ptid);
 
   /* How to print LWP PTIDs from core files.  */
   set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
Index: gdb/i386-sol2-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-sol2-tdep.c,v
retrieving revision 1.28
diff -u -p -r1.28 i386-sol2-tdep.c
--- gdb/i386-sol2-tdep.c	23 Feb 2009 00:03:49 -0000	1.28
+++ gdb/i386-sol2-tdep.c	5 Jun 2009 14:49:28 -0000
@@ -138,7 +138,10 @@ i386_sol2_init_abi (struct gdbarch_info 
 
   /* Solaris encodes the pid of the inferior in regset section
      names.  */
-  set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1);
+  set_gdbarch_ptid_from_core_section_name (gdbarch,
+					   sol2_ptid_from_core_section_name);
+  set_gdbarch_core_section_name_from_ptid (gdbarch,
+					   sol2_core_section_name_from_ptid);
 
   /* How to print LWP PTIDs from core files.  */
   set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]