Module Name: src
Committed By: rin
Date: Thu Aug 17 06:54:31 UTC 2023
Modified Files:
src/external/gpl3/gdb/dist/gdb: netbsd-tdep.c
src/external/gpl3/gdb/dist/include/elf: common.h
Log Message:
gdb: Add support for NetBSD-specific auxv AT_STACKBASE
It was wrongly shown as AT_GID in decimal format.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 src/external/gpl3/gdb/dist/gdb/netbsd-tdep.c
cvs rdiff -u -r1.7 -r1.8 src/external/gpl3/gdb/dist/include/elf/common.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/gdb/dist/gdb/netbsd-tdep.c
diff -u src/external/gpl3/gdb/dist/gdb/netbsd-tdep.c:1.1.1.1 src/external/gpl3/gdb/dist/gdb/netbsd-tdep.c:1.2
--- src/external/gpl3/gdb/dist/gdb/netbsd-tdep.c:1.1.1.1 Sun Jul 30 22:44:53 2023
+++ src/external/gpl3/gdb/dist/gdb/netbsd-tdep.c Thu Aug 17 06:54:31 2023
@@ -27,6 +27,8 @@
#include "objfiles.h"
#include "xml-syscall.h"
+#include "elf/common.h"
+
/* Flags in the 'kve_protection' field in struct kinfo_vmentry. These
match the KVME_PROT_* constants in <sys/sysctl.h>. */
@@ -390,6 +392,31 @@ get_nbsd_gdbarch_data (struct gdbarch *g
return result;
}
+/* Print descriptions of NetBSD-specific AUXV entries to FILE. */
+
+static void
+nbsd_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 = AUXV_FORMAT_HEX;
+
+ switch (type)
+ {
+ default:
+ default_print_auxv_entry (gdbarch, file, type, val);
+ return;
+#define _TAGNAME(tag) #tag
+#define TAGNAME(tag) _TAGNAME(AT_##tag)
+#define TAG(tag, text, kind) \
+ case AT_NETBSD_##tag: name = TAGNAME(tag); description = text; format = kind; break
+ TAG (STACKBASE, _("Base address of main thread"), AUXV_FORMAT_HEX);
+ }
+
+ fprint_auxv_entry (file, name, description, format, type, val);
+}
+
/* Implement the "get_siginfo_type" gdbarch method. */
static struct type *
@@ -613,6 +640,7 @@ nbsd_init_abi (struct gdbarch_info info,
set_gdbarch_gdb_signal_to_target (gdbarch, nbsd_gdb_signal_to_target);
set_gdbarch_skip_solib_resolver (gdbarch, nbsd_skip_solib_resolver);
set_gdbarch_auxv_parse (gdbarch, svr4_auxv_parse);
+ set_gdbarch_print_auxv_entry (gdbarch, nbsd_print_auxv_entry);
set_gdbarch_get_siginfo_type (gdbarch, nbsd_get_siginfo_type);
/* `catch syscall' */
Index: src/external/gpl3/gdb/dist/include/elf/common.h
diff -u src/external/gpl3/gdb/dist/include/elf/common.h:1.7 src/external/gpl3/gdb/dist/include/elf/common.h:1.8
--- src/external/gpl3/gdb/dist/include/elf/common.h:1.7 Mon Jul 31 17:00:57 2023
+++ src/external/gpl3/gdb/dist/include/elf/common.h Thu Aug 17 06:54:31 2023
@@ -1409,6 +1409,8 @@
#define AT_FREEBSD_USRSTACKBASE 35 /* Top of user stack. */
#define AT_FREEBSD_USRSTACKLIM 36 /* Grow limit of user stack. */
+#define AT_NETBSD_STACKBASE 13 /* Base address of the main thread. */
+
#define AT_SUN_UID 2000 /* Effective user ID. */
#define AT_SUN_RUID 2001 /* Real user ID. */
#define AT_SUN_GID 2002 /* Effective group ID. */