Fixed a crash in the integrated assembler for Mach-O when a symbol difference
[oota-llvm.git] / test / MC / MachO / darwin-x86_64-diff-reloc-assign-2.s
1 // RUN: llvm-mc -triple x86_64-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
2
3 // Test case for rdar://9356266
4
5 // This tests that this expression does not cause a crash and produces these
6 // four relocation entries:
7 // Relocation information (__DATA,__data) 4 entries
8 // address  pcrel length extern type    scattered symbolnum/value
9 // 00000004 False long   False  SUB     False     2 (__DATA,__data)
10 // 00000004 False long   False  UNSIGND False     2 (__DATA,__data)
11 // 00000000 False long   False  SUB     False     2 (__DATA,__data)
12 // 00000000 False long   False  UNSIGND False     2 (__DATA,__data)
13
14         .data
15 L_var1:
16 L_var2:
17 // This was working fine
18         .long L_var2 - L_var1
19         
20         .set L_var3, .
21         .set L_var4, .
22 // But this was causing a crash
23         .long L_var4 - L_var3
24
25 // CHECK:  ('_relocations', [
26 // CHECK:    # Relocation 0
27 // CHECK:    (('word-0', 0x4),
28 // CHECK:     ('word-1', 0x54000002)),
29 // CHECK:    # Relocation 1
30 // CHECK:    (('word-0', 0x4),
31 // CHECK:     ('word-1', 0x4000002)),
32 // CHECK:    # Relocation 2
33 // CHECK:    (('word-0', 0x0),
34 // CHECK:     ('word-1', 0x54000002)),
35 // CHECK:    # Relocation 3
36 // CHECK:    (('word-0', 0x0),
37 // CHECK:     ('word-1', 0x4000002)),
38 // CHECK:  ])