Support several new ELF auxiliary vector types on FreeBSD.
authorJohn Baldwin <jhb@FreeBSD.org>
Thu, 9 Jul 2020 16:39:05 +0000 (09:39 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Thu, 9 Jul 2020 16:39:05 +0000 (09:39 -0700)
FreeBSD's kernel recently added several ELF auxiliary vector entries
to describe the arguments passed to new executable images during
exec().  The AT_FREEBSD_ARGC and AT_FREEBSD_ARGV entries give the
length and address of the process argument array.  AT_FREEBSD_ENVC and
AT_FREEBSD_ENVV entries give the length and address of the initial
process environment.  AT_FREEBSD_PS_STRINGS gives the address of the
'struct ps_strings' object.

include/ChangeLog:

* elf/common.h (AT_FREEBSD_ARGC, AT_FREEBSD_ARGV, AT_FREEBSD_ENVC)
(AT_FREEBSD_ENVV, AT_FREEBSD_PS_STRINGS): Define.

gdb/ChangeLog:

* fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_FREEBSD_ARGC,
AT_FREEBSD_ARGV, AT_FREEBSD_ENVC, AT_FREEBSD_ENVV,
AT_FREEBSD_PS_STRINGS.

gdb/ChangeLog
gdb/fbsd-tdep.c
include/ChangeLog
include/elf/common.h

index df9bc04c874ea3015b789035ec36a4c7a4467a98..40e22efd7eb6749574727dc13e75de2224981213 100644 (file)
@@ -1,3 +1,9 @@
+2020-07-09  John Baldwin  <jhb@FreeBSD.org>
+
+       * fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_FREEBSD_ARGC,
+       AT_FREEBSD_ARGV, AT_FREEBSD_ENVC, AT_FREEBSD_ENVV,
+       AT_FREEBSD_PS_STRINGS.
+
 2020-07-08  Hannes Domani  <ssbssa@yahoo.de>
 
        * auto-load.c (auto_load_objfile_script_1): Convert drive part
index acf787c706a3abd2e020ae6b559f4c3a9c12f278..557c5d3d737545b3b4506441771d7925bcbd29ed 100644 (file)
@@ -1598,6 +1598,11 @@ fbsd_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file,
       TAG (HWCAP, _("Machine-dependent CPU capability hints"), AUXV_FORMAT_HEX);
       TAG (HWCAP2, _("Extension of AT_HWCAP"), AUXV_FORMAT_HEX);
       TAG (BSDFLAGS, _("ELF BSD flags"), AUXV_FORMAT_HEX);
+      TAG (ARGC, _("Argument count"), AUXV_FORMAT_DEC);
+      TAG (ARGV, _("Argument vector"), AUXV_FORMAT_HEX);
+      TAG (ENVC, _("Environment count"), AUXV_FORMAT_DEC);
+      TAG (ENVV, _("Environment vector"), AUXV_FORMAT_HEX);
+      TAG (PS_STRINGS, _("Pointer to ps_strings"), AUXV_FORMAT_HEX);
     }
 
   fprint_auxv_entry (file, name, description, format, type, val);
index 1d7cafbe54d004830d2af4205580c9f301bb4442..49b9f038fa0c834b1bacc80f5942714feb3497aa 100644 (file)
@@ -1,3 +1,8 @@
+2020-07-09  John Baldwin  <jhb@FreeBSD.org>
+
+       * elf/common.h (AT_FREEBSD_ARGC, AT_FREEBSD_ARGV, AT_FREEBSD_ENVC)
+       (AT_FREEBSD_ENVV, AT_FREEBSD_PS_STRINGS): Define.
+
 2020-07-09  Alan Modra  <amodra@gmail.com>
 
        * coff/powerpc.h: Delete.
index 4d94c4fd5b34c3d59409950ae6141aa308695bf9..88dd1c9983bda8605a744f2d517041f751e2d8ba 100644 (file)
 #define AT_FREEBSD_HWCAP        25      /* CPU feature flags. */
 #define AT_FREEBSD_HWCAP2       26      /* CPU feature flags 2. */
 #define AT_FREEBSD_BSDFLAGS     27      /* ELF BSD Flags. */
+#define AT_FREEBSD_ARGC         28      /* Argument count. */
+#define AT_FREEBSD_ARGV         29      /* Argument vector. */
+#define AT_FREEBSD_ENVC         30      /* Environment count. */
+#define AT_FREEBSD_ENVV         31      /* Environment vvector. */
+#define AT_FREEBSD_PS_STRINGS   32      /* struct ps_strings. */
 
 #define AT_SUN_UID      2000    /* Effective user ID.  */
 #define AT_SUN_RUID     2001    /* Real user ID.  */