diff options
author | Jim Grosbach <grosbach@apple.com> | 2012-09-26 21:27:45 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2012-09-26 21:27:45 +0000 |
commit | b7abea08409d4f15063b25e025f160a5469efd54 (patch) | |
tree | 6577a96f00807c9e4b8f0ca319ba823a3a8894ad /test | |
parent | 2c79ecbd704c656178ffa43d5a58ebe3ca188b40 (diff) | |
download | external_llvm-b7abea08409d4f15063b25e025f160a5469efd54.zip external_llvm-b7abea08409d4f15063b25e025f160a5469efd54.tar.gz external_llvm-b7abea08409d4f15063b25e025f160a5469efd54.tar.bz2 |
X86_32: Large Symbol+Offset relocations.
If the offset is more than 24-bits, it won't fit in a scattered
relocation offset field, so we fall back to using a non-scattered
relocation.
rdar://12358909
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164724 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/MC/MachO/i386-large-relocations.s | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/MC/MachO/i386-large-relocations.s b/test/MC/MachO/i386-large-relocations.s new file mode 100644 index 0000000..e5a1cfb --- /dev/null +++ b/test/MC/MachO/i386-large-relocations.s @@ -0,0 +1,36 @@ +// RUN: llvm-mc -triple i386-apple-darwin10 %s -filetype=obj -o - | macho-dump | FileCheck %s + +.space 0x1ed280 + .section __DATA,__const + .align 4 +.space 0x5181020 +_foo: + .long _bar + .long 0 + .long _bar+8 + .long _bar+24 + .long 0 + .long _bar+16 + +.zerofill __DATA,__bss,__dummy,0x5d780 +.zerofill __DATA,__bss,_bar,48,4 + +// Normally scattered relocations are used for sym+offset expressions. When +// the value exceeds 24-bits, however, it's outside what MachO can encode, +// so the assembler falls back to non-scattered relocations. +// rdar://12358909 + +// CHECK: ('_relocations', [ +// CHECK: # Relocation 0 +// CHECK: (('word-0', 0x5181034), +// CHECK: ('word-1', 0x4000003)), +// CHECK: # Relocation 1 +// CHECK: (('word-0', 0x518102c), +// CHECK: ('word-1', 0x4000003)), +// CHECK: # Relocation 2 +// CHECK: (('word-0', 0x5181028), +// CHECK: ('word-1', 0x4000003)), +// CHECK: # Relocation 3 +// CHECK: (('word-0', 0x5181020), +// CHECK: ('word-1', 0x4000003)), +// CHECK: ]) |