From 4777a84399a5d745283944ce6cd962442b5f504a Mon Sep 17 00:00:00 2001 From: Armando Montanez Date: Wed, 16 Jan 2019 17:47:16 +0000 Subject: [elfabi] Add support for reading DT_SONAME from binaries This change gives the llvm-elfabi tool the ability to read DT_SONAME from a binary ELF file into an ELFStub. Added: - DynamicEntries struct for storing dynamic entries that are relevant to elfabi. - terminatedSubstr() retrieves a null-terminated substring from a StringRef. - appendToError() appends a string to an error, allowing more specific error messages. Differential Revision: https://reviews.llvm.org/D55629 --- .../llvm-elfabi/binary-read-soname-no-null.test | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 llvm/test/tools/llvm-elfabi/binary-read-soname-no-null.test (limited to 'llvm/test/tools/llvm-elfabi/binary-read-soname-no-null.test') diff --git a/llvm/test/tools/llvm-elfabi/binary-read-soname-no-null.test b/llvm/test/tools/llvm-elfabi/binary-read-soname-no-null.test new file mode 100644 index 00000000000..224407d9310 --- /dev/null +++ b/llvm/test/tools/llvm-elfabi/binary-read-soname-no-null.test @@ -0,0 +1,45 @@ +# RUN: yaml2obj %s > %t +# RUN: not llvm-elfabi --elf %t --emit-tbe=%t.tbe 2>&1 | FileCheck %s + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_DYN + Machine: EM_X86_64 +Sections: + - Name: .dynstr + Type: SHT_STRTAB + Flags: [ SHF_ALLOC ] + Address: 0x1000 +# \0 b a z\0 s o m e l i b . s o z z z + Content: "0062617a00736f6d656c69622e736f7a7a7a" + - Name: .dynamic + Type: SHT_DYNAMIC + Flags: [ SHF_ALLOC ] + Address: 0x1018 + AddressAlign: 8 + Content: "0e0000000000000005000000000000000a000000000000000f000000000000000500000000000000001000000000000000000000000000000000000000000000" + # DT_SONAME 5 (0x05) + # DT_STRSZ 15 (0x0F) + # DT_STRTAB 0x1000 + # DT_NULL 0x0 + Size: 64 + Link: .dynstr +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_R ] + VAddr: 0x1000 + PAddr: 0x1000 + Align: 8 + Sections: + - Section: .dynstr + - Section: .dynamic + - Type: PT_DYNAMIC + Flags: [ PF_X, PF_R ] + VAddr: 0x1018 + PAddr: 0x1018 + Sections: + - Section: .dynamic + +# CHECK: String overran bounds of string table (no null terminator) when reading DT_SONAME -- cgit v1.2.3