diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2017-10-25 03:37:12 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2017-10-25 03:37:12 +0000 |
commit | 689e6c052e0514020e4a2c7623cb49056888c502 (patch) | |
tree | 75561fd06d3c6639c9128e14b13c850c35156faf /llvm/test/tools/llvm-readobj/Inputs | |
parent | 9f46ece85a1844c23a710645d9f84d936197d8de (diff) | |
download | bcm5719-llvm-689e6c052e0514020e4a2c7623cb49056888c502.tar.gz bcm5719-llvm-689e6c052e0514020e4a2c7623cb49056888c502.zip |
llvm-readobj: Add support for reading relocations in the Android packed format.
This is in preparation for testing lld's upcoming relocation packing
feature (D39152). I have verified that this implementation correctly
unpacks the relocations from a Chromium DSO built with gold and the
Android relocation packer for ARM32 and ARM64.
Differential Revision: https://reviews.llvm.org/D39272
llvm-svn: 316543
Diffstat (limited to 'llvm/test/tools/llvm-readobj/Inputs')
-rw-r--r-- | llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs1.s | 37 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs2.s | 15 |
2 files changed, 52 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs1.s b/llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs1.s new file mode 100644 index 00000000000..ac844095104 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs1.s @@ -0,0 +1,37 @@ +.ascii "APS2" +.sleb128 8 // Number of relocations +.sleb128 4096 // Initial offset + +.sleb128 2 // Number of relocations in group +.sleb128 1 // RELOCATION_GROUPED_BY_INFO_FLAG +.sleb128 8 // R_X86_RELATIVE + +.sleb128 256 // Reloc 1: r_offset delta +.sleb128 128 // Reloc 2: r_offset delta + +.sleb128 2 // Number of relocations in group +.sleb128 2 // RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG +.sleb128 8 // offset delta + +.sleb128 (1 << 32) | 1 // R_X86_64_64 (sym index 1) +.sleb128 (2 << 32) | 1 // R_X86_64_64 (sym index 2) + +.sleb128 2 // Number of relocations in group +.sleb128 8 // RELOCATION_GROUP_HAS_ADDEND_FLAG + +.sleb128 1 // offset delta +.sleb128 (1 << 32) | 1 // R_X86_64_64 (sym index 1) +.sleb128 8 // addend delta + +.sleb128 2 // offset delta +.sleb128 (2 << 32) | 1 // R_X86_64_64 (sym index 2) +.sleb128 4 // addend delta + +.sleb128 2 // Number of relocations in group +.sleb128 12 // RELOCATION_GROUP_HAS_ADDEND_FLAG | RELOCATION_GROUPED_BY_ADDEND_FLAG +.sleb128 -2 // addend delta + +.sleb128 4 // offset delta +.sleb128 (1 << 32) | 1 // R_X86_64_64 (sym index 1) +.sleb128 8 // offset delta +.sleb128 (2 << 32) | 1 // R_X86_64_64 (sym index 2) diff --git a/llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs2.s b/llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs2.s new file mode 100644 index 00000000000..73b3733e2dc --- /dev/null +++ b/llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs2.s @@ -0,0 +1,15 @@ +.ascii "APS2" +.sleb128 10 // Number of relocations +.sleb128 4096 // Initial offset + +.sleb128 2 // Number of relocations in group +.sleb128 2 // RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG +.sleb128 8 // offset delta + +.sleb128 (1 << 8) | 1 // R_386_32 (sym index 1) +.sleb128 (2 << 8) | 3 // R_386_GOT32 (sym index 2) + +.sleb128 8 // Number of relocations in group +.sleb128 3 // RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG | RELOCATION_GROUPED_BY_INFO_FLAG +.sleb128 -4 // offset delta +.sleb128 8 // R_386_RELATIVE |