diff options
Diffstat (limited to 'devel/gdb/files/commit-82372b2')
-rw-r--r-- | devel/gdb/files/commit-82372b2 | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/devel/gdb/files/commit-82372b2 b/devel/gdb/files/commit-82372b2 new file mode 100644 index 000000000000..11b368140c3d --- /dev/null +++ b/devel/gdb/files/commit-82372b2 @@ -0,0 +1,74 @@ +commit 82372b2f2747d347e24bb10ddc7bc7e828222a42 +Author: John Baldwin <jhb@FreeBSD.org> +Date: Wed Jun 15 21:33:42 2016 -0700 + + Add a gdbarch 'print_auxv_entry' method for FreeBSD ABIs. + + Add a 'print_auxv_entry' method for FreeBSD ABIs that parses + FreeBSD-specific auxiliary vector entries and outputs a suitable + description using fprint_auxv_entry. + + gdb/ChangeLog: + + * fbsd-tdep.c: Include "auxv.h". + (fbsd_print_auxv_entry): New function. + (fbsd_init_abi): Install gdbarch "print_auxv_entry" method. + +diff --git gdb/fbsd-tdep.c gdb/fbsd-tdep.c +index 7310ea0..e8f8605 100644 +--- gdb/fbsd-tdep.c ++++ gdb/fbsd-tdep.c +@@ -18,6 +18,7 @@ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + + #include "defs.h" ++#include "auxv.h" + #include "gdbcore.h" + #include "inferior.h" + #include "regcache.h" +@@ -283,6 +284,39 @@ fbsd_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size) + return note_data; + } + ++/* Print descriptions of FreeBSD-specific AUXV entries to FILE. */ ++ ++static void ++fbsd_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file, ++ CORE_ADDR type, CORE_ADDR val) ++{ ++ const char *name; ++ const char *description; ++ enum auxv_format format; ++ ++ switch (type) ++ { ++#define _TAGNAME(tag) #tag ++#define TAGNAME(tag) _TAGNAME(AT_##tag) ++#define TAG(tag, text, kind) \ ++ case AT_FREEBSD_##tag: name = TAGNAME(tag); description = text; format = kind; break ++ TAG (EXECPATH, _("Executable path"), AUXV_FORMAT_STR); ++ TAG (CANARY, _("Canary for SSP"), AUXV_FORMAT_HEX); ++ TAG (CANARYLEN, ("Length of the SSP canary"), AUXV_FORMAT_DEC); ++ TAG (OSRELDATE, _("OSRELDATE"), AUXV_FORMAT_DEC); ++ TAG (NCPUS, _("Number of CPUs"), AUXV_FORMAT_DEC); ++ TAG (PAGESIZES, _("Pagesizes"), AUXV_FORMAT_HEX); ++ TAG (PAGESIZESLEN, _("Number of pagesizes"), AUXV_FORMAT_DEC); ++ TAG (TIMEKEEP, _("Pointer to timehands"), AUXV_FORMAT_HEX); ++ TAG (STACKPROT, _("Initial stack protection"), AUXV_FORMAT_HEX); ++ default: ++ default_print_auxv_entry (gdbarch, file, type, val); ++ return; ++ } ++ ++ fprint_auxv_entry (file, name, description, format, type, val); ++} ++ + /* To be called from GDB_OSABI_FREEBSD_ELF handlers. */ + + void +@@ -291,4 +325,5 @@ fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) + set_gdbarch_core_pid_to_str (gdbarch, fbsd_core_pid_to_str); + set_gdbarch_core_thread_name (gdbarch, fbsd_core_thread_name); + set_gdbarch_make_corefile_notes (gdbarch, fbsd_make_corefile_notes); ++ set_gdbarch_print_auxv_entry (gdbarch, fbsd_print_auxv_entry); + } |