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 | c03a0c241e9c13549e6e8e7f4f50d81cc5b0a76e (patch) | |
tree | 6388c762ed3aed544fe6fc1eda4889c249222139 /llvm/test/MC | |
parent | 4ca7389925e0f7578cfc7af894a0d655672eb4ee (diff) | |
download | bcm5719-llvm-c03a0c241e9c13549e6e8e7f4f50d81cc5b0a76e.tar.gz bcm5719-llvm-c03a0c241e9c13549e6e8e7f4f50d81cc5b0a76e.zip |
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
llvm-svn: 164724
Diffstat (limited to 'llvm/test/MC')
-rw-r--r-- | llvm/test/MC/MachO/i386-large-relocations.s | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/MC/MachO/i386-large-relocations.s b/llvm/test/MC/MachO/i386-large-relocations.s new file mode 100644 index 00000000000..e5a1cfb2c5e --- /dev/null +++ b/llvm/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: ]) |