Handle missing Solaris auxv entries
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Thu, 20 Sep 2018 08:23:46 +0000 (10:23 +0200)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Thu, 20 Sep 2018 08:23:46 +0000 (10:23 +0200)
Currently, three tests FAIL on Solaris 11.4+ (amd64-pc-solaris2.11 and
sparcv9-sun-solaris2.11):

info auxv
[...]
2009 AT_SUN_HWCAP         Machine-dependent CPU capability hints 0x3f5ff7
2023 ???                                                 0x0
0    AT_NULL              End of vector                  0x0
(gdb) WARNING: Unrecognized tag value: 2023 ???  0x0

FAIL: gdb.base/auxv.exp: info auxv on live process

info auxv
4294969310 ???                                                 0x7fffbfffe410
9225589753816 ???                                                 0x7fffbfffe45c
[...]
WARNING: Unrecognized tag value: 4294969310 ???  0x7fffbfffe410

WARNING: Unrecognized tag value: 9225589753816 ???  0x7fffbfffe45c

WARNING: Unrecognized tag value: 140733193388037 ???  0x6
[...]
2009 AT_SUN_HWCAP         Machine-dependent CPU capability hints 0x3f5ff7
2023 ???                                                 0x0
0    AT_NULL              End of vector                  0x0
(gdb) WARNING: Unrecognized tag value: 2023 ???  0x0

UNRESOLVED: gdb.base/auxv.exp: info auxv on native core dump

info auxv
[...]
2009 AT_SUN_HWCAP         Machine-dependent CPU capability hints 0x3f5ff7
2023 ???                                                 0x0
0    AT_NULL              End of vector                  0x0
(gdb) WARNING: Unrecognized tag value: 2023 ???  0x0

FAIL: gdb.base/auxv.exp: info auxv on gcore-created dump

The following patch fixes this by introducing the missing AT_SUN_*
values from Solaris 11.4+ <sys/auxv.h>.  This lets the live and
gcore-created dump tests PASS.

I don't know yet what's the reason for those weird 'Unrecognized tag
value' warnings with native core dumps is; elfdump -n certainly doesn't
show them.  However, native core dumps still need quite some work
(mostly in bfd) in this and other areas.

Tested on amd64-pc-solaris2.11.

gdb:
* auxv.c (default_print_auxv_entry): Reflect AT_SUN_CAP_HW1
renaming.
Handle AT_SUN_EMULATOR, AT_SUN_BRANDNAME, AT_SUN_BRAND_AUX1,
AT_SUN_BRAND_AUX2, AT_SUN_BRAND_AUX3, AT_SUN_CAP_HW2.

include:
* elf/common.h (AT_SUN_HWCAP): Rename to ...
(AT_SUN_CAP_HW1): ... this.  Retain old name for backward
compatibility.
(AT_SUN_EMULATOR, AT_SUN_BRANDNAME, AT_SUN_BRAND_AUX1)
(AT_SUN_BRAND_AUX2, AT_SUN_BRAND_AUX3, AT_SUN_CAP_HW2): Define.

gdb/ChangeLog
gdb/auxv.c
include/ChangeLog
include/elf/common.h

index bd019f0573fb742b4bad7012d4f0dbf29a5ba7b7..d0f3fe3cbd4e90884cb7b6f1d950539f8797e395 100644 (file)
@@ -1,3 +1,10 @@
+2018-09-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * auxv.c (default_print_auxv_entry): Reflect AT_SUN_CAP_HW1
+       renaming.
+       Handle AT_SUN_EMULATOR, AT_SUN_BRANDNAME, AT_SUN_BRAND_AUX1,
+       AT_SUN_BRAND_AUX2, AT_SUN_BRAND_AUX3, AT_SUN_CAP_HW2.
+
 2018-09-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * i386-v4-nat.c (regmap, supply_gregset, fill_gregset)
index 13bf9c390aa30b1fe1d203394c4fc48f7ae5bd1c..2148b529b188cc344f53401da640fcad19688946 100644 (file)
@@ -493,7 +493,7 @@ default_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file,
           AUXV_FORMAT_STR);
       TAG (AT_SUN_LPAGESZ, _("Large pagesize"), AUXV_FORMAT_DEC);
       TAG (AT_SUN_PLATFORM, _("Platform name string"), AUXV_FORMAT_STR);
-      TAG (AT_SUN_HWCAP, _("Machine-dependent CPU capability hints"),
+      TAG (AT_SUN_CAP_HW1, _("Machine-dependent CPU capability hints"),
           AUXV_FORMAT_HEX);
       TAG (AT_SUN_IFLUSH, _("Should flush icache?"), AUXV_FORMAT_DEC);
       TAG (AT_SUN_CPU, _("CPU name string"), AUXV_FORMAT_STR);
@@ -507,6 +507,17 @@ default_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file,
           AUXV_FORMAT_HEX);
       TAG (AT_SUN_AUXFLAGS,
           _("AF_SUN_ flags passed from the kernel"), AUXV_FORMAT_HEX);
+      TAG (AT_SUN_EMULATOR, _("Name of emulation binary for runtime linker"),
+          AUXV_FORMAT_STR);
+      TAG (AT_SUN_BRANDNAME, _("Name of brand library"), AUXV_FORMAT_STR);
+      TAG (AT_SUN_BRAND_AUX1, _("Aux vector for brand modules 1"),
+          AUXV_FORMAT_HEX);
+      TAG (AT_SUN_BRAND_AUX2, _("Aux vector for brand modules 2"),
+          AUXV_FORMAT_HEX);
+      TAG (AT_SUN_BRAND_AUX3, _("Aux vector for brand modules 3"),
+          AUXV_FORMAT_HEX);
+      TAG (AT_SUN_CAP_HW2, _("Machine-dependent CPU capability hints 2"),
+          AUXV_FORMAT_HEX);
     }
 
   fprint_auxv_entry (file, name, description, format, type, val);
index c23c7437386f83c27b1c3fb6c36041f84a77f15f..e277c7c7755ac41debd6bb52704032ef35f5c1d9 100644 (file)
@@ -1,3 +1,11 @@
+2018-09-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * elf/common.h (AT_SUN_HWCAP): Rename to ...
+       (AT_SUN_CAP_HW1): ... this.  Retain old name for backward
+       compatibility.
+       (AT_SUN_EMULATOR, AT_SUN_BRANDNAME, AT_SUN_BRAND_AUX1)
+       (AT_SUN_BRAND_AUX2, AT_SUN_BRAND_AUX3, AT_SUN_CAP_HW2): Define.
+
 2018-09-05  Simon Marchi  <simon.marchi@ericsson.com>
 
        * diagnostics.h (DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL): New macro.
index 961d022a1b85ce6f4bddae5518f1aded639f6b9e..e194274305663f565c6beee5ec21dbed70cdac46 100644 (file)
 #define AT_SUN_LDNAME   2006    /* String giving name of dynamic linker.  */
 #define AT_SUN_LPAGESZ  2007    /* Large pagesize.   */
 #define AT_SUN_PLATFORM 2008    /* Platform name string.  */
-#undef AT_SUN_HWCAP
-#define AT_SUN_HWCAP    2009   /* Machine dependent hints about
+#define AT_SUN_CAP_HW1 2009    /* Machine dependent hints about
                                   processor capabilities.  */
+#define AT_SUN_HWCAP   AT_SUN_CAP_HW1 /* For backward compat only.  */
 #define AT_SUN_IFLUSH   2010    /* Should flush icache? */
 #define AT_SUN_CPU      2011    /* CPU name string.  */
 #define AT_SUN_EMUL_ENTRY 2012 /* COFF entry point address.  */
 #define AT_SUN_MMU      2015    /* String for name of MMU module.   */
 #define AT_SUN_LDDATA   2016    /* Dynamic linker's data segment address.  */
 #define AT_SUN_AUXFLAGS        2017    /* AF_SUN_ flags passed from the kernel.  */
-
+#define        AT_SUN_EMULATOR 2018    /* Name of emulation binary for runtime
+                                  linker.  */
+#define        AT_SUN_BRANDNAME 2019   /* Name of brand library.  */
+#define        AT_SUN_BRAND_AUX1 2020  /* Aux vectors for brand modules.  */
+#define        AT_SUN_BRAND_AUX2 2021
+#define        AT_SUN_BRAND_AUX3 2022
+#define        AT_SUN_CAP_HW2  2023    /* Extension of AT_SUN_CAP_HW1.  */
 
 #endif /* _ELF_COMMON_H */
This page took 0.034266 seconds and 4 git commands to generate.