xref: /llvm-project/llvm/test/ExecutionEngine/OrcLazy/debug-objects.ll (revision cd6ed95e48354d14e59871f3c3f3a8665def22c8)
1*cd6ed95eSStefan Gränitz; REQUIRES: native && x86_64-linux
2*cd6ed95eSStefan Gränitz
3*cd6ed95eSStefan Gränitz; In-memory debug-objects contain DWARF
4*cd6ed95eSStefan Gränitz;
5*cd6ed95eSStefan Gränitz; RUN: lli --jit-linker=rtdyld  --orc-lazy-debug=jit-debug-objects %s | llvm-dwarfdump --diff - | FileCheck %s
6*cd6ed95eSStefan Gränitz; RUN: lli --jit-linker=jitlink --orc-lazy-debug=jit-debug-objects %s | llvm-dwarfdump --diff - | FileCheck %s
7*cd6ed95eSStefan Gränitz;
8*cd6ed95eSStefan Gränitz; CHECK: -:	file format elf64-x86-64
9*cd6ed95eSStefan Gränitz; TODO: Synthesized Mach-O objects error out with:
10*cd6ed95eSStefan Gränitz;       truncated or malformed object (offset field of section 8 in
11*cd6ed95eSStefan Gränitz;       LC_SEGMENT_64 command 0 extends past the end of the file)
12*cd6ed95eSStefan Gränitz;
13*cd6ed95eSStefan Gränitz; CHECK: .debug_info contents:
14*cd6ed95eSStefan Gränitz; CHECK: format = DWARF32
15*cd6ed95eSStefan Gränitz; CHECK: DW_TAG_compile_unit
16*cd6ed95eSStefan Gränitz; CHECK:               DW_AT_producer	("clang version 18.0.0git")
17*cd6ed95eSStefan Gränitz; CHECK:               DW_AT_language	(DW_LANG_C11)
18*cd6ed95eSStefan Gränitz; CHECK:               DW_AT_name	("source-file.c")
19*cd6ed95eSStefan Gränitz; CHECK:               DW_AT_comp_dir	("/workspace")
20*cd6ed95eSStefan Gränitz; CHECK:   DW_TAG_subprogram
21*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_frame_base	(DW_OP_reg7 RSP)
22*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_name	("main")
23*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_decl_file	("/workspace/source-file.c")
24*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_decl_line	(1)
25*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_type	("int")
26*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_external	(true)
27*cd6ed95eSStefan Gränitz; CHECK:   DW_TAG_base_type
28*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_name	("int")
29*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_encoding	(DW_ATE_signed)
30*cd6ed95eSStefan Gränitz; CHECK:                 DW_AT_byte_size	(0x04)
31*cd6ed95eSStefan Gränitz; CHECK:   NULL
32*cd6ed95eSStefan Gränitz
33*cd6ed95eSStefan Gränitz; Text section of the in-memory debug-objects have non-null load-address
34*cd6ed95eSStefan Gränitz;
35*cd6ed95eSStefan Gränitz; RUN: lli --jit-linker=rtdyld --orc-lazy-debug=jit-debug-objects %s | \
36*cd6ed95eSStefan Gränitz; RUN:                              llvm-objdump --section-headers - | \
37*cd6ed95eSStefan Gränitz; RUN:                              FileCheck --check-prefix=CHECK_LOAD_ADDR %s
38*cd6ed95eSStefan Gränitz; RUN: lli --jit-linker=jitlink --orc-lazy-debug=jit-debug-objects %s | \
39*cd6ed95eSStefan Gränitz; RUN:                               llvm-objdump --section-headers - | \
40*cd6ed95eSStefan Gränitz; RUN:                               FileCheck --check-prefix=CHECK_LOAD_ADDR %s
41*cd6ed95eSStefan Gränitz;
42*cd6ed95eSStefan Gränitz; CHECK_LOAD_ADDR:      .text
43*cd6ed95eSStefan Gränitz; CHECK_LOAD_ADDR-NOT:  0000000000000000
44*cd6ed95eSStefan Gränitz; CHECK_LOAD_ADDR-SAME: TEXT
45*cd6ed95eSStefan Gränitz
46*cd6ed95eSStefan Gränitzdefine i32 @main() !dbg !3 {
47*cd6ed95eSStefan Gränitzentry:
48*cd6ed95eSStefan Gränitz  ret i32 0, !dbg !8
49*cd6ed95eSStefan Gränitz}
50*cd6ed95eSStefan Gränitz
51*cd6ed95eSStefan Gränitz!llvm.module.flags = !{!0}
52*cd6ed95eSStefan Gränitz!llvm.dbg.cu = !{!2}
53*cd6ed95eSStefan Gränitz
54*cd6ed95eSStefan Gränitz!0 = !{i32 2, !"Debug Info Version", i32 3}
55*cd6ed95eSStefan Gränitz!1 = !DIFile(filename: "source-file.c", directory: "/workspace")
56*cd6ed95eSStefan Gränitz!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 18.0.0git", emissionKind: FullDebug)
57*cd6ed95eSStefan Gränitz!3 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !4, scopeLine: 1, unit: !2, retainedNodes: !7)
58*cd6ed95eSStefan Gränitz!4 = !DISubroutineType(types: !5)
59*cd6ed95eSStefan Gränitz!5 = !{!6}
60*cd6ed95eSStefan Gränitz!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
61*cd6ed95eSStefan Gränitz!7 = !{}
62*cd6ed95eSStefan Gränitz!8 = !DILocation(line: 1, column: 14, scope: !3)
63