all architectures.
Note that FreeBSD 7.0 used an older version of this structure
- (struct kinfo_ovmentry), but the NT_FREEBSD_PROCSTAT_VMMAP core
+ (struct kinfo_vmentry), but the NT_FREEBSD_PROCSTAT_VMMAP core
dump note wasn't introduced until FreeBSD 9.2. As a result, the
core dump note has always used the 7.1 and later structure
format. */
gdbarch_data (gdbarch, fbsd_gdbarch_data_handle));
}
-/* Per-program-space data for FreeBSD architectures. */
-static const struct program_space_data *fbsd_pspace_data_handle;
-
struct fbsd_pspace_data
{
/* Offsets in the runtime linker's 'Obj_Entry' structure. */
- LONGEST off_linkmap;
- LONGEST off_tlsindex;
- bool rtld_offsets_valid;
+ LONGEST off_linkmap = 0;
+ LONGEST off_tlsindex = 0;
+ bool rtld_offsets_valid = false;
};
+/* Per-program-space data for FreeBSD architectures. */
+static const struct program_space_key<fbsd_pspace_data>
+ fbsd_pspace_data_handle;
+
static struct fbsd_pspace_data *
get_fbsd_pspace_data (struct program_space *pspace)
{
struct fbsd_pspace_data *data;
- data = ((struct fbsd_pspace_data *)
- program_space_data (pspace, fbsd_pspace_data_handle));
+ data = fbsd_pspace_data_handle.get (pspace);
if (data == NULL)
- {
- data = XCNEW (struct fbsd_pspace_data);
- set_program_space_data (pspace, fbsd_pspace_data_handle, data);
- }
+ data = fbsd_pspace_data_handle.emplace (pspace);
return data;
}
-/* The cleanup callback for FreeBSD architecture per-program-space data. */
-
-static void
-fbsd_pspace_data_cleanup (struct program_space *pspace, void *data)
-{
- xfree (data);
-}
-
/* This is how we want PTIDs from core files to be printed. */
static std::string
thread_section_name section_name (".thrmisc", thr->ptid);
section = bfd_get_section_by_name (core_bfd, section_name.c_str ());
- if (section != NULL && bfd_section_size (core_bfd, section) > 0)
+ if (section != NULL && bfd_section_size (section) > 0)
{
/* Truncate the name if it is longer than "buf". */
- size = bfd_section_size (core_bfd, section);
+ size = bfd_section_size (section);
if (size > sizeof buf - 1)
size = sizeof buf - 1;
if (bfd_get_section_contents (core_bfd, section, buf, (file_ptr) 0,
return;
}
- size_t note_size = bfd_get_section_size (section);
+ size_t note_size = bfd_section_size (section);
if (note_size < 4)
error (_("malformed core note - too short for header"));
return;
}
- note_size = bfd_get_section_size (section);
+ note_size = bfd_section_size (section);
if (note_size < 4)
error (_("malformed core note - too short for header"));
if (section == NULL)
return nullptr;
- note_size = bfd_get_section_size (section);
+ note_size = bfd_section_size (section);
if (note_size < 4)
error (_("malformed core note - too short for header"));
&& bfd_get_signed_32 (core_bfd, descdata + KF_FD) == fd)
{
char *path = (char *) descdata + KF_PATH;
- return gdb::unique_xmalloc_ptr<char> (xstrdup (path));
+ return make_unique_xstrdup (path);
}
descdata += structsize;
* structure size, then it must be long enough to access the last
* field used (ki_rusage_ch.ru_majflt) which is the size of a long.
*/
- note_size = bfd_get_section_size (section);
+ note_size = bfd_section_size (section);
if (note_size < (4 + kp->ki_rusage_ch + kp->ru_majflt
+ long_bit / TARGET_CHAR_BIT))
error (_("malformed core note - too short"));
sec, value);
printf_filtered ("stime, children: %s.%06d\n", plongest (sec), (int) value);
printf_filtered ("'nice' value: %d\n",
- bfd_get_signed_8 (core_bfd, descdata + kp->ki_nice));
+ (int) bfd_get_signed_8 (core_bfd, descdata + kp->ki_nice));
fbsd_core_fetch_timeval (gdbarch, descdata + kp->ki_start, sec, value);
printf_filtered ("Start time: %s.%06d\n", plongest (sec), (int) value);
printf_filtered ("Virtual memory size: %s kB\n",
{
fbsd_gdbarch_data_handle =
gdbarch_data_register_post_init (init_fbsd_gdbarch_data);
- fbsd_pspace_data_handle
- = register_program_space_data_with_cleanup (NULL, fbsd_pspace_data_cleanup);
}