aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-11-13 19:04:51 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-11-13 20:13:10 +0000
commitb61bce17f346d79cecfd8f195a64b10f77be43b1 (patch)
treeccf2724cbc5f69c6d2cf29c6581bded91c88a1cc
parent3a902ef253853e367bd755222ed8fe4f101fbf2c (diff)
-rw-r--r--libexec/rtld-elf/rtld.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 4c3762ee1ab9..d5c3d2893582 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -6105,6 +6105,15 @@ static const struct auxfmt {
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
dump_auxv(Elf_Auxinfo **aux_info)
{
@@ -6120,7 +6129,13 @@ dump_auxv(Elf_Auxinfo **aux_info)
if (fmt->fmt == NULL)
continue;
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");
}
}