rtld dump_auxv: be pedantic and distiguish between auxv union members based on format
Reviewed by: jrtc27 Sponsored by: The FreeBSD Foundation MFC after: 1 week
This commit is contained in:
parent
3a902ef253
commit
b61bce17f3
@ -6105,6 +6105,15 @@ static const struct auxfmt {
|
|||||||
AUXFMT(AT_FXRNG, "%p"),
|
AUXFMT(AT_FXRNG, "%p"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static bool
|
||||||
|
is_ptr_fmt(const char *fmt)
|
||||||
|
{
|
||||||
|
char last;
|
||||||
|
|
||||||
|
last = fmt[strlen(fmt) - 1];
|
||||||
|
return (last == 'p' || last == 's');
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dump_auxv(Elf_Auxinfo **aux_info)
|
dump_auxv(Elf_Auxinfo **aux_info)
|
||||||
{
|
{
|
||||||
@ -6120,7 +6129,13 @@ dump_auxv(Elf_Auxinfo **aux_info)
|
|||||||
if (fmt->fmt == NULL)
|
if (fmt->fmt == NULL)
|
||||||
continue;
|
continue;
|
||||||
rtld_fdprintf(STDOUT_FILENO, "%s:\t", fmt->name);
|
rtld_fdprintf(STDOUT_FILENO, "%s:\t", fmt->name);
|
||||||
rtld_fdprintfx(STDOUT_FILENO, fmt->fmt, auxp->a_un.a_ptr);
|
if (is_ptr_fmt(fmt->fmt)) {
|
||||||
|
rtld_fdprintfx(STDOUT_FILENO, fmt->fmt,
|
||||||
|
auxp->a_un.a_ptr);
|
||||||
|
} else {
|
||||||
|
rtld_fdprintfx(STDOUT_FILENO, fmt->fmt,
|
||||||
|
auxp->a_un.a_val);
|
||||||
|
}
|
||||||
rtld_fdprintf(STDOUT_FILENO, "\n");
|
rtld_fdprintf(STDOUT_FILENO, "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user