Index: llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test =================================================================== --- llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test +++ llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test @@ -54,107 +54,105 @@ # RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix=GNU-MIPS # LLVM-MIPS:DynamicSection [ (47 entries) -# LLVM-MIPS-NEXT: Tag Type Name/Value -# LLVM-MIPS-NEXT: 0x0000000000000004 HASH 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000001 MIPS_RLD_VERSION 305419896 -# LLVM-MIPS-NEXT: 0x0000000070000002 MIPS_TIME_STAMP 0x11223344 -# LLVM-MIPS-NEXT: 0x0000000070000003 MIPS_ICHECKSUM 0x11112222 -# LLVM-MIPS-NEXT: 0x0000000070000004 MIPS_IVERSION 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000005 MIPS_FLAGS QUICKSTART SGI_ONLY PIXIE CORD -# LLVM-MIPS-NEXT: 0x0000000070000006 MIPS_BASE_ADDRESS 0x87654321 -# LLVM-MIPS-NEXT: 0x0000000070000007 MIPS_MSYM 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000008 MIPS_CONFLICT 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000009 MIPS_LIBLIST 0x1000 -# LLVM-MIPS-NEXT: 0x000000007000000A MIPS_LOCAL_GOTNO 1 -# LLVM-MIPS-NEXT: 0x000000007000000B MIPS_CONFLICTNO 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000010 MIPS_LIBLISTNO 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000011 MIPS_SYMTABNO 1 -# LLVM-MIPS-NEXT: 0x0000000070000012 MIPS_UNREFEXTNO 0 -# LLVM-MIPS-NEXT: 0x0000000070000013 MIPS_GOTSYM 0x0 -# LLVM-MIPS-NEXT: 0x0000000070000014 MIPS_HIPAGENO 0x88776655 -# LLVM-MIPS-NEXT: 0x0000000070000016 MIPS_RLD_MAP 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000017 MIPS_DELTA_CLASS 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000018 MIPS_DELTA_CLASS_NO 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000019 MIPS_DELTA_INSTANCE 0x1000 -## FIXME: llvm-readobj does not print spaces after MIPS_DELTA_INSTANCE_NO, MIPS_PROTECTED_GOTIDX -## and other long tags. The output looks broken because of that. -# LLVM-MIPS-NEXT: 0x000000007000001A MIPS_DELTA_INSTANCE_NO0x1 -# LLVM-MIPS-NEXT: 0x000000007000001B MIPS_DELTA_RELOC 0x1000 -# LLVM-MIPS-NEXT: 0x000000007000001C MIPS_DELTA_RELOC_NO 0x1 -# LLVM-MIPS-NEXT: 0x000000007000001D MIPS_DELTA_SYM 0x1000 -# LLVM-MIPS-NEXT: 0x000000007000001E MIPS_DELTA_SYM_NO 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000020 MIPS_DELTA_CLASSSYM 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000021 MIPS_DELTA_CLASSSYM_NO0x1 -# LLVM-MIPS-NEXT: 0x0000000070000022 MIPS_CXX_FLAGS 0x88887777 -# LLVM-MIPS-NEXT: 0x0000000070000023 MIPS_PIXIE_INIT 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000025 MIPS_LOCALPAGE_GOTIDX0x1 -# LLVM-MIPS-NEXT: 0x0000000070000026 MIPS_LOCAL_GOTIDX 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000027 MIPS_HIDDEN_GOTIDX 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000028 MIPS_PROTECTED_GOTIDX0x1 -# LLVM-MIPS-NEXT: 0x0000000070000029 MIPS_OPTIONS 0x1000 -# LLVM-MIPS-NEXT: 0x000000007000002A MIPS_INTERFACE 0x1000 -# LLVM-MIPS-NEXT: 0x000000007000002B MIPS_DYNSTR_ALIGN 0x88888888 -# LLVM-MIPS-NEXT: 0x000000007000002C MIPS_INTERFACE_SIZE 0x10 -# LLVM-MIPS-NEXT: 0x000000007000002D MIPS_RLD_TEXT_RESOLVE_ADDR0x8 -# LLVM-MIPS-NEXT: 0x000000007000002E MIPS_PERF_SUFFIX 0x0 -# LLVM-MIPS-NEXT: 0x000000007000002F MIPS_COMPACT_SIZE 0x10 -# LLVM-MIPS-NEXT: 0x0000000070000030 MIPS_GP_VALUE 0x1 -# LLVM-MIPS-NEXT: 0x0000000070000031 MIPS_AUX_DYNAMIC 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000032 MIPS_PLTGOT 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000034 MIPS_RWPLT 0x1000 -# LLVM-MIPS-NEXT: 0x0000000070000035 MIPS_RLD_MAP_REL 0x1000 -# LLVM-MIPS-NEXT: 0x0000000000000000 NULL 0x0 +# LLVM-MIPS-NEXT: Tag Type Name/Value +# LLVM-MIPS-NEXT: 0x0000000000000004 HASH 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000001 MIPS_RLD_VERSION 305419896 +# LLVM-MIPS-NEXT: 0x0000000070000002 MIPS_TIME_STAMP 0x11223344 +# LLVM-MIPS-NEXT: 0x0000000070000003 MIPS_ICHECKSUM 0x11112222 +# LLVM-MIPS-NEXT: 0x0000000070000004 MIPS_IVERSION 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000005 MIPS_FLAGS QUICKSTART SGI_ONLY PIXIE CORD +# LLVM-MIPS-NEXT: 0x0000000070000006 MIPS_BASE_ADDRESS 0x87654321 +# LLVM-MIPS-NEXT: 0x0000000070000007 MIPS_MSYM 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000008 MIPS_CONFLICT 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000009 MIPS_LIBLIST 0x1000 +# LLVM-MIPS-NEXT: 0x000000007000000A MIPS_LOCAL_GOTNO 1 +# LLVM-MIPS-NEXT: 0x000000007000000B MIPS_CONFLICTNO 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000010 MIPS_LIBLISTNO 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000011 MIPS_SYMTABNO 1 +# LLVM-MIPS-NEXT: 0x0000000070000012 MIPS_UNREFEXTNO 0 +# LLVM-MIPS-NEXT: 0x0000000070000013 MIPS_GOTSYM 0x0 +# LLVM-MIPS-NEXT: 0x0000000070000014 MIPS_HIPAGENO 0x88776655 +# LLVM-MIPS-NEXT: 0x0000000070000016 MIPS_RLD_MAP 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000017 MIPS_DELTA_CLASS 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000018 MIPS_DELTA_CLASS_NO 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000019 MIPS_DELTA_INSTANCE 0x1000 +# LLVM-MIPS-NEXT: 0x000000007000001A MIPS_DELTA_INSTANCE_NO 0x1 +# LLVM-MIPS-NEXT: 0x000000007000001B MIPS_DELTA_RELOC 0x1000 +# LLVM-MIPS-NEXT: 0x000000007000001C MIPS_DELTA_RELOC_NO 0x1 +# LLVM-MIPS-NEXT: 0x000000007000001D MIPS_DELTA_SYM 0x1000 +# LLVM-MIPS-NEXT: 0x000000007000001E MIPS_DELTA_SYM_NO 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000020 MIPS_DELTA_CLASSSYM 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000021 MIPS_DELTA_CLASSSYM_NO 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000022 MIPS_CXX_FLAGS 0x88887777 +# LLVM-MIPS-NEXT: 0x0000000070000023 MIPS_PIXIE_INIT 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000025 MIPS_LOCALPAGE_GOTIDX 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000026 MIPS_LOCAL_GOTIDX 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000027 MIPS_HIDDEN_GOTIDX 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000028 MIPS_PROTECTED_GOTIDX 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000029 MIPS_OPTIONS 0x1000 +# LLVM-MIPS-NEXT: 0x000000007000002A MIPS_INTERFACE 0x1000 +# LLVM-MIPS-NEXT: 0x000000007000002B MIPS_DYNSTR_ALIGN 0x88888888 +# LLVM-MIPS-NEXT: 0x000000007000002C MIPS_INTERFACE_SIZE 0x10 +# LLVM-MIPS-NEXT: 0x000000007000002D MIPS_RLD_TEXT_RESOLVE_ADDR 0x8 +# LLVM-MIPS-NEXT: 0x000000007000002E MIPS_PERF_SUFFIX 0x0 +# LLVM-MIPS-NEXT: 0x000000007000002F MIPS_COMPACT_SIZE 0x10 +# LLVM-MIPS-NEXT: 0x0000000070000030 MIPS_GP_VALUE 0x1 +# LLVM-MIPS-NEXT: 0x0000000070000031 MIPS_AUX_DYNAMIC 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000032 MIPS_PLTGOT 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000034 MIPS_RWPLT 0x1000 +# LLVM-MIPS-NEXT: 0x0000000070000035 MIPS_RLD_MAP_REL 0x1000 +# LLVM-MIPS-NEXT: 0x0000000000000000 NULL 0x0 # LLVM-MIPS-NEXT:] # GNU-MIPS:Dynamic section at offset {{.*}} contains 47 entries: -# GNU-MIPS-NEXT: Tag Type Name/Value -# GNU-MIPS-NEXT: 0x0000000000000004 (HASH) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000001 (MIPS_RLD_VERSION) 305419896 -# GNU-MIPS-NEXT: 0x0000000070000002 (MIPS_TIME_STAMP) 0x11223344 -# GNU-MIPS-NEXT: 0x0000000070000003 (MIPS_ICHECKSUM) 0x11112222 -# GNU-MIPS-NEXT: 0x0000000070000004 (MIPS_IVERSION) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000005 (MIPS_FLAGS) QUICKSTART SGI_ONLY PIXIE CORD -# GNU-MIPS-NEXT: 0x0000000070000006 (MIPS_BASE_ADDRESS) 0x87654321 -# GNU-MIPS-NEXT: 0x0000000070000007 (MIPS_MSYM) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000008 (MIPS_CONFLICT) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000009 (MIPS_LIBLIST) 0x1000 -# GNU-MIPS-NEXT: 0x000000007000000a (MIPS_LOCAL_GOTNO) 1 -# GNU-MIPS-NEXT: 0x000000007000000b (MIPS_CONFLICTNO) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000010 (MIPS_LIBLISTNO) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000011 (MIPS_SYMTABNO) 1 -# GNU-MIPS-NEXT: 0x0000000070000012 (MIPS_UNREFEXTNO) 0 -# GNU-MIPS-NEXT: 0x0000000070000013 (MIPS_GOTSYM) 0x0 -# GNU-MIPS-NEXT: 0x0000000070000014 (MIPS_HIPAGENO) 0x88776655 -# GNU-MIPS-NEXT: 0x0000000070000016 (MIPS_RLD_MAP) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000017 (MIPS_DELTA_CLASS) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000018 (MIPS_DELTA_CLASS_NO) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000019 (MIPS_DELTA_INSTANCE) 0x1000 -# GNU-MIPS-NEXT: 0x000000007000001a (MIPS_DELTA_INSTANCE_NO) 0x1 -# GNU-MIPS-NEXT: 0x000000007000001b (MIPS_DELTA_RELOC) 0x1000 -# GNU-MIPS-NEXT: 0x000000007000001c (MIPS_DELTA_RELOC_NO) 0x1 -# GNU-MIPS-NEXT: 0x000000007000001d (MIPS_DELTA_SYM) 0x1000 -# GNU-MIPS-NEXT: 0x000000007000001e (MIPS_DELTA_SYM_NO) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000020 (MIPS_DELTA_CLASSSYM) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000021 (MIPS_DELTA_CLASSSYM_NO) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000022 (MIPS_CXX_FLAGS) 0x88887777 -# GNU-MIPS-NEXT: 0x0000000070000023 (MIPS_PIXIE_INIT) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000025 (MIPS_LOCALPAGE_GOTIDX) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000026 (MIPS_LOCAL_GOTIDX) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000027 (MIPS_HIDDEN_GOTIDX) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000028 (MIPS_PROTECTED_GOTIDX) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000029 (MIPS_OPTIONS) 0x1000 -# GNU-MIPS-NEXT: 0x000000007000002a (MIPS_INTERFACE) 0x1000 -# GNU-MIPS-NEXT: 0x000000007000002b (MIPS_DYNSTR_ALIGN) 0x88888888 -# GNU-MIPS-NEXT: 0x000000007000002c (MIPS_INTERFACE_SIZE) 0x10 +# GNU-MIPS-NEXT: Tag Type Name/Value +# GNU-MIPS-NEXT: 0x0000000000000004 (HASH) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000001 (MIPS_RLD_VERSION) 305419896 +# GNU-MIPS-NEXT: 0x0000000070000002 (MIPS_TIME_STAMP) 0x11223344 +# GNU-MIPS-NEXT: 0x0000000070000003 (MIPS_ICHECKSUM) 0x11112222 +# GNU-MIPS-NEXT: 0x0000000070000004 (MIPS_IVERSION) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000005 (MIPS_FLAGS) QUICKSTART SGI_ONLY PIXIE CORD +# GNU-MIPS-NEXT: 0x0000000070000006 (MIPS_BASE_ADDRESS) 0x87654321 +# GNU-MIPS-NEXT: 0x0000000070000007 (MIPS_MSYM) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000008 (MIPS_CONFLICT) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000009 (MIPS_LIBLIST) 0x1000 +# GNU-MIPS-NEXT: 0x000000007000000a (MIPS_LOCAL_GOTNO) 1 +# GNU-MIPS-NEXT: 0x000000007000000b (MIPS_CONFLICTNO) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000010 (MIPS_LIBLISTNO) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000011 (MIPS_SYMTABNO) 1 +# GNU-MIPS-NEXT: 0x0000000070000012 (MIPS_UNREFEXTNO) 0 +# GNU-MIPS-NEXT: 0x0000000070000013 (MIPS_GOTSYM) 0x0 +# GNU-MIPS-NEXT: 0x0000000070000014 (MIPS_HIPAGENO) 0x88776655 +# GNU-MIPS-NEXT: 0x0000000070000016 (MIPS_RLD_MAP) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000017 (MIPS_DELTA_CLASS) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000018 (MIPS_DELTA_CLASS_NO) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000019 (MIPS_DELTA_INSTANCE) 0x1000 +# GNU-MIPS-NEXT: 0x000000007000001a (MIPS_DELTA_INSTANCE_NO) 0x1 +# GNU-MIPS-NEXT: 0x000000007000001b (MIPS_DELTA_RELOC) 0x1000 +# GNU-MIPS-NEXT: 0x000000007000001c (MIPS_DELTA_RELOC_NO) 0x1 +# GNU-MIPS-NEXT: 0x000000007000001d (MIPS_DELTA_SYM) 0x1000 +# GNU-MIPS-NEXT: 0x000000007000001e (MIPS_DELTA_SYM_NO) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000020 (MIPS_DELTA_CLASSSYM) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000021 (MIPS_DELTA_CLASSSYM_NO) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000022 (MIPS_CXX_FLAGS) 0x88887777 +# GNU-MIPS-NEXT: 0x0000000070000023 (MIPS_PIXIE_INIT) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000025 (MIPS_LOCALPAGE_GOTIDX) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000026 (MIPS_LOCAL_GOTIDX) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000027 (MIPS_HIDDEN_GOTIDX) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000028 (MIPS_PROTECTED_GOTIDX) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000029 (MIPS_OPTIONS) 0x1000 +# GNU-MIPS-NEXT: 0x000000007000002a (MIPS_INTERFACE) 0x1000 +# GNU-MIPS-NEXT: 0x000000007000002b (MIPS_DYNSTR_ALIGN) 0x88888888 +# GNU-MIPS-NEXT: 0x000000007000002c (MIPS_INTERFACE_SIZE) 0x10 # GNU-MIPS-NEXT: 0x000000007000002d (MIPS_RLD_TEXT_RESOLVE_ADDR) 0x8 -# GNU-MIPS-NEXT: 0x000000007000002e (MIPS_PERF_SUFFIX) 0x0 -# GNU-MIPS-NEXT: 0x000000007000002f (MIPS_COMPACT_SIZE) 0x10 -# GNU-MIPS-NEXT: 0x0000000070000030 (MIPS_GP_VALUE) 0x1 -# GNU-MIPS-NEXT: 0x0000000070000031 (MIPS_AUX_DYNAMIC) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000032 (MIPS_PLTGOT) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000034 (MIPS_RWPLT) 0x1000 -# GNU-MIPS-NEXT: 0x0000000070000035 (MIPS_RLD_MAP_REL) 0x1000 -# GNU-MIPS-NEXT: 0x0000000000000000 (NULL) 0x0 +# GNU-MIPS-NEXT: 0x000000007000002e (MIPS_PERF_SUFFIX) 0x0 +# GNU-MIPS-NEXT: 0x000000007000002f (MIPS_COMPACT_SIZE) 0x10 +# GNU-MIPS-NEXT: 0x0000000070000030 (MIPS_GP_VALUE) 0x1 +# GNU-MIPS-NEXT: 0x0000000070000031 (MIPS_AUX_DYNAMIC) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000032 (MIPS_PLTGOT) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000034 (MIPS_RWPLT) 0x1000 +# GNU-MIPS-NEXT: 0x0000000070000035 (MIPS_RLD_MAP_REL) 0x1000 +# GNU-MIPS-NEXT: 0x0000000000000000 (NULL) 0x0 --- !ELF FileHeader: Index: llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test =================================================================== --- llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test +++ llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test @@ -75,68 +75,68 @@ # LLVM64-NEXT:] # GNU64:Dynamic section at offset {{.*}} contains 61 entries: -# GNU64-NEXT: Tag Type Name/Value -# GNU64-NEXT: 0x0000000000000001 (NEEDED) Shared library: [D] -# GNU64-NEXT: 0x0000000000000002 (PLTRELSZ) 16 (bytes) -# GNU64-NEXT: 0x0000000000000003 (PLTGOT) 0x1000 -# GNU64-NEXT: 0x0000000000000004 (HASH) 0x1000 -# GNU64-NEXT: 0x0000000000000005 (STRTAB) 0x1000 -# GNU64-NEXT: 0x0000000000000006 (SYMTAB) 0x1000 -# GNU64-NEXT: 0x0000000000000007 (RELA) 0x1000 -# GNU64-NEXT: 0x0000000000000008 (RELASZ) 16 (bytes) -# GNU64-NEXT: 0x0000000000000009 (RELAENT) 1929 (bytes) -# GNU64-NEXT: 0x000000000000000a (STRSZ) 16 (bytes) -# GNU64-NEXT: 0x000000000000000b (SYMENT) 2439 (bytes) -# GNU64-NEXT: 0x000000000000000c (INIT) 0x1000 -# GNU64-NEXT: 0x000000000000000d (FINI) 0x1000 -# GNU64-NEXT: 0x000000000000000e (SONAME) Library soname: [U] -# GNU64-NEXT: 0x000000000000000f (RPATH) Library rpath: [f] -# GNU64-NEXT: 0x0000000000000010 (SYMBOLIC) 0x1234567890abcdef -# GNU64-NEXT: 0x0000000000000011 (REL) 0x1000 -# GNU64-NEXT: 0x0000000000000012 (RELSZ) 16 (bytes) -# GNU64-NEXT: 0x0000000000000013 (RELENT) 291 (bytes) -# GNU64-NEXT: 0x0000000000000014 (PLTREL) RELA -# GNU64-NEXT: 0x0000000000000015 (DEBUG) 0xfedcba0987654321 -# GNU64-NEXT: 0x0000000000000016 (TEXTREL) 0x1122334455667788 -# GNU64-NEXT: 0x0000000000000017 (JMPREL) 0x1000 -# GNU64-NEXT: 0x0000000000000018 (BIND_NOW) 0x8877665544332211 -# GNU64-NEXT: 0x0000000000000019 (INIT_ARRAY) 0x1000 -# GNU64-NEXT: 0x000000000000001a (FINI_ARRAY) 0x1000 -# GNU64-NEXT: 0x000000000000001b (INIT_ARRAYSZ) 16 (bytes) -# GNU64-NEXT: 0x000000000000001c (FINI_ARRAYSZ) 16 (bytes) -# GNU64-NEXT: 0x000000000000001d (RUNPATH) Library runpath: [w] -# GNU64-NEXT: 0x000000000000001e (FLAGS) ORIGIN SYMBOLIC TEXTREL BIND_NOW STATIC_TLS {{$}} -# GNU64-NEXT: 0x0000000000000020 (PREINIT_ARRAY) 0x1000 -# GNU64-NEXT: 0x0000000000000021 (PREINIT_ARRAYSZ) 16 (bytes) -# GNU64-NEXT: 0x0000000000000022 (SYMTAB_SHNDX) 0x1000 -# GNU64-NEXT: 0x0000000000000023 (RELRSZ) 0x10 -# GNU64-NEXT: 0x0000000000000024 (RELR) 0x1000 -# GNU64-NEXT: 0x0000000000000025 (RELRENT) 0x4321 -# GNU64-NEXT: 0x000000006000000f (ANDROID_REL) 0x1000 -# GNU64-NEXT: 0x0000000060000010 (ANDROID_RELSZ) 16 (bytes) -# GNU64-NEXT: 0x0000000060000011 (ANDROID_RELA) 0x1000 -# GNU64-NEXT: 0x0000000060000012 (ANDROID_RELASZ) 16 (bytes) -# GNU64-NEXT: 0x000000006fffe000 (ANDROID_RELR) 0x1000 -# GNU64-NEXT: 0x000000006fffe001 (ANDROID_RELRSZ) 0x10 -# GNU64-NEXT: 0x000000006fffe003 (ANDROID_RELRENT) 0x1234 -# GNU64-NEXT: 0x000000006ffffef5 (GNU_HASH) 0x1000 -# GNU64-NEXT: 0x000000006ffffef6 (TLSDESC_PLT) 0x1000 -# GNU64-NEXT: 0x000000006ffffef7 (TLSDESC_GOT) 0x1000 -# GNU64-NEXT: 0x000000006ffffff9 (RELACOUNT) 0 -# GNU64-NEXT: 0x000000006ffffffa (RELCOUNT) 0 -# GNU64-NEXT: 0x000000006ffffffb (FLAGS_1) NOW GLOBAL GROUP NODELETE LOADFLTR INITFIRST NOOPEN ORIGIN DIRECT TRANS INTERPOSE NODEFLIB NODUMP CONFALT ENDFILTEE DISPRELDNE DISPRELPND NODIRECT IGNMULDEF NOKSYMS NOHDR EDITED NORELOC SYMINTPOSE GLOBAUDIT SINGLETON {{$}} -# GNU64-NEXT: 0x000000006ffffff0 (VERSYM) 0x1000 -# GNU64-NEXT: 0x000000006ffffffc (VERDEF) 0x1000 -# GNU64-NEXT: 0x000000006ffffffd (VERDEFNUM) 0 -# GNU64-NEXT: 0x000000006ffffffe (VERNEED) 0x1000 -# GNU64-NEXT: 0x000000006fffffff (VERNEEDNUM) 0 -# GNU64-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: [D] -# GNU64-NEXT: 0x000000007ffffffe (USED) Not needed object: [U] -# GNU64-NEXT: 0x000000007fffffff (FILTER) Filter library: [U] +# GNU64-NEXT: Tag Type Name/Value +# GNU64-NEXT: 0x0000000000000001 (NEEDED) Shared library: [D] +# GNU64-NEXT: 0x0000000000000002 (PLTRELSZ) 16 (bytes) +# GNU64-NEXT: 0x0000000000000003 (PLTGOT) 0x1000 +# GNU64-NEXT: 0x0000000000000004 (HASH) 0x1000 +# GNU64-NEXT: 0x0000000000000005 (STRTAB) 0x1000 +# GNU64-NEXT: 0x0000000000000006 (SYMTAB) 0x1000 +# GNU64-NEXT: 0x0000000000000007 (RELA) 0x1000 +# GNU64-NEXT: 0x0000000000000008 (RELASZ) 16 (bytes) +# GNU64-NEXT: 0x0000000000000009 (RELAENT) 1929 (bytes) +# GNU64-NEXT: 0x000000000000000a (STRSZ) 16 (bytes) +# GNU64-NEXT: 0x000000000000000b (SYMENT) 2439 (bytes) +# GNU64-NEXT: 0x000000000000000c (INIT) 0x1000 +# GNU64-NEXT: 0x000000000000000d (FINI) 0x1000 +# GNU64-NEXT: 0x000000000000000e (SONAME) Library soname: [U] +# GNU64-NEXT: 0x000000000000000f (RPATH) Library rpath: [f] +# GNU64-NEXT: 0x0000000000000010 (SYMBOLIC) 0x1234567890abcdef +# GNU64-NEXT: 0x0000000000000011 (REL) 0x1000 +# GNU64-NEXT: 0x0000000000000012 (RELSZ) 16 (bytes) +# GNU64-NEXT: 0x0000000000000013 (RELENT) 291 (bytes) +# GNU64-NEXT: 0x0000000000000014 (PLTREL) RELA +# GNU64-NEXT: 0x0000000000000015 (DEBUG) 0xfedcba0987654321 +# GNU64-NEXT: 0x0000000000000016 (TEXTREL) 0x1122334455667788 +# GNU64-NEXT: 0x0000000000000017 (JMPREL) 0x1000 +# GNU64-NEXT: 0x0000000000000018 (BIND_NOW) 0x8877665544332211 +# GNU64-NEXT: 0x0000000000000019 (INIT_ARRAY) 0x1000 +# GNU64-NEXT: 0x000000000000001a (FINI_ARRAY) 0x1000 +# GNU64-NEXT: 0x000000000000001b (INIT_ARRAYSZ) 16 (bytes) +# GNU64-NEXT: 0x000000000000001c (FINI_ARRAYSZ) 16 (bytes) +# GNU64-NEXT: 0x000000000000001d (RUNPATH) Library runpath: [w] +# GNU64-NEXT: 0x000000000000001e (FLAGS) ORIGIN SYMBOLIC TEXTREL BIND_NOW STATIC_TLS {{$}} +# GNU64-NEXT: 0x0000000000000020 (PREINIT_ARRAY) 0x1000 +# GNU64-NEXT: 0x0000000000000021 (PREINIT_ARRAYSZ) 16 (bytes) +# GNU64-NEXT: 0x0000000000000022 (SYMTAB_SHNDX) 0x1000 +# GNU64-NEXT: 0x0000000000000023 (RELRSZ) 0x10 +# GNU64-NEXT: 0x0000000000000024 (RELR) 0x1000 +# GNU64-NEXT: 0x0000000000000025 (RELRENT) 0x4321 +# GNU64-NEXT: 0x000000006000000f (ANDROID_REL) 0x1000 +# GNU64-NEXT: 0x0000000060000010 (ANDROID_RELSZ) 16 (bytes) +# GNU64-NEXT: 0x0000000060000011 (ANDROID_RELA) 0x1000 +# GNU64-NEXT: 0x0000000060000012 (ANDROID_RELASZ) 16 (bytes) +# GNU64-NEXT: 0x000000006fffe000 (ANDROID_RELR) 0x1000 +# GNU64-NEXT: 0x000000006fffe001 (ANDROID_RELRSZ) 0x10 +# GNU64-NEXT: 0x000000006fffe003 (ANDROID_RELRENT) 0x1234 +# GNU64-NEXT: 0x000000006ffffef5 (GNU_HASH) 0x1000 +# GNU64-NEXT: 0x000000006ffffef6 (TLSDESC_PLT) 0x1000 +# GNU64-NEXT: 0x000000006ffffef7 (TLSDESC_GOT) 0x1000 +# GNU64-NEXT: 0x000000006ffffff9 (RELACOUNT) 0 +# GNU64-NEXT: 0x000000006ffffffa (RELCOUNT) 0 +# GNU64-NEXT: 0x000000006ffffffb (FLAGS_1) NOW GLOBAL GROUP NODELETE LOADFLTR INITFIRST NOOPEN ORIGIN DIRECT TRANS INTERPOSE NODEFLIB NODUMP CONFALT ENDFILTEE DISPRELDNE DISPRELPND NODIRECT IGNMULDEF NOKSYMS NOHDR EDITED NORELOC SYMINTPOSE GLOBAUDIT SINGLETON {{$}} +# GNU64-NEXT: 0x000000006ffffff0 (VERSYM) 0x1000 +# GNU64-NEXT: 0x000000006ffffffc (VERDEF) 0x1000 +# GNU64-NEXT: 0x000000006ffffffd (VERDEFNUM) 0 +# GNU64-NEXT: 0x000000006ffffffe (VERNEED) 0x1000 +# GNU64-NEXT: 0x000000006fffffff (VERNEEDNUM) 0 +# GNU64-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: [D] +# GNU64-NEXT: 0x000000007ffffffe (USED) Not needed object: [U] +# GNU64-NEXT: 0x000000007fffffff (FILTER) Filter library: [U] # GNU64-NEXT: 0x0000000012345678 (0x12345678) 0x8765432187654321 # GNU64-NEXT: 0x000000006abcdef0 (0x6abcdef0) 0x9988776655443322 # GNU64-NEXT: 0x0000000076543210 (0x76543210) 0x5555666677778888 -# GNU64-NEXT: 0x0000000000000000 (NULL) 0x0 +# GNU64-NEXT: 0x0000000000000000 (NULL) 0x0 --- !ELF FileHeader: @@ -365,68 +365,68 @@ # LLVM32-NEXT:] # GNU32:Dynamic section at offset 0x84 contains 61 entries: -# GNU32-NEXT: Tag Type Name/Value -# GNU32-NEXT: 0x00000001 (NEEDED) Shared library: [D] -# GNU32-NEXT: 0x00000002 (PLTRELSZ) 16 (bytes) -# GNU32-NEXT: 0x00000003 (PLTGOT) 0x1000 -# GNU32-NEXT: 0x00000004 (HASH) 0x1000 -# GNU32-NEXT: 0x00000005 (STRTAB) 0x1000 -# GNU32-NEXT: 0x00000006 (SYMTAB) 0x1000 -# GNU32-NEXT: 0x00000007 (RELA) 0x1000 -# GNU32-NEXT: 0x00000008 (RELASZ) 16 (bytes) -# GNU32-NEXT: 0x00000009 (RELAENT) 1929 (bytes) -# GNU32-NEXT: 0x0000000a (STRSZ) 16 (bytes) -# GNU32-NEXT: 0x0000000b (SYMENT) 2439 (bytes) -# GNU32-NEXT: 0x0000000c (INIT) 0x1000 -# GNU32-NEXT: 0x0000000d (FINI) 0x1000 -# GNU32-NEXT: 0x0000000e (SONAME) Library soname: [U] -# GNU32-NEXT: 0x0000000f (RPATH) Library rpath: [f] -# GNU32-NEXT: 0x00000010 (SYMBOLIC) 0x12345678 -# GNU32-NEXT: 0x00000011 (REL) 0x1000 -# GNU32-NEXT: 0x00000012 (RELSZ) 16 (bytes) -# GNU32-NEXT: 0x00000013 (RELENT) 291 (bytes) -# GNU32-NEXT: 0x00000014 (PLTREL) RELA -# GNU32-NEXT: 0x00000015 (DEBUG) 0xfedcba09 -# GNU32-NEXT: 0x00000016 (TEXTREL) 0x11223344 -# GNU32-NEXT: 0x00000017 (JMPREL) 0x1000 -# GNU32-NEXT: 0x00000018 (BIND_NOW) 0x88776655 -# GNU32-NEXT: 0x00000019 (INIT_ARRAY) 0x1000 -# GNU32-NEXT: 0x0000001a (FINI_ARRAY) 0x1000 -# GNU32-NEXT: 0x0000001b (INIT_ARRAYSZ) 16 (bytes) -# GNU32-NEXT: 0x0000001c (FINI_ARRAYSZ) 16 (bytes) -# GNU32-NEXT: 0x0000001d (RUNPATH) Library runpath: [w] -# GNU32-NEXT: 0x0000001e (FLAGS) ORIGIN SYMBOLIC TEXTREL BIND_NOW STATIC_TLS {{$}} -# GNU32-NEXT: 0x00000020 (PREINIT_ARRAY) 0x1000 -# GNU32-NEXT: 0x00000021 (PREINIT_ARRAYSZ) 16 (bytes) -# GNU32-NEXT: 0x00000022 (SYMTAB_SHNDX) 0x1000 -# GNU32-NEXT: 0x00000023 (RELRSZ) 0x10 -# GNU32-NEXT: 0x00000024 (RELR) 0x1000 -# GNU32-NEXT: 0x00000025 (RELRENT) 0x4321 -# GNU32-NEXT: 0x6000000f (ANDROID_REL) 0x1000 -# GNU32-NEXT: 0x60000010 (ANDROID_RELSZ) 16 (bytes) -# GNU32-NEXT: 0x60000011 (ANDROID_RELA) 0x1000 -# GNU32-NEXT: 0x60000012 (ANDROID_RELASZ) 16 (bytes) -# GNU32-NEXT: 0x6fffe000 (ANDROID_RELR) 0x1000 -# GNU32-NEXT: 0x6fffe001 (ANDROID_RELRSZ) 0x10 -# GNU32-NEXT: 0x6fffe003 (ANDROID_RELRENT) 0x1234 -# GNU32-NEXT: 0x6ffffef5 (GNU_HASH) 0x1000 -# GNU32-NEXT: 0x6ffffef6 (TLSDESC_PLT) 0x1000 -# GNU32-NEXT: 0x6ffffef7 (TLSDESC_GOT) 0x1000 -# GNU32-NEXT: 0x6ffffff9 (RELACOUNT) 0 -# GNU32-NEXT: 0x6ffffffa (RELCOUNT) 0 -# GNU32-NEXT: 0x6ffffffb (FLAGS_1) NOW GLOBAL GROUP NODELETE LOADFLTR INITFIRST NOOPEN ORIGIN DIRECT TRANS INTERPOSE NODEFLIB NODUMP CONFALT ENDFILTEE DISPRELDNE DISPRELPND NODIRECT IGNMULDEF NOKSYMS NOHDR EDITED NORELOC SYMINTPOSE GLOBAUDIT SINGLETON {{$}} -# GNU32-NEXT: 0x6ffffff0 (VERSYM) 0x1000 -# GNU32-NEXT: 0x6ffffffc (VERDEF) 0x1000 -# GNU32-NEXT: 0x6ffffffd (VERDEFNUM) 0 -# GNU32-NEXT: 0x6ffffffe (VERNEED) 0x1000 -# GNU32-NEXT: 0x6fffffff (VERNEEDNUM) 0 -# GNU32-NEXT: 0x7ffffffd (AUXILIARY) Auxiliary library: [D] -# GNU32-NEXT: 0x7ffffffe (USED) Not needed object: [U] -# GNU32-NEXT: 0x7fffffff (FILTER) Filter library: [U] +# GNU32-NEXT: Tag Type Name/Value +# GNU32-NEXT: 0x00000001 (NEEDED) Shared library: [D] +# GNU32-NEXT: 0x00000002 (PLTRELSZ) 16 (bytes) +# GNU32-NEXT: 0x00000003 (PLTGOT) 0x1000 +# GNU32-NEXT: 0x00000004 (HASH) 0x1000 +# GNU32-NEXT: 0x00000005 (STRTAB) 0x1000 +# GNU32-NEXT: 0x00000006 (SYMTAB) 0x1000 +# GNU32-NEXT: 0x00000007 (RELA) 0x1000 +# GNU32-NEXT: 0x00000008 (RELASZ) 16 (bytes) +# GNU32-NEXT: 0x00000009 (RELAENT) 1929 (bytes) +# GNU32-NEXT: 0x0000000a (STRSZ) 16 (bytes) +# GNU32-NEXT: 0x0000000b (SYMENT) 2439 (bytes) +# GNU32-NEXT: 0x0000000c (INIT) 0x1000 +# GNU32-NEXT: 0x0000000d (FINI) 0x1000 +# GNU32-NEXT: 0x0000000e (SONAME) Library soname: [U] +# GNU32-NEXT: 0x0000000f (RPATH) Library rpath: [f] +# GNU32-NEXT: 0x00000010 (SYMBOLIC) 0x12345678 +# GNU32-NEXT: 0x00000011 (REL) 0x1000 +# GNU32-NEXT: 0x00000012 (RELSZ) 16 (bytes) +# GNU32-NEXT: 0x00000013 (RELENT) 291 (bytes) +# GNU32-NEXT: 0x00000014 (PLTREL) RELA +# GNU32-NEXT: 0x00000015 (DEBUG) 0xfedcba09 +# GNU32-NEXT: 0x00000016 (TEXTREL) 0x11223344 +# GNU32-NEXT: 0x00000017 (JMPREL) 0x1000 +# GNU32-NEXT: 0x00000018 (BIND_NOW) 0x88776655 +# GNU32-NEXT: 0x00000019 (INIT_ARRAY) 0x1000 +# GNU32-NEXT: 0x0000001a (FINI_ARRAY) 0x1000 +# GNU32-NEXT: 0x0000001b (INIT_ARRAYSZ) 16 (bytes) +# GNU32-NEXT: 0x0000001c (FINI_ARRAYSZ) 16 (bytes) +# GNU32-NEXT: 0x0000001d (RUNPATH) Library runpath: [w] +# GNU32-NEXT: 0x0000001e (FLAGS) ORIGIN SYMBOLIC TEXTREL BIND_NOW STATIC_TLS {{$}} +# GNU32-NEXT: 0x00000020 (PREINIT_ARRAY) 0x1000 +# GNU32-NEXT: 0x00000021 (PREINIT_ARRAYSZ) 16 (bytes) +# GNU32-NEXT: 0x00000022 (SYMTAB_SHNDX) 0x1000 +# GNU32-NEXT: 0x00000023 (RELRSZ) 0x10 +# GNU32-NEXT: 0x00000024 (RELR) 0x1000 +# GNU32-NEXT: 0x00000025 (RELRENT) 0x4321 +# GNU32-NEXT: 0x6000000f (ANDROID_REL) 0x1000 +# GNU32-NEXT: 0x60000010 (ANDROID_RELSZ) 16 (bytes) +# GNU32-NEXT: 0x60000011 (ANDROID_RELA) 0x1000 +# GNU32-NEXT: 0x60000012 (ANDROID_RELASZ) 16 (bytes) +# GNU32-NEXT: 0x6fffe000 (ANDROID_RELR) 0x1000 +# GNU32-NEXT: 0x6fffe001 (ANDROID_RELRSZ) 0x10 +# GNU32-NEXT: 0x6fffe003 (ANDROID_RELRENT) 0x1234 +# GNU32-NEXT: 0x6ffffef5 (GNU_HASH) 0x1000 +# GNU32-NEXT: 0x6ffffef6 (TLSDESC_PLT) 0x1000 +# GNU32-NEXT: 0x6ffffef7 (TLSDESC_GOT) 0x1000 +# GNU32-NEXT: 0x6ffffff9 (RELACOUNT) 0 +# GNU32-NEXT: 0x6ffffffa (RELCOUNT) 0 +# GNU32-NEXT: 0x6ffffffb (FLAGS_1) NOW GLOBAL GROUP NODELETE LOADFLTR INITFIRST NOOPEN ORIGIN DIRECT TRANS INTERPOSE NODEFLIB NODUMP CONFALT ENDFILTEE DISPRELDNE DISPRELPND NODIRECT IGNMULDEF NOKSYMS NOHDR EDITED NORELOC SYMINTPOSE GLOBAUDIT SINGLETON {{$}} +# GNU32-NEXT: 0x6ffffff0 (VERSYM) 0x1000 +# GNU32-NEXT: 0x6ffffffc (VERDEF) 0x1000 +# GNU32-NEXT: 0x6ffffffd (VERDEFNUM) 0 +# GNU32-NEXT: 0x6ffffffe (VERNEED) 0x1000 +# GNU32-NEXT: 0x6fffffff (VERNEEDNUM) 0 +# GNU32-NEXT: 0x7ffffffd (AUXILIARY) Auxiliary library: [D] +# GNU32-NEXT: 0x7ffffffe (USED) Not needed object: [U] +# GNU32-NEXT: 0x7fffffff (FILTER) Filter library: [U] # GNU32-NEXT: 0x12345678 (0x12345678) 0x87654321 # GNU32-NEXT: 0x6abcdef0 (0x6abcdef0) 0x99887766 # GNU32-NEXT: 0x76543210 (0x76543210) 0x55556666 -# GNU32-NEXT: 0x00000000 (NULL) 0x0 +# GNU32-NEXT: 0x00000000 (NULL) 0x0 --- !ELF FileHeader: @@ -580,3 +580,60 @@ VAddr: 0x1010 Sections: - Section: .dynamic + +## When printing the "Name/Value" column we want to have the minimal possible indentation. +## Use an arbitrary dynamic tag to demonstrate this. + +# RUN: yaml2obj %s --docnum=3 -o %t3 +# RUN: llvm-readobj --dynamic-table %t3 \ +# RUN: | FileCheck %s --check-prefix=INDENT-LLVM-64 --strict-whitespace +# RUN: llvm-readelf --dynamic-table %t3 \ +# RUN: | FileCheck %s --check-prefix=INDENT-GNU-64 --strict-whitespace + +# RUN: yaml2obj %s --docnum=4 -o %t4 +# RUN: llvm-readobj --dynamic-table %t4 \ +# RUN: | FileCheck %s --check-prefix=INDENT-LLVM-32 --strict-whitespace +# RUN: llvm-readelf --dynamic-table %t4 \ +# RUN: | FileCheck %s --check-prefix=INDENT-GNU-32 --strict-whitespace + +# INDENT-LLVM-64:Tag Type Name/Value +# INDENT-LLVM-64:0x0000000000000001 NEEDED Shared + +# INDENT-GNU-64:Tag Type Name/Value +# INDENT-GNU-64:0x0000000000000001 (NEEDED) Shared + +# INDENT-LLVM-32:Tag Type Name/Value +# INDENT-LLVM-32:0x00000001 NEEDED Shared + +# INDENT-GNU-32:Tag Type Name/Value +# INDENT-GNU-32:0x00000001 (NEEDED) Shared + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .dynamic + Type: SHT_DYNAMIC + Entries: + - Tag: DT_NEEDED + Value: 0x1 + - Tag: DT_NULL + Value: 0x0 + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_386 +Sections: + - Name: .dynamic + Type: SHT_DYNAMIC + Entries: + - Tag: DT_NEEDED + Value: 0x1 + - Tag: DT_NULL + Value: 0x0 Index: llvm/tools/llvm-readobj/ELFDumper.cpp =================================================================== --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -3971,6 +3971,15 @@ printRelocation(Obj, S.Sym, S.Name, R, IsRela); } +template +static size_t getMaxDynamicTagSize(const ELFFile *Obj, + typename ELFT::DynRange Tags) { + size_t Max = 0; + for (const typename ELFT::Dyn &Dyn : Tags) + Max = std::max(Max, Obj->getDynamicTagAsString(Dyn.d_tag).size()); + return Max; +} + template void GNUStyle::printDynamic(const ELFO *Obj) { Elf_Dyn_Range Table = this->dumper()->dynamic_table(); if (Table.empty()) @@ -3985,17 +3994,21 @@ 1) << " contains " << Table.size() << " entries:\n"; - bool Is64 = ELFT::Is64Bits; - if (Is64) - OS << " Tag Type Name/Value\n"; - else - OS << " Tag Type Name/Value\n"; + // The type name is surrounded with round brackets, hence add 2. + size_t MaxTagSize = getMaxDynamicTagSize(Obj, Table) + 2; + // The "Name/Value" column should be indented from the "Type" column by N + // whitespaces, where N = MaxTagSize - length of "Type" (4) + trailing + // whitespace (1) = 3. + OS << " Tag" + std::string(ELFT::Is64Bits ? 16 : 8, ' ') + "Type" + << std::string(MaxTagSize - 3, ' ') << "Name/Value\n"; + + std::string ValueFmt = " %-" + std::to_string(MaxTagSize) + "s "; for (auto Entry : Table) { uintX_t Tag = Entry.getTag(); std::string TypeString = std::string("(") + Obj->getDynamicTagAsString(Tag).c_str() + ")"; - OS << " " << format_hex(Tag, Is64 ? 18 : 10) - << format(" %-20s ", TypeString.c_str()); + OS << " " << format_hex(Tag, ELFT::Is64Bits ? 18 : 10) + << format(ValueFmt.c_str(), TypeString.c_str()); this->dumper()->printDynamicEntry(OS, Tag, Entry.getVal()); OS << "\n"; } @@ -5788,15 +5801,20 @@ raw_ostream &OS = W.getOStream(); W.startLine() << "DynamicSection [ (" << Table.size() << " entries)\n"; - bool Is64 = ELFT::Is64Bits; - if (Is64) - W.startLine() << " Tag Type Name/Value\n"; - else - W.startLine() << " Tag Type Name/Value\n"; + size_t MaxTagSize = getMaxDynamicTagSize(Obj, Table); + // The "Name/Value" column should be indented from the "Type" column by N + // whitespaces, where N = MaxTagSize - length of "Type" (4) + trailing + // whitespace (1) = -3. + W.startLine() << " Tag" << std::string(ELFT::Is64Bits ? 16 : 8, ' ') + << "Type" << std::string(MaxTagSize - 3, ' ') << "Name/Value\n"; + + std::string ValueFmt = "%-" + std::to_string(MaxTagSize) + "s "; for (auto Entry : Table) { uintX_t Tag = Entry.getTag(); - W.startLine() << " " << format_hex(Tag, Is64 ? 18 : 10, true) << " " - << format("%-21s", Obj->getDynamicTagAsString(Tag).c_str()); + W.startLine() << " " << format_hex(Tag, ELFT::Is64Bits ? 18 : 10, true) + << " " + << format(ValueFmt.c_str(), + Obj->getDynamicTagAsString(Tag).c_str()); this->dumper()->printDynamicEntry(OS, Tag, Entry.getVal()); OS << "\n"; }