mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-24 14:20:17 +00:00
bd1ebe9d04
Added ability to append new entries to DIE. This is useful to standadize DWARF4 Split Dwarf, and simplify implementation of DWARF5. Multiple DIEs can share an abbrev. So currently limitation is that only unique Attributes can be added. Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D119577
70 lines
3.1 KiB
Plaintext
70 lines
3.1 KiB
Plaintext
; RUN: rm -rf %t
|
|
; RUN: mkdir %t
|
|
; RUN: cd %t
|
|
; RUN: llc -split-dwarf-file=foo.dwo -split-dwarf-output=foo.dwo -O0 -mtriple=x86_64-unknown-linux-gnu -filetype=obj %s -o=foo.o
|
|
; RUN: %clang %cflags foo.o -o foo.exe
|
|
; RUN: llvm-bolt foo.exe -o foo.exe.bolt --update-debug-sections
|
|
; RUN: llvm-dwarfdump --debug-info foo.exe | FileCheck -check-prefix=PRE-BOLT %s
|
|
; RUN: llvm-dwarfdump --debug-info foo.exe.bolt | FileCheck %s
|
|
|
|
; This tests checks that DW_AT_GNU_ranges_base is added at the end of the CU.
|
|
|
|
; PRE-BOLT: DW_AT_GNU_addr_base
|
|
; PRE-BOLT-NOT: DW_AT_GNU_ranges_base
|
|
|
|
; CHECK: DW_AT_GNU_addr_base
|
|
; CHECK-NEXT: DW_AT_GNU_ranges_base
|
|
|
|
; int foo() {
|
|
; return 3;
|
|
; }
|
|
;
|
|
; int main() {
|
|
; return foo();
|
|
; }
|
|
|
|
; ModuleID = 'main.cpp'
|
|
source_filename = "main.cpp"
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
; Function Attrs: mustprogress noinline nounwind optnone uwtable
|
|
define dso_local noundef i32 @_Z3foov() #0 !dbg !8 {
|
|
entry:
|
|
ret i32 3, !dbg !13
|
|
}
|
|
|
|
; Function Attrs: mustprogress noinline norecurse nounwind optnone uwtable
|
|
define dso_local noundef i32 @main() #1 !dbg !14 {
|
|
entry:
|
|
%retval = alloca i32, align 4
|
|
store i32 0, i32* %retval, align 4
|
|
%call = call noundef i32 @_Z3foov(), !dbg !15
|
|
ret i32 %call, !dbg !16
|
|
}
|
|
|
|
attributes #0 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
|
|
attributes #1 = { mustprogress noinline norecurse nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!2, !3, !4, !5, !6}
|
|
!llvm.ident = !{!7}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang", isOptimized: false, runtimeVersion: 0, splitDebugFilename: "main.dwo", emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: GNU)
|
|
!1 = !DIFile(filename: "main.cpp", directory: ".")
|
|
!2 = !{i32 7, !"Dwarf Version", i32 4}
|
|
!3 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!4 = !{i32 1, !"wchar_size", i32 4}
|
|
!5 = !{i32 7, !"uwtable", i32 1}
|
|
!6 = !{i32 7, !"frame-pointer", i32 2}
|
|
!7 = !{!"clang"}
|
|
!8 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 1, type: !9, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !12)
|
|
!9 = !DISubroutineType(types: !10)
|
|
!10 = !{!11}
|
|
!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
|
|
!12 = !{}
|
|
!13 = !DILocation(line: 2, column: 3, scope: !8)
|
|
!14 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 5, type: !9, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !12)
|
|
!15 = !DILocation(line: 6, column: 10, scope: !14)
|
|
!16 = !DILocation(line: 6, column: 3, scope: !14)
|