[PATCH] D35351: [llvm-readobj] - Teach readobj to print DT_FILTER dynamic tag in human readable form.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 14 08:22:04 PDT 2017
LGTM
George Rimar via Phabricator <reviews at reviews.llvm.org> writes:
> grimar updated this revision to Diff 106615.
> grimar added a comment.
>
> - Updated 2 more testcases affected.
>
>
> https://reviews.llvm.org/D35351
>
> Files:
> test/Object/no-section-table.test
> test/Object/readobj-shared-object.test
> test/tools/llvm-readobj/Inputs/dynamic-table-so.x86
> test/tools/llvm-readobj/Inputs/dynamic-table.c
> test/tools/llvm-readobj/dynamic.test
> tools/llvm-readobj/ELFDumper.cpp
>
> Index: tools/llvm-readobj/ELFDumper.cpp
> ===================================================================
> --- tools/llvm-readobj/ELFDumper.cpp
> +++ tools/llvm-readobj/ELFDumper.cpp
> @@ -1532,6 +1532,7 @@
> LLVM_READOBJ_TYPE_CASE(TLSDESC_PLT);
> LLVM_READOBJ_TYPE_CASE(TLSDESC_GOT);
> LLVM_READOBJ_TYPE_CASE(AUXILIARY);
> + LLVM_READOBJ_TYPE_CASE(FILTER);
> default: return "unknown";
> }
> }
> @@ -1624,6 +1625,10 @@
> return StringRef(DynamicStringTable.data() + Value);
> }
>
> +static void printLibrary(raw_ostream &OS, const Twine &Tag, const Twine &Name) {
> + OS << Tag << ": [" << Name << "]";
> +}
> +
> template <class ELFT>
> void ELFDumper<ELFT>::printValue(uint64_t Type, uint64_t Value) {
> raw_ostream &OS = W.getOStream();
> @@ -1687,13 +1692,16 @@
> OS << Value << " (bytes)";
> break;
> case DT_NEEDED:
> - OS << "SharedLibrary (" << getDynamicString(Value) << ")";
> + printLibrary(OS, "Shared library", getDynamicString(Value));
> break;
> case DT_SONAME:
> - OS << "LibrarySoname (" << getDynamicString(Value) << ")";
> + printLibrary(OS, "Library soname", getDynamicString(Value));
> break;
> case DT_AUXILIARY:
> - OS << "Auxiliary library: [" << getDynamicString(Value) << "]";
> + printLibrary(OS, "Auxiliary library", getDynamicString(Value));
> + break;
> + case DT_FILTER:
> + printLibrary(OS, "Filter library", getDynamicString(Value));
> break;
> case DT_RPATH:
> case DT_RUNPATH:
> Index: test/tools/llvm-readobj/dynamic.test
> ===================================================================
> --- test/tools/llvm-readobj/dynamic.test
> +++ test/tools/llvm-readobj/dynamic.test
> @@ -8,7 +8,7 @@
> ELF-MIPS: LoadName:
> ELF-MIPS: DynamicSection [ (23 entries)
> ELF-MIPS: Tag Type Name/Value
> -ELF-MIPS: 0x00000001 NEEDED SharedLibrary (libc.so.6)
> +ELF-MIPS: 0x00000001 NEEDED Shared library: [libc.so.6]
> ELF-MIPS: 0x0000000C INIT 0x528
> ELF-MIPS: 0x0000000D FINI 0x860
> ELF-MIPS: 0x00000004 HASH 0x210
> @@ -43,7 +43,7 @@
> ELF-MIPS-EXE: LoadName:
> ELF-MIPS-EXE: DynamicSection [ (26 entries)
> ELF-MIPS-EXE: Tag Type Name/Value
> -ELF-MIPS-EXE: 0x00000001 NEEDED SharedLibrary (libc.so.6)
> +ELF-MIPS-EXE: 0x00000001 NEEDED Shared library: [libc.so.6]
> ELF-MIPS-EXE: 0x0000000C INIT 0x400418
> ELF-MIPS-EXE: 0x0000000D FINI 0x4007B0
> ELF-MIPS-EXE: 0x00000004 HASH 0x4002B8
> @@ -80,9 +80,9 @@
> ELF-X86-EXE: LoadName:
> ELF-X86-EXE: DynamicSection [ (30 entries)
> ELF-X86-EXE: Tag Type Name/Value
> -ELF-X86-EXE: 0x00000001 NEEDED SharedLibrary (libstdc++.so.6)
> -ELF-X86-EXE: 0x00000001 NEEDED SharedLibrary (libgcc_s.so.1)
> -ELF-X86-EXE: 0x00000001 NEEDED SharedLibrary (libc.so.6)
> +ELF-X86-EXE: 0x00000001 NEEDED Shared library: [libstdc++.so.6]
> +ELF-X86-EXE: 0x00000001 NEEDED Shared library: [libgcc_s.so.1]
> +ELF-X86-EXE: 0x00000001 NEEDED Shared library: [libc.so.6]
> ELF-X86-EXE: 0x0000000C INIT 0x62C
> ELF-X86-EXE: 0x0000000D FINI 0x920
> ELF-X86-EXE: 0x00000019 INIT_ARRAY 0x19FC
> @@ -119,32 +119,33 @@
> ELF-X86-SO: Arch: x86_64
> ELF-X86-SO: AddressSize: 64bit
> ELF-X86-SO: LoadName:
> -ELF-X86-SO: DynamicSection [ (26 entries)
> +ELF-X86-SO: DynamicSection [ ({{[0-9]+}} entries)
> ELF-X86-SO: Tag Type Name/Value
> -ELF-X86-SO: 0x0000000000000001 NEEDED SharedLibrary (libc.so.6)
> -ELF-X86-SO: 0x0000000000000001 NEEDED SharedLibrary (ld-linux-x86-64.so.2)
> -ELF-X86-SO: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [aux_val]
> -ELF-X86-SO: 0x000000000000000C INIT 0x610
> -ELF-X86-SO: 0x000000000000000D FINI 0x7AC
> -ELF-X86-SO: 0x0000000000000019 INIT_ARRAY 0x200DD0
> +ELF-X86-SO: 0x0000000000000001 NEEDED Shared library: [libc.so.6]
> +ELF-X86-SO: 0x0000000000000001 NEEDED Shared library: [ld-linux-x86-64.so.2]
> +ELF-X86-SO: 0x000000007FFFFFFF FILTER Filter library: [filter.so]
> +ELF-X86-SO: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [aux.so]
> +ELF-X86-SO: 0x000000000000000C INIT 0x{{[0-9A-F]+}}
> +ELF-X86-SO: 0x000000000000000D FINI 0x{{[0-9A-F]+}}
> +ELF-X86-SO: 0x0000000000000019 INIT_ARRAY 0x{{[0-9A-F]+}}
> ELF-X86-SO: 0x000000000000001B INIT_ARRAYSZ 8 (bytes)
> -ELF-X86-SO: 0x000000000000001A FINI_ARRAY 0x200DD8
> +ELF-X86-SO: 0x000000000000001A FINI_ARRAY 0x{{[0-9A-F]+}}
> ELF-X86-SO: 0x000000000000001C FINI_ARRAYSZ 8 (bytes)
> ELF-X86-SO: 0x000000006FFFFEF5 GNU_HASH 0x1C8
> ELF-X86-SO: 0x0000000000000005 STRTAB 0x3A0
> ELF-X86-SO: 0x0000000000000006 SYMTAB 0x208
> -ELF-X86-SO: 0x000000000000000A STRSZ 231 (bytes)
> +ELF-X86-SO: 0x000000000000000A STRSZ {{[0-9]+}} (bytes)
> ELF-X86-SO: 0x000000000000000B SYMENT 24 (bytes)
> ELF-X86-SO: 0x0000000000000003 PLTGOT 0x201000
> ELF-X86-SO: 0x0000000000000002 PLTRELSZ 48 (bytes)
> ELF-X86-SO: 0x0000000000000014 PLTREL RELA
> -ELF-X86-SO: 0x0000000000000017 JMPREL 0x5E0
> -ELF-X86-SO: 0x0000000000000007 RELA 0x4F0
> +ELF-X86-SO: 0x0000000000000017 JMPREL 0x{{[0-9A-F]+}}
> +ELF-X86-SO: 0x0000000000000007 RELA 0x{{[0-9A-F]+}}
> ELF-X86-SO: 0x0000000000000008 RELASZ 240 (bytes)
> ELF-X86-SO: 0x0000000000000009 RELAENT 24 (bytes)
> -ELF-X86-SO: 0x000000006FFFFFFE VERNEED 0x4B0
> +ELF-X86-SO: 0x000000006FFFFFFE VERNEED 0x{{[0-9A-F]+}}
> ELF-X86-SO: 0x000000006FFFFFFF VERNEEDNUM 2
> -ELF-X86-SO: 0x000000006FFFFFF0 VERSYM 0x488
> +ELF-X86-SO: 0x000000006FFFFFF0 VERSYM 0x{{[0-9A-F]+}}
> ELF-X86-SO: 0x000000006FFFFFF9 RELACOUNT 3
> ELF-X86-SO: 0x0000000000000000 NULL 0x0
>
> @@ -157,7 +158,7 @@
> ELF-AARCH64-SO: LoadName:
> ELF-AARCH64-SO: DynamicSection [ (26 entries)
> ELF-AARCH64-SO: Tag Type Name/Value
> -ELF-AARCH64-SO: 0x0000000000000001 NEEDED SharedLibrary (libc.so.6)
> +ELF-AARCH64-SO: 0x0000000000000001 NEEDED Shared library: [libc.so.6]
> ELF-AARCH64-SO: 0x000000000000000C INIT 0x660
> ELF-AARCH64-SO: 0x000000000000000D FINI 0x83C
> ELF-AARCH64-SO: 0x0000000000000019 INIT_ARRAY 0x10DB8
> Index: test/tools/llvm-readobj/Inputs/dynamic-table.c
> ===================================================================
> --- test/tools/llvm-readobj/Inputs/dynamic-table.c
> +++ test/tools/llvm-readobj/Inputs/dynamic-table.c
> @@ -1,10 +1,10 @@
> // clang -target x86_64-linux-gnu -shared -fPIC -lc dynamic-table.c \
> -// -o dynamic-table-so.x86 -Wl,-f,aux_val
> +// -o dynamic-table-so.x86 -Wl,-f,aux.so -Wl,-F,filter.so
> // clang -target mipsel-linux-gnu -shared -fPIC -lc dynamic-table.c \
> // -o dynamic-table-so.mips
> // clang -target mipsel-linux-gnu -lc dynamic-table.c \
> // -o dynamic-table-exe.mips
> -// clang -target aarch64-linux-gnu -fPIC -shared dynamic-table.c \
> +// clang -target aarch64-linux-gnu -fPIC -shared dynamic-table.c\
> // -o dynamic-table-so.aarch64
> int puts(const char *);
>
> Index: test/Object/readobj-shared-object.test
> ===================================================================
> --- test/Object/readobj-shared-object.test
> +++ test/Object/readobj-shared-object.test
> @@ -302,9 +302,9 @@
>
> ELF32: DynamicSection [ (9 entries)
> ELF32: Tag Type Name/Value
> -ELF32: 0x00000001 NEEDED SharedLibrary (libc.so.6)
> -ELF32: 0x00000001 NEEDED SharedLibrary (libm.so.6)
> -ELF32: 0x0000000E SONAME LibrarySoname (libfoo.so)
> +ELF32: 0x00000001 NEEDED Shared library: [libc.so.6]
> +ELF32: 0x00000001 NEEDED Shared library: [libm.so.6]
> +ELF32: 0x0000000E SONAME Library soname: [libfoo.so]
> ELF32: 0x00000004 HASH {{[0-9a-f]+}}
> ELF32: 0x00000005 STRTAB {{[0-9a-f]+}}
> ELF32: 0x00000006 SYMTAB {{[0-9a-f]+}}
> @@ -315,9 +315,9 @@
>
> ELF64: DynamicSection [ (9 entries)
> ELF64: Tag Type Name/Value
> -ELF64: 0x0000000000000001 NEEDED SharedLibrary (libc.so.6)
> -ELF64: 0x0000000000000001 NEEDED SharedLibrary (libm.so.6)
> -ELF64: 0x000000000000000E SONAME LibrarySoname (libfoo.so)
> +ELF64: 0x0000000000000001 NEEDED Shared library: [libc.so.6]
> +ELF64: 0x0000000000000001 NEEDED Shared library: [libm.so.6]
> +ELF64: 0x000000000000000E SONAME Library soname: [libfoo.so]
> ELF64: 0x0000000000000004 HASH {{[0-9a-f]+}}
> ELF64: 0x0000000000000005 STRTAB {{[0-9a-f]+}}
> ELF64: 0x0000000000000006 SYMTAB {{[0-9a-f]+}}
> Index: test/Object/no-section-table.test
> ===================================================================
> --- test/Object/no-section-table.test
> +++ test/Object/no-section-table.test
> @@ -3,7 +3,7 @@
>
> CHECK: DynamicSection [ (24 entries)
> CHECK: Tag Type Name/Value
> -CHECK: 0x0000000000000001 NEEDED SharedLibrary (libc.so.6)
> +CHECK: 0x0000000000000001 NEEDED Shared library: [libc.so.6]
> CHECK: 0x000000000000000C INIT 0x4B8
> CHECK: 0x000000000000000D FINI 0x618
> CHECK: 0x0000000000000019 INIT_ARRAY 0x2006C0
More information about the llvm-commits
mailing list