341 lines · plain
1# RUN: llvm-mc < %s -triple=s390x-linux-gnu -filetype=obj | llvm-dwarfdump -v - | FileCheck %s2#3# We use both R_390_32 and R_390_64 to encode the dwarf information.4# Test that they are used correctly. This uses the assembly output5# for variable-loc.ll6#7# A couple of R_390_32s, both at 0 and elsewhere:8#9# CHECK: DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 3.2 ")10# CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000013] = "simple.c")11#12# A couple of R_390_64s similarly:13#14# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000 ".text")15# CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000050 ".text")16 17 18 .file "test/DebugInfo/SystemZ/variable-loc.ll"19 .section .debug_info,"",@progbits20.Lsection_info:21 .section .debug_abbrev,"",@progbits22.Lsection_abbrev:23 .section .debug_aranges,"",@progbits24 .section .debug_macinfo,"",@progbits25 .section .debug_line,"",@progbits26.Lsection_line:27 .section .debug_loc,"",@progbits28 .section .debug_pubtypes,"",@progbits29 .section .debug_str,"MS",@progbits,130.Linfo_string:31 .section .debug_ranges,"",@progbits32.Ldebug_range:33 .section .debug_loc,"",@progbits34.Lsection_debug_loc:35 .text36.Ltext_begin:37 .data38 .file 1 "simple.c"39 .file 2 "<stdin>"40 .text41 .globl main42 .align 443 .type main,@function44main: # @main45 .cfi_startproc46.Lfunc_begin0:47 .loc 2 18 0 # :18:048# %bb.0: # %entry49 stmg %r12, %r15, 96(%r15)50.Ltmp2:51 .cfi_offset %r12, -6452.Ltmp3:53 .cfi_offset %r13, -5654.Ltmp4:55 .cfi_offset %r14, -4856.Ltmp5:57 .cfi_offset %r15, -4058 aghi %r15, -56859.Ltmp6:60 .cfi_def_cfa_offset 72861 mvhi 564(%r15), 062 la %r13, 164(%r15)63 lhi %r12, 10064 .loc 2 22 3 prologue_end # :22:365.Ltmp7:66 lgr %r2, %r1367 lr %r3, %r1268 brasl %r14, populate_array@PLT69 .loc 2 23 9 # :23:970 lgr %r2, %r1371 lr %r3, %r1272 brasl %r14, sum_array@PLT73 lr %r0, %r274 st %r0, 160(%r15)75 .loc 2 24 3 # :24:376 larl %r2, .L.str77 lr %r3, %r078 brasl %r14, printf@PLT79 lhi %r2, 080 .loc 2 26 3 # :26:381 lmg %r12, %r15, 664(%r15)82 br %r1483.Ltmp8:84.Ltmp9:85 .size main, .Ltmp9-main86.Lfunc_end0:87 .cfi_endproc88 89 .type .L.str,@object # @.str90 .section .rodata.str1.2,"aMS",@progbits,191 .align 292.L.str:93 .asciz "Total is %d\n"94 .size .L.str, 1395 96 .cfi_sections .debug_frame97 .text98.Ltext_end:99 .data100.Ldata_end:101 .text102.Lsection_end1:103 .section .debug_info,"",@progbits104.L.debug_info_begin0:105 .long 155 # Length of Compilation Unit Info106 .short 2 # DWARF version number107 .long .L.debug_abbrev_begin # Offset Into Abbrev. Section108 .byte 8 # Address Size (in bytes)109 .byte 1 # Abbrev [1] 0xb:0x94 DW_TAG_compile_unit110 .long .Linfo_string0 # DW_AT_producer111 .short 12 # DW_AT_language112 .long .Linfo_string1 # DW_AT_name113 .quad 0 # DW_AT_low_pc114 .long .Lsection_line # DW_AT_stmt_list115 .long .Linfo_string2 # DW_AT_comp_dir116 .byte 2 # Abbrev [2] 0x26:0x7 DW_TAG_subprogram117 .long .Linfo_string3 # DW_AT_name118 .byte 2 # DW_AT_decl_file119 .byte 4 # DW_AT_decl_line120 # DW_AT_prototyped121 # DW_AT_external122 .byte 3 # Abbrev [3] 0x2d:0xb DW_TAG_subprogram123 .long .Linfo_string4 # DW_AT_name124 .byte 2 # DW_AT_decl_file125 .byte 9 # DW_AT_decl_line126 # DW_AT_prototyped127 .long 56 # DW_AT_type128 # DW_AT_external129 .byte 4 # Abbrev [4] 0x38:0x7 DW_TAG_base_type130 .long .Linfo_string5 # DW_AT_name131 .byte 5 # DW_AT_encoding132 .byte 4 # DW_AT_byte_size133 .byte 5 # Abbrev [5] 0x3f:0xb DW_TAG_subprogram134 .long .Linfo_string6 # DW_AT_name135 .byte 2 # DW_AT_decl_file136 .byte 18 # DW_AT_decl_line137 # DW_AT_prototyped138 .long 56 # DW_AT_type139 # DW_AT_external140 # DW_AT_declaration141 .byte 6 # Abbrev [6] 0x4a:0x7 DW_TAG_base_type142 .long .Linfo_string5 # DW_AT_name143 .byte 4 # DW_AT_byte_size144 .byte 5 # DW_AT_encoding145 .byte 7 # Abbrev [7] 0x51:0x5 DW_TAG_array_type146 .long 56 # DW_AT_type147 .byte 8 # Abbrev [8] 0x56:0x48 DW_TAG_subprogram148 .long 63 # DW_AT_specification149 .quad .Lfunc_begin0 # DW_AT_low_pc150 .quad .Lfunc_end0 # DW_AT_high_pc151 .byte 1 # DW_AT_frame_base152 .byte 95153 # DW_AT_APPLE_omit_frame_ptr154 .byte 9 # Abbrev [9] 0x6d:0x30 DW_TAG_lexical_block155 .quad .Ltmp7 # DW_AT_low_pc156 .quad .Ltmp8 # DW_AT_high_pc157 .byte 10 # Abbrev [10] 0x7e:0xf DW_TAG_variable158 .long .Linfo_string7 # DW_AT_name159 .byte 2 # DW_AT_decl_file160 .byte 19 # DW_AT_decl_line161 .long 81 # DW_AT_type162 .byte 3 # DW_AT_location163 .byte 145164 .ascii "\244\001"165 .byte 10 # Abbrev [10] 0x8d:0xf DW_TAG_variable166 .long .Linfo_string8 # DW_AT_name167 .byte 2 # DW_AT_decl_file168 .byte 20 # DW_AT_decl_line169 .long 56 # DW_AT_type170 .byte 3 # DW_AT_location171 .byte 145172 .ascii "\240\001"173 .byte 0 # End Of Children Mark174 .byte 0 # End Of Children Mark175 .byte 0 # End Of Children Mark176.L.debug_info_end0:177 .section .debug_abbrev,"",@progbits178.L.debug_abbrev_begin:179 .byte 1 # Abbreviation Code180 .byte 17 # DW_TAG_compile_unit181 .byte 1 # DW_CHILDREN_yes182 .byte 37 # DW_AT_producer183 .byte 14 # DW_FORM_strp184 .byte 19 # DW_AT_language185 .byte 5 # DW_FORM_data2186 .byte 3 # DW_AT_name187 .byte 14 # DW_FORM_strp188 .byte 17 # DW_AT_low_pc189 .byte 1 # DW_FORM_addr190 .byte 16 # DW_AT_stmt_list191 .byte 6 # DW_FORM_data4192 .byte 27 # DW_AT_comp_dir193 .byte 14 # DW_FORM_strp194 .byte 0 # EOM(1)195 .byte 0 # EOM(2)196 .byte 2 # Abbreviation Code197 .byte 46 # DW_TAG_subprogram198 .byte 0 # DW_CHILDREN_no199 .byte 3 # DW_AT_name200 .byte 14 # DW_FORM_strp201 .byte 58 # DW_AT_decl_file202 .byte 11 # DW_FORM_data1203 .byte 59 # DW_AT_decl_line204 .byte 11 # DW_FORM_data1205 .byte 39 # DW_AT_prototyped206 .byte 25 # DW_FORM_flag_present207 .byte 63 # DW_AT_external208 .byte 25 # DW_FORM_flag_present209 .byte 0 # EOM(1)210 .byte 0 # EOM(2)211 .byte 3 # Abbreviation Code212 .byte 46 # DW_TAG_subprogram213 .byte 0 # DW_CHILDREN_no214 .byte 3 # DW_AT_name215 .byte 14 # DW_FORM_strp216 .byte 58 # DW_AT_decl_file217 .byte 11 # DW_FORM_data1218 .byte 59 # DW_AT_decl_line219 .byte 11 # DW_FORM_data1220 .byte 39 # DW_AT_prototyped221 .byte 25 # DW_FORM_flag_present222 .byte 73 # DW_AT_type223 .byte 19 # DW_FORM_ref4224 .byte 63 # DW_AT_external225 .byte 25 # DW_FORM_flag_present226 .byte 0 # EOM(1)227 .byte 0 # EOM(2)228 .byte 4 # Abbreviation Code229 .byte 36 # DW_TAG_base_type230 .byte 0 # DW_CHILDREN_no231 .byte 3 # DW_AT_name232 .byte 14 # DW_FORM_strp233 .byte 62 # DW_AT_encoding234 .byte 11 # DW_FORM_data1235 .byte 11 # DW_AT_byte_size236 .byte 11 # DW_FORM_data1237 .byte 0 # EOM(1)238 .byte 0 # EOM(2)239 .byte 5 # Abbreviation Code240 .byte 46 # DW_TAG_subprogram241 .byte 0 # DW_CHILDREN_no242 .byte 3 # DW_AT_name243 .byte 14 # DW_FORM_strp244 .byte 58 # DW_AT_decl_file245 .byte 11 # DW_FORM_data1246 .byte 59 # DW_AT_decl_line247 .byte 11 # DW_FORM_data1248 .byte 39 # DW_AT_prototyped249 .byte 25 # DW_FORM_flag_present250 .byte 73 # DW_AT_type251 .byte 19 # DW_FORM_ref4252 .byte 63 # DW_AT_external253 .byte 25 # DW_FORM_flag_present254 .byte 60 # DW_AT_declaration255 .byte 25 # DW_FORM_flag_present256 .byte 0 # EOM(1)257 .byte 0 # EOM(2)258 .byte 6 # Abbreviation Code259 .byte 36 # DW_TAG_base_type260 .byte 0 # DW_CHILDREN_no261 .byte 3 # DW_AT_name262 .byte 14 # DW_FORM_strp263 .byte 11 # DW_AT_byte_size264 .byte 11 # DW_FORM_data1265 .byte 62 # DW_AT_encoding266 .byte 11 # DW_FORM_data1267 .byte 0 # EOM(1)268 .byte 0 # EOM(2)269 .byte 7 # Abbreviation Code270 .byte 1 # DW_TAG_array_type271 .byte 0 # DW_CHILDREN_no272 .byte 73 # DW_AT_type273 .byte 19 # DW_FORM_ref4274 .byte 0 # EOM(1)275 .byte 0 # EOM(2)276 .byte 8 # Abbreviation Code277 .byte 46 # DW_TAG_subprogram278 .byte 1 # DW_CHILDREN_yes279 .byte 71 # DW_AT_specification280 .byte 19 # DW_FORM_ref4281 .byte 17 # DW_AT_low_pc282 .byte 1 # DW_FORM_addr283 .byte 18 # DW_AT_high_pc284 .byte 1 # DW_FORM_addr285 .byte 64 # DW_AT_frame_base286 .byte 10 # DW_FORM_block1287 .ascii "\347\177" # DW_AT_APPLE_omit_frame_ptr288 .byte 25 # DW_FORM_flag_present289 .byte 0 # EOM(1)290 .byte 0 # EOM(2)291 .byte 9 # Abbreviation Code292 .byte 11 # DW_TAG_lexical_block293 .byte 1 # DW_CHILDREN_yes294 .byte 17 # DW_AT_low_pc295 .byte 1 # DW_FORM_addr296 .byte 18 # DW_AT_high_pc297 .byte 1 # DW_FORM_addr298 .byte 0 # EOM(1)299 .byte 0 # EOM(2)300 .byte 10 # Abbreviation Code301 .byte 52 # DW_TAG_variable302 .byte 0 # DW_CHILDREN_no303 .byte 3 # DW_AT_name304 .byte 14 # DW_FORM_strp305 .byte 58 # DW_AT_decl_file306 .byte 11 # DW_FORM_data1307 .byte 59 # DW_AT_decl_line308 .byte 11 # DW_FORM_data1309 .byte 73 # DW_AT_type310 .byte 19 # DW_FORM_ref4311 .byte 2 # DW_AT_location312 .byte 10 # DW_FORM_block1313 .byte 0 # EOM(1)314 .byte 0 # EOM(2)315 .byte 0 # EOM(3)316.L.debug_abbrev_end:317 .section .debug_aranges,"",@progbits318 .section .debug_ranges,"",@progbits319 .section .debug_macinfo,"",@progbits320 .section .debug_str,"MS",@progbits,1321.Linfo_string0:322 .asciz "clang version 3.2 "323.Linfo_string1:324 .asciz "simple.c"325.Linfo_string2:326 .asciz "/home/timnor01/a64-trunk/build"327.Linfo_string3:328 .asciz "populate_array"329.Linfo_string4:330 .asciz "sum_array"331.Linfo_string5:332 .asciz "int"333.Linfo_string6:334 .asciz "main"335.Linfo_string7:336 .asciz "main_arr"337.Linfo_string8:338 .asciz "val"339 340 .section ".note.GNU-stack","",@progbits341