|
3 | 3 |
|
4 | 4 | // RUN: llvm-mc -filetype obj -triple x86_64-linux-elf %s -o %t.o
|
5 | 5 | // RUN: llvm-dwarfdump -v --debug-line %t.o | FileCheck %s --check-prefix=CHECK-LINE-TABLE
|
6 |
| -// RUN: llvm-objdump -s -j .offset_02 -j .offset_03 -j .offset_05 %t.o | FileCheck %s --check-prefix=CHECK-SECTIONS |
| 6 | +// RUN: llvm-readelf -s %t.o | FileCheck %s --check-prefix=CHECK-SYM |
| 7 | +// RUN: llvm-objdump -s -j .offsets %t.o | FileCheck %s --check-prefix=CHECK-OFFSETS |
| 8 | + |
| 9 | +// RUN: not llvm-mc -filetype obj -triple x86_64-linux-elf --defsym ERR=1 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR --implicit-check-not=error: |
| 10 | +// RUN: not llvm-mc -filetype obj -triple x86_64-linux-elf --defsym ERR2=1 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR2 --implicit-check-not=error: |
7 | 11 |
|
8 | 12 |
|
9 | 13 |
|
|
34 | 38 | # CHECK-LINE-TABLE-NEXT: 0x00000069: 05 DW_LNS_set_column (5)
|
35 | 39 | # CHECK-LINE-TABLE-NEXT: 0x0000006b: 01 DW_LNS_copy
|
36 | 40 | # CHECK-LINE-TABLE-NEXT: 0x0000000000000018 1 5 1 0 0 0 is_stmt
|
37 |
| -# CHECK-LINE-TABLE-NEXT: 0x0000006c: 02 DW_LNS_advance_pc (addr += 9, op-index += 0) |
38 |
| -# CHECK-LINE-TABLE-NEXT: 0x0000006e: 00 DW_LNE_end_sequence |
39 |
| -# CHECK-LINE-TABLE-NEXT: 0x0000000000000021 1 5 1 0 0 0 is_stmt end_sequence |
| 41 | +# CHECK-LINE-TABLE-NEXT: 0x0000006c: 00 DW_LNE_end_sequence |
| 42 | +# CHECK-LINE-TABLE-NEXT: 0x0000000000000018 1 5 1 0 0 0 is_stmt end_sequence |
40 | 43 |
|
41 |
| -# CHECK-SECTIONS: Contents of section .offset_02: |
42 |
| -# CHECK-SECTIONS-NEXT: 0000 39000000 |
| 44 | +# CHECK-SYM: Symbol table '.symtab' contains 9 entries: |
| 45 | +# CHECK-SYM-NEXT: Num: Value Size Type Bind Vis Ndx Name |
| 46 | +# CHECK-SYM-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND |
| 47 | +# CHECK-SYM-NEXT: 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS test.c |
| 48 | +# CHECK-SYM-NEXT: 2: 0000000000000000 0 SECTION LOCAL DEFAULT 2 .text |
| 49 | +# CHECK-SYM-NEXT: 3: 0000000000000039 0 NOTYPE LOCAL DEFAULT 3 my_label_02 |
| 50 | +# CHECK-SYM-NEXT: 4: 000000000000004a 0 NOTYPE LOCAL DEFAULT 3 my_label_03 |
| 51 | +# CHECK-SYM-NEXT: 5: 000000000000005b 0 NOTYPE LOCAL DEFAULT 3 my_label_04 |
| 52 | +# CHECK-SYM-NEXT: 6: 000000000000004a 0 NOTYPE LOCAL DEFAULT 3 my_label_03.1 |
| 53 | +# CHECK-SYM-NEXT: 7: 000000000000006f 0 NOTYPE LOCAL DEFAULT 3 my_label_05 |
| 54 | +# CHECK-SYM-NEXT: 8: 0000000000000000 0 FUNC GLOBAL DEFAULT 2 foo |
43 | 55 |
|
44 |
| -# CHECK-SECTIONS: Contents of section .offset_03: |
45 |
| -# CHECK-SECTIONS-NEXT: 0000 4a000000 |
| 56 | +# CHECK-OFFSETS: 0000 39000000 4a000000 5b000000 |
46 | 57 |
|
47 |
| -# CHECK-SECTIONS: Contents of section .offset_05: |
48 |
| -# CHECK-SECTIONS-NEXT: 0000 5b000000 |
49 | 58 | .text
|
50 | 59 | .file "test.c"
|
51 | 60 | .globl foo
|
|
67 | 76 | .loc 1 1 4
|
68 | 77 | .loc_label my_label_04
|
69 | 78 | .loc 1 1 5
|
| 79 | +.ifdef ERR |
| 80 | + .loc_label my_label_04 |
| 81 | +# ERR: [[#@LINE+1]]:13: error: expected identifier |
| 82 | + .loc_label |
| 83 | +# ERR: [[#@LINE+1]]:19: error: expected newline |
| 84 | + .loc_label aaaa bbbb |
| 85 | +.endif |
| 86 | +.ifdef ERR2 |
| 87 | +# ERR2: [[#@LINE+1]]:14: error: symbol 'my_label_04' is already defined |
| 88 | + .loc_label my_label_04 |
| 89 | +.endif |
70 | 90 | mov %rax, 0x04
|
| 91 | + .loc_label my_label_05 |
71 | 92 | ret
|
72 | 93 | .cfi_endproc
|
73 | 94 |
|
74 | 95 | .section .debug_line,"",@progbits
|
75 | 96 | .Lline_table_start0:
|
76 | 97 |
|
77 |
| - .section .offset_02,"",@progbits |
78 |
| - .quad my_label_02-.Lline_table_start0 |
79 |
| - |
80 |
| - .section .offset_03,"",@progbits |
81 |
| - .quad my_label_03-.Lline_table_start0 |
82 |
| - |
83 |
| - .section .offset_05,"",@progbits |
84 |
| - .quad my_label_04-.Lline_table_start0 |
| 98 | + .section .offsets,"",@progbits |
| 99 | + .long my_label_02-.Lline_table_start0 |
| 100 | + .long my_label_03-.Lline_table_start0 |
| 101 | + .long my_label_04-.Lline_table_start0 |
0 commit comments