From 689e6c052e0514020e4a2c7623cb49056888c502 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 25 Oct 2017 03:37:12 +0000 Subject: 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 --- .../tools/llvm-readobj/Inputs/elf-packed-relocs1.s | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs1.s (limited to 'llvm/test/tools/llvm-readobj/Inputs/elf-packed-relocs1.s') 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) -- cgit v1.2.3