diff options
author | Florian Weimer <fweimer@redhat.com> | 2023-08-04 12:44:01 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2023-08-23 08:12:48 +0200 |
commit | 65a5112ede9ba3e37e165cf6c9c432f46b903936 (patch) | |
tree | 680173e392f069454d6ec9e9f55b060c4a9901fb | |
parent | f6c8204fd7fabf0cf4162eaf10ccf23258e4d10e (diff) | |
download | glibc-65a5112ede9ba3e37e165cf6c9c432f46b903936.zip glibc-65a5112ede9ba3e37e165cf6c9c432f46b903936.tar.gz glibc-65a5112ede9ba3e37e165cf6c9c432f46b903936.tar.bz2 |
Linux: Avoid conflicting types in ld.so --list-diagnostics
The path auxv[*].a_val could either be an integer or a string,
depending on the a_type value. Use a separate field, a_val_string, to
simplify mechanical parsing of the --list-diagnostics output.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
-rw-r--r-- | sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c b/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c index e0cfa63..d522e27 100644 --- a/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c +++ b/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c @@ -30,16 +30,19 @@ print_auxv (void) for (ElfW(auxv_t) *av = GLRO(dl_auxv); av->a_type != AT_NULL; ++av) { _dl_printf ("auxv[0x%x].a_type=0x%lx\n" - "auxv[0x%x].a_val=", + "auxv[0x%x].a_val", index, (unsigned long int) av->a_type, index); if (av->a_type == AT_EXECFN || av->a_type == AT_PLATFORM || av->a_type == AT_BASE_PLATFORM) - /* The address of the strings is not useful at all, so print - the strings themselves. */ - _dl_diagnostics_print_string ((const char *) av->a_un.a_val); + { + /* The address of the strings is not useful at all, so print + the strings themselves. */ + _dl_printf ("_string="); + _dl_diagnostics_print_string ((const char *) av->a_un.a_val); + } else - _dl_printf ("0x%lx", (unsigned long int) av->a_un.a_val); + _dl_printf ("=0x%lx", (unsigned long int) av->a_un.a_val); _dl_printf ("\n"); ++index; } |