The Elfxx_Half type is unsigned, thus it should be printed as an unsigned
type.  This fixes the formatting of such a value if it is bigger than
32767, which would be printed as a negative number with the PRId16 format,
due to a recent change in glibc that properly converts the value to the
narrow type before printing.

Fixes this testsuite failure:

@@ -14,7 +14,7 @@
   Flags:
   Size of this header:               64 (bytes)
   Size of program header entries:    56 (bytes)
-  Number of program headers entries: -1 (66000 in [0].sh_info)
+  Number of program headers entries: 65535 (66000 in [0].sh_info)
   Size of section header entries:    64 (bytes)
   Number of section headers entries: 1
   Section header string table index: 0
FAIL run-getphdrnum.sh (exit status: 1)
---
 src/readelf.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/readelf.c b/src/readelf.c
index 49d19a80..ee6c203d 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -1377,13 +1377,13 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr)
   printf (_("  Flags:                             %s\n"),
          ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf)));
 
-  printf (_("  Size of this header:               %" PRId16 " %s\n"),
+  printf (_("  Size of this header:               %" PRIu16 " %s\n"),
          ehdr->e_ehsize, _("(bytes)"));
 
-  printf (_("  Size of program header entries:    %" PRId16 " %s\n"),
+  printf (_("  Size of program header entries:    %" PRIu16 " %s\n"),
          ehdr->e_phentsize, _("(bytes)"));
 
-  printf (_("  Number of program headers entries: %" PRId16),
+  printf (_("  Number of program headers entries: %" PRIu16),
          ehdr->e_phnum);
   if (ehdr->e_phnum == PN_XNUM)
     {
@@ -1397,10 +1397,10 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr)
     }
   fputc ('\n', stdout);
 
-  printf (_("  Size of section header entries:    %" PRId16 " %s\n"),
+  printf (_("  Size of section header entries:    %" PRIu16 " %s\n"),
          ehdr->e_shentsize, _("(bytes)"));
 
-  printf (_("  Number of section headers entries: %" PRId16),
+  printf (_("  Number of section headers entries: %" PRIu16),
          ehdr->e_shnum);
   if (ehdr->e_shnum == 0)
     {
@@ -1432,7 +1432,7 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr)
              buf);
     }
   else
-    printf (_("  Section header string table index: %" PRId16 "\n\n"),
+    printf (_("  Section header string table index: %" PRIu16 "\n\n"),
            ehdr->e_shstrndx);
 }
 
-- 
2.51.1


-- 
Andreas Schwab, SUSE Labs, [email protected]
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

Reply via email to