http://sourceware.org/ml/gdb-cvs/2010-08/msg00100.html ### src/gdb/ChangeLog 2010/08/18 02:24:47 1.12092 ### src/gdb/ChangeLog 2010/08/18 12:24:08 1.12093 ## -1,3 +1,20 @@ +2010-08-18 Pedro Alves + + PR corefile/8210 + + * corelow.c (add_to_thread_list): Don't use + gdbarch_core_reg_section_encodes_pid. Use bfd_core_file_pid. + (get_core_register_section): Don't use + gdbarch_core_reg_section_encodes_pid. + + * gdbarch.sh (core_reg_section_encodes_pid): Delete. + * gdbarch.h, gdbarch.c: Regenerate. + * amd64-sol2-tdep.c (amd64_sol2_init_abi): Don't set + gdbarch_core_reg_section_encodes_pid. + * i386-sol2-tdep.c (i386_sol2_init_abi): Ditto. + * sparc-sol2-tdep.c (sparc32_sol2_init_abi): Ditto. + * sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Ditto. + 2010-08-18 Yao Qi * MAINTAINERS : Add myself under Write After Approval. --- src/gdb/amd64-sol2-tdep.c 2010/01/01 07:31:29 1.11 +++ src/gdb/amd64-sol2-tdep.c 2010/08/18 12:24:12 1.12 @@ -114,10 +114,6 @@ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); - /* Solaris encodes the pid of the inferior in regset section - names. */ - set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1); - /* How to print LWP PTIDs from core files. */ set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str); } --- src/gdb/corelow.c 2010/08/04 15:27:56 1.102 +++ src/gdb/corelow.c 2010/08/18 12:24:12 1.103 @@ -252,29 +252,15 @@ core_tid = atoi (bfd_section_name (abfd, asect) + 5); - if (core_gdbarch - && gdbarch_core_reg_section_encodes_pid (core_gdbarch)) - { - uint32_t merged_pid = core_tid; - pid = merged_pid & 0xffff; - lwpid = merged_pid >> 16; - - /* This can happen on solaris core, for example, if we don't - find a NT_PSTATUS note in the core, but do find NT_LWPSTATUS - notes. */ - if (pid == 0) - { - core_has_fake_pid = 1; - pid = CORELOW_PID; - } - } - else + pid = bfd_core_file_pid (core_bfd); + if (pid == 0) { core_has_fake_pid = 1; pid = CORELOW_PID; - lwpid = core_tid; } + lwpid = core_tid; + if (current_inferior ()->pid == 0) inferior_appeared (current_inferior (), pid); @@ -520,21 +506,7 @@ xfree (section_name); - if (core_gdbarch - && gdbarch_core_reg_section_encodes_pid (core_gdbarch)) - { - uint32_t merged_pid; - int pid = ptid_get_pid (inferior_ptid); - - if (core_has_fake_pid) - pid = 0; - - merged_pid = ptid_get_lwp (inferior_ptid); - merged_pid = merged_pid << 16 | pid; - - section_name = xstrprintf ("%s/%s", name, plongest (merged_pid)); - } - else if (ptid_get_lwp (inferior_ptid)) + if (ptid_get_lwp (inferior_ptid)) section_name = xstrprintf ("%s/%ld", name, ptid_get_lwp (inferior_ptid)); else section_name = xstrdup (name); --- src/gdb/gdbarch.c 2010/08/06 19:02:14 1.470 +++ src/gdb/gdbarch.c 2010/08/18 12:24:12 1.471 @@ -234,7 +234,6 @@ 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; 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; @@ -385,7 +384,6 @@ default_register_reggroup_p, /* register_reggroup_p */ 0, /* fetch_pointer_argument */ 0, /* regset_from_core_section */ - 0, /* core_reg_section_encodes_pid */ 0, /* core_regset_sections */ 0, /* core_xfer_shared_libraries */ 0, /* core_pid_to_str */ @@ -667,7 +665,6 @@ /* 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 core_xfer_shared_libraries, has predicate */ /* Skip verify of core_pid_to_str, has predicate */ /* Skip verify of gcore_bfd_target, has predicate */ @@ -818,9 +815,6 @@ "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, @@ -3095,23 +3089,6 @@ gdbarch->regset_from_core_section = regset_from_core_section; } -int -gdbarch_core_reg_section_encodes_pid (struct gdbarch *gdbarch) -{ - gdb_assert (gdbarch != NULL); - /* Skip verify of core_reg_section_encodes_pid, invalid_p == 0 */ - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_core_reg_section_encodes_pid called\n"); - return gdbarch->core_reg_section_encodes_pid; -} - -void -set_gdbarch_core_reg_section_encodes_pid (struct gdbarch *gdbarch, - int core_reg_section_encodes_pid) -{ - gdbarch->core_reg_section_encodes_pid = core_reg_section_encodes_pid; -} - struct core_regset_section * gdbarch_core_regset_sections (struct gdbarch *gdbarch) { --- src/gdb/gdbarch.h 2010/08/06 19:02:14 1.419 +++ src/gdb/gdbarch.h 2010/08/18 12:24:12 1.420 @@ -666,15 +666,6 @@ extern const struct regset * gdbarch_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size); extern void set_gdbarch_regset_from_core_section (struct gdbarch *gdbarch, gdbarch_regset_from_core_section_ftype *regset_from_core_section); -/* 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); - /* Supported register notes in a core file. */ extern struct core_regset_section * gdbarch_core_regset_sections (struct gdbarch *gdbarch); --- src/gdb/gdbarch.sh 2010/08/06 19:02:14 1.515 +++ src/gdb/gdbarch.sh 2010/08/18 12:24:13 1.516 @@ -612,13 +612,6 @@ # name SECT_NAME and size SECT_SIZE. M:const struct regset *:regset_from_core_section:const char *sect_name, size_t sect_size:sect_name, sect_size -# 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 - # 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) --- src/gdb/i386-sol2-tdep.c 2010/01/01 07:31:34 1.29 +++ src/gdb/i386-sol2-tdep.c 2010/08/18 12:24:13 1.30 @@ -136,10 +136,6 @@ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_ilp32_fetch_link_map_offsets); - /* Solaris encodes the pid of the inferior in regset section - names. */ - set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1); - /* How to print LWP PTIDs from core files. */ set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str); } --- src/gdb/sparc-sol2-tdep.c 2010/01/01 07:31:42 1.21 +++ src/gdb/sparc-sol2-tdep.c 2010/08/18 12:24:13 1.22 @@ -232,10 +232,6 @@ frame_unwind_append_unwinder (gdbarch, &sparc32_sol2_sigtramp_frame_unwind); - /* Solaris encodes the pid of the inferior in regset section - names. */ - set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1); - /* How to print LWP PTIDs from core files. */ set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str); } --- src/gdb/sparc64-sol2-tdep.c 2010/01/01 07:31:42 1.20 +++ src/gdb/sparc64-sol2-tdep.c 2010/08/18 12:24:13 1.21 @@ -181,10 +181,6 @@ /* Solaris has kernel-assisted single-stepping support. */ set_gdbarch_software_single_step (gdbarch, NULL); - /* Solaris encodes the pid of the inferior in regset section - names. */ - set_gdbarch_core_reg_section_encodes_pid (gdbarch, 1); - /* How to print LWP PTIDs from core files. */ set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str); }