Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / MC / ELF / compress-debug-sections-zlib.s
blob942c7823fc98d91ac71ed8a76ef2e26aa7092ea1
1 // REQUIRES: zlib
3 // Check zlib style
4 // RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib -triple x86_64-pc-linux-gnu < %s -o %t
5 // RUN: llvm-objdump -s %t | FileCheck %s
6 // RUN: llvm-dwarfdump -debug-str %t | FileCheck --check-prefix=STR %s
7 // RUN: llvm-readelf --sections %t | FileCheck --check-prefixes=FLAGS,FLAGS64 %s
9 // RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib -triple i386-pc-linux-gnu --defsym I386=1 %s -o %t
10 // RUN: llvm-readelf -S -s %t | FileCheck --check-prefixes=386-SYMBOLS,FLAGS,FLAGS32 %s
12 // Decompress one valid dwarf section just to check that this roundtrips,
13 // we use .debug_str section for that
14 // STR: perfectly compressable data sample *****************************************
17 // Now check the zlib style output:
19 // Don't compress small sections, such as this simple debug_abbrev example
20 // CHECK: Contents of section .debug_abbrev:
21 // CHECK-NOT: ZLIB
22 // CHECK-NOT: Contents of
23 // CHECK: Contents of section .debug_info:
24 // FIXME: Handle compressing alignment fragments to support compressing debug_frame
25 // CHECK: Contents of section .debug_frame:
26 // CHECK-NOT: ZLIB
27 // CHECK: Contents of
29 # FLAGS: .text PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 AX 0 0 4
30 # FLAGS: .nonalloc PROGBITS [[#%x,]] [[#%x,]] 000226 00 0 0 1
32 ## Check that the large .debug_line and .debug_frame have the SHF_COMPRESSED
33 ## flag.
34 # FLAGS32: .debug_line PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 4
35 # FLAGS32: .debug_abbrev PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
36 # FLAGS32: .debug_info PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
37 # FLAGS32: .debug_frame PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 4
39 # FLAGS64: .debug_line PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 8
40 # FLAGS64: .debug_abbrev PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
41 # FLAGS64: .debug_info PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
42 # FLAGS64: .debug_frame PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 8
44 # 386-SYMBOLS: Symbol table '.symtab'
45 # 386-SYMBOLS: .debug_str
47 ## Don't compress a section not named .debug_*.
48 .section .nonalloc,"",@progbits
49 .rept 50
50 .asciz "aaaaaaaaaa"
51 .endr
53 .section .debug_line,"",@progbits
55 .section .debug_abbrev,"",@progbits
56 .Lsection_abbrev:
57 .byte 1 # Abbreviation Code
58 .byte 17 # DW_TAG_compile_unit
59 .byte 0 # DW_CHILDREN_no
60 .byte 27 # DW_AT_comp_dir
61 .byte 14 # DW_FORM_strp
62 .byte 0 # EOM(1)
63 .byte 0 # EOM(2)
65 .section .debug_info,"",@progbits
66 .long 12 # Length of Unit
67 .short 4 # DWARF version number
68 .long .Lsection_abbrev # Offset Into Abbrev. Section
69 .byte 8 # Address Size (in bytes)
70 .byte 1 # Abbrev [1] DW_TAG_compile_unit
71 .long .Linfo_string0 # DW_AT_comp_dir
73 .text
74 foo:
75 .cfi_startproc
76 .file 1 "Driver.ii"
78 .rept 3
79 .ifdef I386
80 pushl %ebp
81 .cfi_def_cfa_offset 8
82 .cfi_offset %ebp, -8
83 movl %esp, %ebp
84 .cfi_def_cfa_register %ebp
85 pushl %ebx
86 pushl %edi
87 pushl %esi
88 .cfi_offset %esi, -20
89 .cfi_offset %edi, -16
90 .cfi_offset %ebx, -12
91 .loc 1 1 1 prologue_end
92 popl %esi
93 popl %edi
94 popl %ebx
95 popl %ebp
96 .cfi_def_cfa %esp, 4
97 .else
98 pushq %rbp
99 .cfi_def_cfa_offset 16
100 .cfi_offset %rbp, -16
101 movq %rsp, %rbp
102 .cfi_def_cfa_register %rbp
103 pushq %r15
104 pushq %r14
105 pushq %r13
106 pushq %r12
107 pushq %rbx
108 .cfi_offset %rbx, -56
109 .cfi_offset %r12, -48
110 .cfi_offset %r13, -40
111 .cfi_offset %r14, -32
112 .cfi_offset %r15, -24
113 .loc 1 1 1 prologue_end
114 popq %rbx
115 popq %r12
116 popq %r13
117 popq %r14
118 popq %r15
119 popq %rbp
120 .cfi_def_cfa %rsp, 8
121 .endif
122 .endr
124 # pad out the line table to make sure it's big enough to warrant compression
125 .irpc i, 123456789
126 .irpc j, 0123456789
127 .loc 1 \i\j \j
129 .endr
130 .endr
131 .cfi_endproc
132 .cfi_sections .debug_frame
134 # Below is the section we will use to check that after compression with llvm-mc,
135 # llvm-dwarfdump tool will be able to decompress data back and dump it. Data sample
136 # should be compressable enough, so it is filled with some amount of equal symbols at the end
137 .section .debug_str,"MS",@progbits,1
138 .Linfo_string0:
139 .asciz "perfectly compressable data sample *****************************************"