1/* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2014-2020 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18/* This was made from dw2-single-line-discriminators.c using 19 clang -dA -S -g 20 and then hand-editing the assembly a bit (simplify paths, 21 tweak so gas accepts it). */ 22 23 .text 24 .file "dw2-single-line-discriminators.c" 25 .section .debug_info,"",@progbits 26.Lsection_info: 27 .section .debug_abbrev,"",@progbits 28.Lsection_abbrev: 29 .section .debug_line,"",@progbits 30.Lsection_line: 31 .section .debug_pubnames,"",@progbits 32 .section .debug_pubtypes,"",@progbits 33 .section .debug_str,"MS",@progbits,1 34.Linfo_string: 35 .section .debug_loc,"",@progbits 36.Lsection_debug_loc: 37 .section .debug_ranges,"",@progbits 38.Ldebug_range: 39 .file 1 "gdb.dwarf2/dw2-single-line-discriminators.c" 40 .text 41 .globl main 42 .align 16, 0x90 43 .type main,@function 44main: # @main 45.Lfunc_begin0: 46 .loc 1 22 0 # dw2-single-line-discriminators.c:22:0 47 .cfi_startproc 48# BB#0: 49 pushq %rbp 50.Ltmp0: 51 .cfi_def_cfa_offset 16 52.Ltmp1: 53 .cfi_offset %rbp, -16 54 movq %rsp, %rbp 55.Ltmp2: 56 .cfi_def_cfa_register %rbp 57 movl $0, -4(%rbp) 58 .loc 1 26 3 prologue_end # dw2-single-line-discriminators.c:26:3 59.Ltmp3: 60 movl $0, x 61 .loc 1 28 8 # dw2-single-line-discriminators.c:28:8 62.Ltmp4: 63 movl $0, -8(%rbp) 64.LBB0_1: # =>This Inner Loop Header: Depth=1 65 .loc 1 28 8 discriminator 4 # dw2-single-line-discriminators.c:28:8 66.Ltmp5: 67 cmpl $10, -8(%rbp) 68 jge .LBB0_4 69.Ltmp6: 70# BB#2: # in Loop: Header=BB0_1 Depth=1 71 .loc 1 28 28 discriminator 2 # dw2-single-line-discriminators.c:28:28 72 jmp .LBB0_3 73.Ltmp7: 74.LBB0_3: # in Loop: Header=BB0_1 Depth=1 75 .loc 1 28 23 discriminator 3 # dw2-single-line-discriminators.c:28:23 76 movl -8(%rbp), %eax 77 addl $1, %eax 78 movl %eax, -8(%rbp) 79 jmp .LBB0_1 80.Ltmp8: 81.LBB0_4: 82 movl $0, %eax 83 .loc 1 30 3 # dw2-single-line-discriminators.c:30:3 84 popq %rbp 85 retq 86.Ltmp9: 87.Ltmp10: 88 .size main, .Ltmp10-main 89.Lfunc_end0: 90 .cfi_endproc 91 92 .type x,@object # @x 93 .comm x,4,4 94.Ldebug_end1: 95 .section .debug_str,"MS",@progbits,1 96.Linfo_string0: 97 .asciz "clang version (trunk r215195)" 98.Linfo_string1: 99 .asciz "dw2-single-line-discriminators.c" 100.Linfo_string2: 101 .asciz "/tmp/obj/gdb/testsuite" 102.Linfo_string3: 103 .asciz "x" 104.Linfo_string4: 105 .asciz "int" 106.Linfo_string5: 107 .asciz "main" 108.Linfo_string6: 109 .asciz "i" 110 .section .debug_info,"",@progbits 111.L.debug_info_begin0: 112 .long 108 # Length of Unit 113 .short 4 # DWARF version number 114 .long .Lsection_abbrev # Offset Into Abbrev. Section 115 .byte 8 # Address Size (in bytes) 116 .byte 1 # Abbrev [1] 0xb:0x65 DW_TAG_compile_unit 117 .long .Linfo_string0 # DW_AT_producer 118 .short 12 # DW_AT_language 119 .long .Linfo_string1 # DW_AT_name 120 .long .Lline_table_start0 # DW_AT_stmt_list 121 .long .Linfo_string2 # DW_AT_comp_dir 122 .quad .Lfunc_begin0 # DW_AT_low_pc 123.Lset0 = .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 124 .long .Lset0 125 .byte 2 # Abbrev [2] 0x2a:0x15 DW_TAG_variable 126 .long .Linfo_string3 # DW_AT_name 127 .long 63 # DW_AT_type 128 # DW_AT_external 129 .byte 1 # DW_AT_decl_file 130 .byte 18 # DW_AT_decl_line 131 .byte 9 # DW_AT_location 132 .byte 3 133 .quad x 134 .byte 3 # Abbrev [3] 0x3f:0x7 DW_TAG_base_type 135 .long .Linfo_string4 # DW_AT_name 136 .byte 5 # DW_AT_encoding 137 .byte 4 # DW_AT_byte_size 138 .byte 4 # Abbrev [4] 0x46:0x29 DW_TAG_subprogram 139 .quad .Lfunc_begin0 # DW_AT_low_pc 140.Lset1 = .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 141 .long .Lset1 142 .byte 1 # DW_AT_frame_base 143 .byte 86 144 .long .Linfo_string5 # DW_AT_name 145 .byte 1 # DW_AT_decl_file 146 .byte 21 # DW_AT_decl_line 147 .long 63 # DW_AT_type 148 # DW_AT_external 149 .byte 1 # DW_AT_accessibility 150 # DW_ACCESS_public 151 .byte 5 # Abbrev [5] 0x60:0xe DW_TAG_variable 152 .byte 2 # DW_AT_location 153 .byte 145 154 .byte 120 155 .long .Linfo_string6 # DW_AT_name 156 .byte 1 # DW_AT_decl_file 157 .byte 23 # DW_AT_decl_line 158 .long 63 # DW_AT_type 159 .byte 0 # End Of Children Mark 160 .byte 0 # End Of Children Mark 161.L.debug_info_end0: 162 .section .debug_abbrev,"",@progbits 163 .byte 1 # Abbreviation Code 164 .byte 17 # DW_TAG_compile_unit 165 .byte 1 # DW_CHILDREN_yes 166 .byte 37 # DW_AT_producer 167 .byte 14 # DW_FORM_strp 168 .byte 19 # DW_AT_language 169 .byte 5 # DW_FORM_data2 170 .byte 3 # DW_AT_name 171 .byte 14 # DW_FORM_strp 172 .byte 16 # DW_AT_stmt_list 173 .byte 23 # DW_FORM_sec_offset 174 .byte 27 # DW_AT_comp_dir 175 .byte 14 # DW_FORM_strp 176 .byte 17 # DW_AT_low_pc 177 .byte 1 # DW_FORM_addr 178 .byte 18 # DW_AT_high_pc 179 .byte 6 # DW_FORM_data4 180 .byte 0 # EOM(1) 181 .byte 0 # EOM(2) 182 .byte 2 # Abbreviation Code 183 .byte 52 # DW_TAG_variable 184 .byte 0 # DW_CHILDREN_no 185 .byte 3 # DW_AT_name 186 .byte 14 # DW_FORM_strp 187 .byte 73 # DW_AT_type 188 .byte 19 # DW_FORM_ref4 189 .byte 63 # DW_AT_external 190 .byte 25 # DW_FORM_flag_present 191 .byte 58 # DW_AT_decl_file 192 .byte 11 # DW_FORM_data1 193 .byte 59 # DW_AT_decl_line 194 .byte 11 # DW_FORM_data1 195 .byte 2 # DW_AT_location 196 .byte 24 # DW_FORM_exprloc 197 .byte 0 # EOM(1) 198 .byte 0 # EOM(2) 199 .byte 3 # Abbreviation Code 200 .byte 36 # DW_TAG_base_type 201 .byte 0 # DW_CHILDREN_no 202 .byte 3 # DW_AT_name 203 .byte 14 # DW_FORM_strp 204 .byte 62 # DW_AT_encoding 205 .byte 11 # DW_FORM_data1 206 .byte 11 # DW_AT_byte_size 207 .byte 11 # DW_FORM_data1 208 .byte 0 # EOM(1) 209 .byte 0 # EOM(2) 210 .byte 4 # Abbreviation Code 211 .byte 46 # DW_TAG_subprogram 212 .byte 1 # DW_CHILDREN_yes 213 .byte 17 # DW_AT_low_pc 214 .byte 1 # DW_FORM_addr 215 .byte 18 # DW_AT_high_pc 216 .byte 6 # DW_FORM_data4 217 .byte 64 # DW_AT_frame_base 218 .byte 24 # DW_FORM_exprloc 219 .byte 3 # DW_AT_name 220 .byte 14 # DW_FORM_strp 221 .byte 58 # DW_AT_decl_file 222 .byte 11 # DW_FORM_data1 223 .byte 59 # DW_AT_decl_line 224 .byte 11 # DW_FORM_data1 225 .byte 73 # DW_AT_type 226 .byte 19 # DW_FORM_ref4 227 .byte 63 # DW_AT_external 228 .byte 25 # DW_FORM_flag_present 229 .byte 50 # DW_AT_accessibility 230 .byte 11 # DW_FORM_data1 231 .byte 0 # EOM(1) 232 .byte 0 # EOM(2) 233 .byte 5 # Abbreviation Code 234 .byte 52 # DW_TAG_variable 235 .byte 0 # DW_CHILDREN_no 236 .byte 2 # DW_AT_location 237 .byte 24 # DW_FORM_exprloc 238 .byte 3 # DW_AT_name 239 .byte 14 # DW_FORM_strp 240 .byte 58 # DW_AT_decl_file 241 .byte 11 # DW_FORM_data1 242 .byte 59 # DW_AT_decl_line 243 .byte 11 # DW_FORM_data1 244 .byte 73 # DW_AT_type 245 .byte 19 # DW_FORM_ref4 246 .byte 0 # EOM(1) 247 .byte 0 # EOM(2) 248 .byte 0 # EOM(3) 249 .section .debug_ranges,"",@progbits 250 .section .debug_loc,"",@progbits 251 .section .debug_pubnames,"",@progbits 252.Lset2 = .LpubNames_end0-.LpubNames_begin0 # Length of Public Names Info 253 .long .Lset2 254.LpubNames_begin0: 255 .short 2 # DWARF Version 256 .long .L.debug_info_begin0 # Offset of Compilation Unit Info 257.Lset3 = .L.debug_info_end0-.L.debug_info_begin0 # Compilation Unit Length 258 .long .Lset3 259 .long 70 # DIE offset 260 .asciz "main" # External Name 261 .long 42 # DIE offset 262 .asciz "x" # External Name 263 .long 0 # End Mark 264.LpubNames_end0: 265 .section .debug_pubtypes,"",@progbits 266.Lset4 = .LpubTypes_end0-.LpubTypes_begin0 # Length of Public Types Info 267 .long .Lset4 268.LpubTypes_begin0: 269 .short 2 # DWARF Version 270 .long .L.debug_info_begin0 # Offset of Compilation Unit Info 271.Lset5 = .L.debug_info_end0-.L.debug_info_begin0 # Compilation Unit Length 272 .long .Lset5 273 .long 63 # DIE offset 274 .asciz "int" # External Name 275 .long 0 # End Mark 276.LpubTypes_end0: 277 278 .ident "clang version (trunk r215195)" 279 .section ".note.GNU-stack","",@progbits 280 .section .debug_line,"",@progbits 281.Lline_table_start0: 282