| # RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj -o - | llvm-dwarfdump -debug-names - | FileCheck %s |
| .section .debug_str,"MS",@progbits,1 |
| .Linfo_string0: |
| .asciz "foo" |
| .Linfo_string1: |
| .asciz "_Z3foov" |
| .Linfo_string2: |
| .asciz "bar" |
| |
| # Fake .debug_info. We just need it for the offsets to two "compile units" and |
| # two "DIEs" |
| .section .debug_info,"",@progbits |
| .Lcu_begin0: |
| .byte 0 |
| .Ldie0: |
| .byte 0 |
| .Lcu_begin1: |
| .byte 0 |
| .Ldie1: |
| .byte 0 |
| |
| .section .debug_names,"",@progbits |
| .long .Lnames_end0-.Lnames_start0 # Header: contribution length |
| .Lnames_start0: |
| .short 5 # Header: version |
| .short 0 # Header: padding |
| .long 1 # Header: compilation unit count |
| .long 0 # Header: local type unit count |
| .long 0 # Header: foreign type unit count |
| .long 2 # Header: bucket count |
| .long 2 # Header: name count |
| .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size |
| .long 0 # Header: augmentation length |
| .long .Lcu_begin0 # Compilation unit 0 |
| .long 0 # Bucket 0 |
| .long 1 # Bucket 1 |
| .long 193491849 # Hash in Bucket 1 |
| .long -1257882357 # Hash in Bucket 1 |
| .long .Linfo_string0 # String in Bucket 1: foo |
| .long .Linfo_string1 # String in Bucket 1: _Z3foov |
| .long .Lnames0-.Lnames_entries0 # Offset in Bucket 1 |
| .long .Lnames1-.Lnames_entries0 # Offset in Bucket 1 |
| .Lnames_abbrev_start0: |
| .byte 46 # Abbrev code |
| .byte 46 # DW_TAG_subprogram |
| .byte 3 # DW_IDX_die_offset |
| .byte 19 # DW_FORM_ref4 |
| .byte 0 # End of abbrev |
| .byte 0 # End of abbrev |
| .byte 0 # End of abbrev list |
| .Lnames_abbrev_end0: |
| .Lnames_entries0: |
| .Lnames0: |
| .byte 46 # Abbrev code |
| .long .Ldie0-.Lcu_begin0 # DW_IDX_die_offset |
| .long 0 # End of list: foo |
| .Lnames1: |
| .byte 46 # Abbrev code |
| .long .Ldie0-.Lcu_begin0 # DW_IDX_die_offset |
| .long 0 # End of list: _Z3foov |
| .p2align 2 |
| .Lnames_end0: |
| |
| .long .Lnames_end1-.Lnames_start1 # Header: contribution length |
| .Lnames_start1: |
| .short 5 # Header: version |
| .short 0 # Header: padding |
| .long 1 # Header: compilation unit count |
| .long 0 # Header: local type unit count |
| .long 0 # Header: foreign type unit count |
| .long 1 # Header: bucket count |
| .long 1 # Header: name count |
| .long .Lnames_abbrev_end1-.Lnames_abbrev_start1 # Header: abbreviation table size |
| .long 0 # Header: augmentation length |
| .long .Lcu_begin1 # Compilation unit 0 |
| .long 1 # Bucket 0 |
| .long 193487034 # Hash in Bucket 0 |
| .long .Linfo_string2 # String in Bucket 0: bar |
| .long .Lnames2-.Lnames_entries1 # Offset in Bucket 0 |
| .Lnames_abbrev_start1: |
| .byte 52 # Abbrev code |
| .byte 52 # DW_TAG_variable |
| .byte 3 # DW_IDX_die_offset |
| .byte 19 # DW_FORM_ref4 |
| .byte 0 # End of abbrev |
| .byte 0 # End of abbrev |
| .byte 0 # End of abbrev list |
| .Lnames_abbrev_end1: |
| .Lnames_entries1: |
| .Lnames2: |
| .byte 52 # Abbrev code |
| .long .Ldie1-.Lcu_begin1 # DW_IDX_die_offset |
| .long 0 # End of list: bar |
| .p2align 2 |
| .Lnames_end1: |
| |
| .long 0xffffffff # DWARF64 mark |
| .quad .Lnames_end2-.Lnames_start2 # Length |
| .Lnames_start2: |
| .short 5 # Version |
| .space 2 # Padding |
| .long 1 # CU count |
| .long 1 # Local TU count |
| .long 1 # Foreign TU count |
| .long 1 # Bucket count |
| .long 1 # Name count |
| .long .Lnames_abbrev_end2-.Lnames_abbrev_start2 # Abbreviations table size |
| .long 0 # Augmentation string size |
| .quad 0xcc00cccccccc # CU0 offset |
| .quad 0xaa00aaaaaaaa # Local TU0 offset |
| .quad 0xffffff00ffffffff # Foreign TU2 signature |
| .long 1 # Bucket 0 |
| .long 0xb887389 # Hash in Bucket 0 |
| .quad .Linfo_string0 # String in Bucket 0: foo |
| .quad .Lnames3-.Lnames_entries2 # Offset in Bucket 0 |
| .Lnames_abbrev_start2: |
| .byte 0x01 # Abbrev code |
| .byte 0x24 # DW_TAG_base_type |
| .byte 0x02 # DW_IDX_type_unit |
| .byte 0x06 # DW_FORM_data4 |
| .byte 0x05 # DW_IDX_type_hash |
| .byte 0x07 # DW_FORM_data8 |
| .byte 0x00 # End of abbrev |
| .byte 0x00 # End of abbrev |
| .byte 0x00 # End of abbrev list |
| .Lnames_abbrev_end2: |
| .Lnames_entries2: |
| .Lnames3: |
| .byte 0x01 # Abbrev code |
| .long 1 # DW_IDX_type_unit |
| .quad 0xff03ffffffff # DW_IDX_type_hash |
| .byte 0x00 # End of list: foo |
| .p2align 2 |
| .Lnames_end2: |
| |
| # CHECK: .debug_names contents: |
| # CHECK-NEXT: Name Index @ 0x0 { |
| # CHECK-NEXT: Header { |
| # CHECK-NEXT: Length: 0x60 |
| # CHECK-NEXT: Format: DWARF32 |
| # CHECK-NEXT: Version: 5 |
| # CHECK-NEXT: CU count: 1 |
| # CHECK-NEXT: Local TU count: 0 |
| # CHECK-NEXT: Foreign TU count: 0 |
| # CHECK-NEXT: Bucket count: 2 |
| # CHECK-NEXT: Name count: 2 |
| # CHECK-NEXT: Abbreviations table size: 0x7 |
| # CHECK-NEXT: Augmentation: '' |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Compilation Unit offsets [ |
| # CHECK-NEXT: CU[0]: 0x00000000 |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Abbreviations [ |
| # CHECK-NEXT: Abbreviation 0x2e { |
| # CHECK-NEXT: Tag: DW_TAG_subprogram |
| # CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Bucket 0 [ |
| # CHECK-NEXT: EMPTY |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Bucket 1 [ |
| # CHECK-NEXT: Name 1 { |
| # CHECK-NEXT: Hash: 0xB887389 |
| # CHECK-NEXT: String: 0x00000000 "foo" |
| # CHECK-NEXT: Entry @ 0x4f { |
| # CHECK-NEXT: Abbrev: 0x2E |
| # CHECK-NEXT: Tag: DW_TAG_subprogram |
| # CHECK-NEXT: DW_IDX_die_offset: 0x00000001 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Name 2 { |
| # CHECK-NEXT: Hash: 0xB5063D0B |
| # CHECK-NEXT: String: 0x00000004 "_Z3foov" |
| # CHECK-NEXT: Entry @ 0x58 { |
| # CHECK-NEXT: Abbrev: 0x2E |
| # CHECK-NEXT: Tag: DW_TAG_subprogram |
| # CHECK-NEXT: DW_IDX_die_offset: 0x00000001 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Name Index @ 0x64 { |
| # CHECK-NEXT: Header { |
| # CHECK-NEXT: Length: 0x44 |
| # CHECK-NEXT: Format: DWARF32 |
| # CHECK-NEXT: Version: 5 |
| # CHECK-NEXT: CU count: 1 |
| # CHECK-NEXT: Local TU count: 0 |
| # CHECK-NEXT: Foreign TU count: 0 |
| # CHECK-NEXT: Bucket count: 1 |
| # CHECK-NEXT: Name count: 1 |
| # CHECK-NEXT: Abbreviations table size: 0x7 |
| # CHECK-NEXT: Augmentation: '' |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Compilation Unit offsets [ |
| # CHECK-NEXT: CU[0]: 0x00000002 |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Abbreviations [ |
| # CHECK-NEXT: Abbreviation 0x34 { |
| # CHECK-NEXT: Tag: DW_TAG_variable |
| # CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Bucket 0 [ |
| # CHECK-NEXT: Name 1 { |
| # CHECK-NEXT: Hash: 0xB8860BA |
| # CHECK-NEXT: String: 0x0000000c "bar" |
| # CHECK-NEXT: Entry @ 0xa3 { |
| # CHECK-NEXT: Abbrev: 0x34 |
| # CHECK-NEXT: Tag: DW_TAG_variable |
| # CHECK-NEXT: DW_IDX_die_offset: 0x00000001 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Name Index @ 0xac { |
| # CHECK-NEXT: Header { |
| # CHECK-NEXT: Length: 0x68 |
| # CHECK-NEXT: Format: DWARF64 |
| # CHECK-NEXT: Version: 5 |
| # CHECK-NEXT: CU count: 1 |
| # CHECK-NEXT: Local TU count: 1 |
| # CHECK-NEXT: Foreign TU count: 1 |
| # CHECK-NEXT: Bucket count: 1 |
| # CHECK-NEXT: Name count: 1 |
| # CHECK-NEXT: Abbreviations table size: 0x9 |
| # CHECK-NEXT: Augmentation: '' |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Compilation Unit offsets [ |
| # CHECK-NEXT: CU[0]: 0xcc00cccccccc |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Local Type Unit offsets [ |
| # CHECK-NEXT: LocalTU[0]: 0xaa00aaaaaaaa |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Foreign Type Unit signatures [ |
| # CHECK-NEXT: ForeignTU[0]: 0xffffff00ffffffff |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Abbreviations [ |
| # CHECK-NEXT: Abbreviation 0x1 { |
| # CHECK-NEXT: Tag: DW_TAG_base_type |
| # CHECK-NEXT: DW_IDX_type_unit: DW_FORM_data4 |
| # CHECK-NEXT: DW_IDX_type_hash: DW_FORM_data8 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Bucket 0 [ |
| # CHECK-NEXT: Name 1 { |
| # CHECK-NEXT: Hash: 0xB887389 |
| # CHECK-NEXT: String: 0x00000000 "foo" |
| # CHECK-NEXT: Entry @ 0x111 { |
| # CHECK-NEXT: Abbrev: 0x1 |
| # CHECK-NEXT: Tag: DW_TAG_base_type |
| # CHECK-NEXT: DW_IDX_type_unit: 0x00000001 |
| # CHECK-NEXT: DW_IDX_type_hash: 0x0000ff03ffffffff |
| # CHECK-NEXT: } |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: } |