1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 12:43:36 +01:00
llvm-mirror/test/DebugInfo/X86/debug-names-dwarf64.ll
Igor Kudrin 4f08bcf19d [DebugInfo] Fix emitting DWARF64 .debug_names sections (16/19).
The patch fixes emitting the unit length field in the header of
the table and offsets to the entry pool. Note that while the patch
changes the common method to emit offsets, in fact, nothing is changed
for Apple accelerator tables, because we do not yet support DWARF64 for
those targets.

Differential Revision: https://reviews.llvm.org/D87023
2020-09-15 12:23:31 +07:00

88 lines
3.1 KiB
LLVM

; This checks that .debug_names can be generated in the DWARF64 format.
; RUN: llc -mtriple=x86_64 -dwarf64 -accel-tables=Dwarf -dwarf-version=5 -filetype=obj %s -o %t
; RUN: llvm-dwarfdump -debug-info -debug-names %t | FileCheck %s
; RUN: llvm-dwarfdump -debug-names -verify %t | FileCheck --check-prefix=VERIFY %s
; CHECK: .debug_info contents:
; CHECK-NEXT: 0x00000000: Compile Unit: {{.+}}, format = DWARF64,
; CHECK: [[VARDIE:.+]]: DW_TAG_variable
; CHECK-NEXT: DW_AT_name ("foo")
; CHECK: [[TYPEDIE:.+]]: DW_TAG_base_type
; CHECK-NEXT: DW_AT_name ("int")
; CHECK: .debug_names contents:
; CHECK-NEXT: Name Index @ 0x0 {
; CHECK-NEXT: Header {
; CHECK: Format: DWARF64
; 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: }
; CHECK-NEXT: Compilation Unit offsets [
; CHECK-NEXT: CU[0]: 0x00000000
; 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: Abbreviation 0x24 {
; CHECK-NEXT: Tag: DW_TAG_base_type
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
; CHECK-NEXT: }
; CHECK-NEXT: ]
; CHECK-NEXT: Bucket 0 [
; CHECK-NEXT: Name 1 {
; CHECK-NEXT: Hash: 0xB888030
; CHECK-NEXT: String: {{.+}} "int"
; CHECK-NEXT: Entry @ {{.+}} {
; CHECK-NEXT: Abbrev: 0x24
; CHECK-NEXT: Tag: DW_TAG_base_type
; CHECK-NEXT: DW_IDX_die_offset: [[TYPEDIE]]
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: ]
; CHECK-NEXT: Bucket 1 [
; CHECK-NEXT: Name 2 {
; CHECK-NEXT: Hash: 0xB887389
; CHECK-NEXT: String: {{.+}} "foo"
; CHECK-NEXT: Entry @ {{.+}} {
; CHECK-NEXT: Abbrev: 0x34
; CHECK-NEXT: Tag: DW_TAG_variable
; CHECK-NEXT: DW_IDX_die_offset: [[VARDIE]]
; CHECK-NEXT: }
; CHECK-NEXT: }
; CHECK-NEXT: ]
; CHECK-NEXT: }
; VERIFY: No errors.
; IR generated and reduced from:
; $ cat foo.c
; int foo;
; $ clang -g -gpubnames -S -emit-llvm foo.c -o foo.ll
target triple = "x86_64-unknown-linux-gnu"
@foo = dso_local global i32 0, align 4, !dbg !0
!llvm.dbg.cu = !{!2}
!llvm.module.flags = !{!7, !8, !9}
!llvm.ident = !{!10}
!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
!1 = distinct !DIGlobalVariable(name: "foo", scope: !2, file: !3, line: 1, type: !6, isLocal: false, isDefinition: true)
!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 12.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5, splitDebugInlining: false)
!3 = !DIFile(filename: "foo.c", directory: "/tmp")
!4 = !{}
!5 = !{!0}
!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!7 = !{i32 7, !"Dwarf Version", i32 4}
!8 = !{i32 2, !"Debug Info Version", i32 3}
!9 = !{i32 1, !"wchar_size", i32 4}
!10 = !{!"clang version 12.0.0"}