aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2016-12-05 03:11:52 +0000
committerConrad Meyer <cem@FreeBSD.org>2016-12-05 03:11:52 +0000
commit714935be5a0448c889ae3a3dcf261ea2a7edece3 (patch)
tree04849ee47a47240bbd1edc3037f55c237e95700e /contrib
parent0a82e6f09aa360b1f68789b1f43f41bd6edf26c1 (diff)
downloadsrc-714935be5a0448c889ae3a3dcf261ea2a7edece3.tar.gz
src-714935be5a0448c889ae3a3dcf261ea2a7edece3.zip
readelf(1): Add support for extended program header numbers
Add support for extended program header numbers to elftoolchain 'readelf -h'. Reviewed by: emaste Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D8702
Notes
Notes: svn path=/head/; revision=309547
Diffstat (limited to 'contrib')
-rw-r--r--contrib/elftoolchain/readelf/readelf.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/contrib/elftoolchain/readelf/readelf.c b/contrib/elftoolchain/readelf/readelf.c
index 2bf668ed22ff..d1bf009709e1 100644
--- a/contrib/elftoolchain/readelf/readelf.c
+++ b/contrib/elftoolchain/readelf/readelf.c
@@ -2112,7 +2112,7 @@ dwarf_reg(unsigned int mach, unsigned int reg)
static void
dump_ehdr(struct readelf *re)
{
- size_t shnum, shstrndx;
+ size_t phnum, shnum, shstrndx;
int i;
printf("ELF Header:\n");
@@ -2174,7 +2174,13 @@ dump_ehdr(struct readelf *re)
re->ehdr.e_phentsize);
/* e_phnum. */
- printf("%-37s%u\n", " Number of program headers:", re->ehdr.e_phnum);
+ printf("%-37s%u", " Number of program headers:", re->ehdr.e_phnum);
+ if (re->ehdr.e_phnum == PN_XNUM) {
+ /* Extended program header numbering is in use. */
+ if (elf_getphnum(re->elf, &phnum))
+ printf(" (%zu)", phnum);
+ }
+ putchar('\n');
/* e_shentsize. */
printf("%-37s%u (bytes)\n", " Size of section headers:",