Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / MC / ELF / gen-dwarf64.s
blobe36a07566b3f71be808fcffd56864b9ddabf1a4a
1 ## This checks that llvm-mc is able to produce 64-bit debug info.
3 # RUN: llvm-mc -g -dwarf-version 3 -dwarf64 -triple x86_64 %s -filetype=obj -o %t3.o
4 # RUN: llvm-readobj -r %t3.o | FileCheck --check-prefixes=REL,REL3 %s --implicit-check-not="R_{{.*}} .debug_"
5 # RUN: llvm-dwarfdump -v %t3.o | FileCheck --check-prefixes=DUMP,DUMP3 %s
7 # RUN: llvm-mc -g -dwarf-version 5 -dwarf64 -triple x86_64 %s -filetype=obj -o %t5.o
8 # RUN: llvm-readobj -r %t5.o | FileCheck --check-prefixes=REL,REL5 %s --implicit-check-not="R_{{.*}} .debug_"
9 # RUN: llvm-dwarfdump -v %t5.o | FileCheck --check-prefixes=DUMP,DUMP5 %s
11 ## The references to other debug info sections are 64-bit, as required for DWARF64.
12 # REL: Section ({{[0-9]+}}) .rela.debug_frame {
13 # REL-NEXT: R_X86_64_64 .debug_frame 0x0
14 # REL: Section ({{[0-9]+}}) .rela.debug_info {
15 # REL-NEXT: R_X86_64_64 .debug_abbrev 0x0
16 # REL-NEXT: R_X86_64_64 .debug_line 0x0
17 # REL3-NEXT: R_X86_64_64 .debug_ranges 0x0
18 # REL5-NEXT: R_X86_64_64 .debug_rnglists 0x14
19 # REL: Section ({{[0-9]+}}) .rela.debug_aranges {
20 # REL-NEXT: R_X86_64_64 .debug_info 0x0
21 # REL5: Section ({{[0-9]+}}) .rela.debug_line {
22 # REL5-NEXT: R_X86_64_64 .debug_line_str 0x0
23 # REL5-NEXT: R_X86_64_64 .debug_line_str 0x
25 ## DW_FORM_sec_offset was introduced in DWARFv4.
26 ## For DWARFv3, DW_FORM_data8 is used instead.
27 # DUMP: .debug_abbrev contents:
28 # DUMP3: DW_AT_stmt_list DW_FORM_data8
29 # DUMP3-NEXT: DW_AT_ranges DW_FORM_data8
30 # DUMP5: DW_AT_stmt_list DW_FORM_sec_offset
31 # DUMP5-NEXT: DW_AT_ranges DW_FORM_sec_offset
33 # DUMP: .debug_info contents:
34 # DUMP-NEXT: 0x00000000: Compile Unit: {{.*}} format = DWARF64
35 # DUMP: DW_TAG_compile_unit [1] *
36 # DUMP3-NEXT: DW_AT_stmt_list [DW_FORM_data8] (0x0000000000000000)
37 # DUMP5-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000000000000000)
38 # DUMP3-NEXT: DW_AT_ranges [DW_FORM_data8] (0x0000000000000000
39 # DUMP5-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x0000000000000014
40 # DUMP-NEXT: [0x0000000000000000, 0x0000000000000001) ".foo"
41 # DUMP-NEXT: [0x0000000000000000, 0x0000000000000001) ".bar")
42 # DUMP: DW_TAG_label [2]
43 # DUMP-NEXT: DW_AT_name [DW_FORM_string] ("foo")
44 # DUMP: DW_TAG_label [2]
45 # DUMP-NEXT: DW_AT_name [DW_FORM_string] ("bar")
47 # DUMP: .debug_frame contents:
48 # DUMP: 00000000 {{([[:xdigit:]]{16})}} ffffffffffffffff CIE
49 # DUMP-NEXT: Format: DWARF64
50 # DUMP: {{([[:xdigit:]]{8})}} {{([[:xdigit:]]{16})}} 0000000000000000 FDE cie=00000000 pc=00000000...00000001
51 # DUMP-NEXT: Format: DWARF64
53 ## Even though the debug info sections are in the 64-bit format,
54 ## .eh_frame is still generated as 32-bit.
55 # DUMP: .eh_frame contents:
56 # DUMP: 00000000 {{([[:xdigit:]]{8})}} 00000000 CIE
57 # DUMP-NEXT: Format: DWARF32
58 # DUMP: {{([[:xdigit:]]{8})}} {{([[:xdigit:]]{8})}} {{([[:xdigit:]]{8})}} FDE cie=00000000 pc=00000000...00000001
59 # DUMP-NEXT: Format: DWARF32
61 # DUMP: .debug_aranges contents:
62 # DUMP-NEXT: Address Range Header: length = 0x0000000000000044, format = DWARF64, version = 0x0002, cu_offset = 0x0000000000000000, addr_size = 0x08, seg_size = 0x00
63 # DUMP-NEXT: [0x0000000000000000, 0x0000000000000001)
64 # DUMP-NEXT: [0x0000000000000000, 0x0000000000000001)
65 # DUMP-EMPTY:
67 # DUMP: .debug_line contents:
68 # DUMP-NEXT: debug_line[0x00000000]
69 # DUMP-NEXT: Line table prologue:
70 # DUMP-NEXT: total_length:
71 # DUMP-NEXT: format: DWARF64
72 # DUMP5: include_directories[ 0] = .debug_line_str[0x0000000000000000] = "[[DIR:.+]]"
73 # DUMP5-NEXT: file_names[ 0]:
74 # DUMP5-NEXT: name: .debug_line_str[0x00000000[[FILEOFF:[[:xdigit:]]{8}]]] = "[[FILE:.+]]"
75 # DUMP5-NEXT: dir_index: 0
77 # DUMP5: .debug_line_str contents:
78 # DUMP5-NEXT: 0x00000000: "[[DIR]]"
79 # DUMP5-NEXT: 0x[[FILEOFF]]: "[[FILE]]"
81 # DUMP3: .debug_ranges contents:
82 # DUMP3-NEXT: 00000000 ffffffffffffffff 0000000000000000
83 # DUMP3-NEXT: 00000000 0000000000000000 0000000000000001
84 # DUMP3-NEXT: 00000000 ffffffffffffffff 0000000000000000
85 # DUMP3-NEXT: 00000000 0000000000000000 0000000000000001
86 # DUMP3-NEXT: 00000000 <End of list>
88 # DUMP5: .debug_rnglists contents:
89 # DUMP5-NEXT: 0x00000000: range list header: length = 0x000000000000001d, format = DWARF64, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000
90 # DUMP5-NEXT: ranges:
91 # DUMP5-NEXT: 0x00000014: [DW_RLE_start_length]: 0x0000000000000000, 0x0000000000000001 => [0x0000000000000000, 0x0000000000000001)
92 # DUMP5-NEXT: 0x0000001e: [DW_RLE_start_length]: 0x0000000000000000, 0x0000000000000001 => [0x0000000000000000, 0x0000000000000001)
93 # DUMP5-NEXT: 0x00000028: [DW_RLE_end_of_list ]
95 .cfi_sections .eh_frame, .debug_frame
97 .section .foo, "ax", @progbits
98 foo:
99 nop
101 .section .bar, "ax", @progbits
102 bar:
103 .cfi_startproc
105 .cfi_endproc