[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