Treat all unknown auxv tags on FreeBSD as unknown.

Previously, default_print_auxv_entry was called for any auxv entries
without a known AT_FREEBSD_* tag.  However, this resulted in false
positive matches when FreeBSD added a new tag that has an existing
AT_* tag with a different meaning.  Instead, only call
default_print_auxv_entry for specific tag values for which FreeBSD
matches the default AT_* values.

gdb/ChangeLog:

	* fbsd-tdep.c (fbsd_print_auxv_entry): Only use
	default_print_auxv_entry for specific tag values.
This commit is contained in:
John Baldwin 2018-10-26 10:20:56 -07:00
parent d7ded98f4c
commit fd2b4de5e6
2 changed files with 25 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2018-10-26 John Baldwin <jhb@FreeBSD.org>
* fbsd-tdep.c (fbsd_print_auxv_entry): Only use
default_print_auxv_entry for specific tag values.
2018-10-26 John Baldwin <jhb@FreeBSD.org>
* fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_FREEBSD_HWCAP2.

View File

@ -1500,12 +1500,29 @@ 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;
const char *name = "???";
const char *description = "";
enum auxv_format format = AUXV_FORMAT_HEX;
switch (type)
{
case AT_NULL:
case AT_IGNORE:
case AT_EXECFD:
case AT_PHDR:
case AT_PHENT:
case AT_PHNUM:
case AT_PAGESZ:
case AT_BASE:
case AT_FLAGS:
case AT_ENTRY:
case AT_NOTELF:
case AT_UID:
case AT_EUID:
case AT_GID:
case AT_EGID:
default_print_auxv_entry (gdbarch, file, type, val);
return;
#define _TAGNAME(tag) #tag
#define TAGNAME(tag) _TAGNAME(AT_##tag)
#define TAG(tag, text, kind) \
@ -1522,9 +1539,6 @@ fbsd_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file,
TAG (EHDRFLAGS, _("ELF header e_flags"), AUXV_FORMAT_HEX);
TAG (HWCAP, _("Machine-dependent CPU capability hints"), AUXV_FORMAT_HEX);
TAG (HWCAP2, _("Extension of AT_HWCAP"), AUXV_FORMAT_HEX);
default:
default_print_auxv_entry (gdbarch, file, type, val);
return;
}
fprint_auxv_entry (file, name, description, format, type, val);