120 lines · plain
1# RUN: llvm-mc -triple x86_64-pc-linux -filetype=obj %s -o %t2# RUN: not llvm-dwarfdump -v %t 2>%t.err | FileCheck %s3# RUN: FileCheck %s <%t.err -check-prefix=ERR4 5# CHECK: .debug_info contents:6# CHECK: 0x0000000b: DW_TAG_compile_unit [1]7# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000 ".text")8# CHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x000000009# CHECK-NEXT: [0x0000000000000000, 0x0000000000000001) ".text"10# CHECK-NEXT: [0x0000000000000003, 0x0000000000000006) ".text"11# CHECK-NEXT: [0x0000000000000001, 0x0000000000000002) ".text.foo1")12 13.text14.globl foo15.type foo,@function16foo:17.Lfunc_begin0:18 nop19.Ltmp0:20 nop21 nop22.Ltmp1:23 nop24 nop25 nop26.Ltmp2:27 28.section .text.foo1,"ax",@progbits29.Ltmp3:30 nop31.Ltmp4:32 nop33.Ltmp5:34 35.section .debug_abbrev,"",@progbits36.byte 1 # Abbreviation Code37.byte 17 # DW_TAG_compile_unit38.byte 0 # DW_CHILDREN_no39.byte 37 # DW_AT_producer40.byte 14 # DW_FORM_strp41.byte 19 # DW_AT_language42.byte 5 # DW_FORM_data243.byte 3 # DW_AT_name44.byte 14 # DW_FORM_strp45.byte 16 # DW_AT_stmt_list46.byte 23 # DW_FORM_sec_offset47.byte 27 # DW_AT_comp_dir48.byte 14 # DW_FORM_strp49.byte 17 # DW_AT_low_pc50.byte 1 # DW_FORM_addr51.byte 85 # DW_AT_ranges52.byte 23 # DW_FORM_sec_offset53.byte 0 # EOM(1)54.byte 0 # EOM(2)55.byte 0 # EOM(3)56 57.section .debug_info,"",@progbits58.Lcu_begin0:59.long 38 # Length of Unit60.short 4 # DWARF version number61.long .debug_abbrev # Offset Into Abbrev. Section62.byte 8 # Address Size (in bytes)63.byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit64.long 0 # DW_AT_producer65.short 4 # DW_AT_language66.long 0 # DW_AT_name67.long 0 # DW_AT_stmt_list68.long 0 # DW_AT_comp_dir69.quad .Lfunc_begin0 # DW_AT_low_pc70.long .Ldebug_ranges0 # DW_AT_ranges71 72# A CU with an invalid DW_AT_ranges attribute73.Lcu_begin1:74.long 38 # Length of Unit75.short 4 # DWARF version number76.long .debug_abbrev # Offset Into Abbrev. Section77.byte 8 # Address Size (in bytes)78.byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit79.long 0 # DW_AT_producer80.short 4 # DW_AT_language81.long 0 # DW_AT_name82.long 0 # DW_AT_stmt_list83.long 0 # DW_AT_comp_dir84.quad .Lfunc_begin0 # DW_AT_low_pc85.long 0x4000 # DW_AT_ranges86 87# ERR: error: decoding address ranges: invalid range list offset 0x400088 89# A CU where the DW_AT_ranges attribute points to an invalid range list.90.Lcu_begin2:91.long 38 # Length of Unit92.short 4 # DWARF version number93.long .debug_abbrev # Offset Into Abbrev. Section94.byte 8 # Address Size (in bytes)95.byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit96.long 0 # DW_AT_producer97.short 4 # DW_AT_language98.long 0 # DW_AT_name99.long 0 # DW_AT_stmt_list100.long 0 # DW_AT_comp_dir101.quad .Lfunc_begin0 # DW_AT_low_pc102.long .Ldebug_ranges1 # DW_AT_ranges103 104.section .debug_ranges,"",@progbits105.Ldebug_ranges0:106 .quad .Lfunc_begin0-.Lfunc_begin0107 .quad .Ltmp0-.Lfunc_begin0108 .quad .Ltmp1-.Lfunc_begin0109 .quad .Ltmp2-.Lfunc_begin0110 .quad 0xFFFFFFFFFFFFFFFF111 .quad .text.foo1112 .quad .Ltmp4-.text.foo1113 .quad .Ltmp5-.text.foo1114 .quad 0115 .quad 0116.Ldebug_ranges1:117 .quad 0118 119# ERR: error: decoding address ranges: invalid range list entry at offset 0x50120