diff options
author | Rui Ueyama <ruiu@google.com> | 2014-03-21 00:44:19 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2014-03-21 00:44:19 +0000 |
commit | 99995267aec69859a039670e3ba76c64f969b2bf (patch) | |
tree | 52728200aec3dfb7ab0c42e73ab4a26fc7b289f6 /test/tools | |
parent | fab1a40a7b6133dec43fc9de7a6a36c7c719ed30 (diff) | |
download | llvm-99995267aec69859a039670e3ba76c64f969b2bf.tar.gz llvm-99995267aec69859a039670e3ba76c64f969b2bf.tar.bz2 llvm-99995267aec69859a039670e3ba76c64f969b2bf.tar.xz |
Object/COFF: Support large relocation table.
NumberOfRelocations field in COFF section table is only 16-bit wide. If an
object has more than 65535 relocations, the number of relocations is stored
to VirtualAddress field in the first relocation field, and a special flag
(IMAGE_SCN_LNK_NRELOC_OVFL) is set to Characteristics field.
In test we cheated a bit. I made up a test file so that it has
IMAGE_SCN_LNK_NRELOC_OVFL flag but the number of relocations is much smaller
than 65535. This is to avoid checking in a large test file just to test a
file with many relocations.
Differential Revision: http://llvm-reviews.chandlerc.com/D3139
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204418 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tools')
-rw-r--r-- | test/tools/llvm-objdump/Inputs/many-relocs.obj-i386 | bin | 0 -> 305 bytes | |||
-rw-r--r-- | test/tools/llvm-objdump/coff-many-relocs.test | 14 |
2 files changed, 14 insertions, 0 deletions
diff --git a/test/tools/llvm-objdump/Inputs/many-relocs.obj-i386 b/test/tools/llvm-objdump/Inputs/many-relocs.obj-i386 Binary files differnew file mode 100644 index 0000000000..c13e235658 --- /dev/null +++ b/test/tools/llvm-objdump/Inputs/many-relocs.obj-i386 diff --git a/test/tools/llvm-objdump/coff-many-relocs.test b/test/tools/llvm-objdump/coff-many-relocs.test new file mode 100644 index 0000000000..d6d0d608b3 --- /dev/null +++ b/test/tools/llvm-objdump/coff-many-relocs.test @@ -0,0 +1,14 @@ +// Test that llvm-objdump can handle IMAGE_SCN_LNK_NRELOC_OVFL. +// RUN: llvm-objdump -r %p/Inputs/many-relocs.obj-i386 | FileCheck %s + +CHECK: RELOCATION RECORDS FOR [.text]: +CHECK-NEXT: IMAGE_REL_I386_DIR16 foo +CHECK-NEXT: IMAGE_REL_I386_REL16 foo +CHECK-NEXT: IMAGE_REL_I386_DIR32 foo +CHECK-NEXT: IMAGE_REL_I386_DIR32NB foo +CHECK-NEXT: IMAGE_REL_I386_SEG12 foo +CHECK-NEXT: IMAGE_REL_I386_SECTION foo +CHECK-NEXT: IMAGE_REL_I386_SECREL foo +CHECK-NEXT: IMAGE_REL_I386_TOKEN foo +CHECK-NEXT: IMAGE_REL_I386_SECREL7 foo +CHECK-NEXT: IMAGE_REL_I386_REL32 foo |