2 cat >modules.modulemap <<EOF
12 clang -D BAR_H -E -o Bar.h modules.m
13 clang -D FOO_H -E -o Foo.h modules.m
14 clang -cc1 -emit-obj -fmodules -fmodule-map-file=modules.modulemap \
15 -fmodule-format=obj -g -dwarf-ext-refs -fmodules-cache-path=. \
16 -fdisable-module-hash modules.m -o 1.o
19 // RUN: llvm-dsymutil -f -oso-prepend-path=%p/../Inputs/modules \
20 // RUN: -y %p/dummy-debug-map.map -o - \
21 // RUN: | llvm-dwarfdump --debug-dump=info - | FileCheck %s
23 // RUN: llvm-dsymutil -f -oso-prepend-path=%p/../Inputs/modules -y \
24 // RUN: %p/dummy-debug-map.map -o %t 2>&1 | FileCheck --check-prefix=WARN %s
26 // WARN-NOT: warning: hash mismatch
28 // ---------------------------------------------------------------------
30 // ---------------------------------------------------------------------
31 // CHECK: DW_TAG_compile_unit
33 // CHECK: DW_TAG_module
34 // CHECK-NEXT: DW_AT_name{{.*}}"Bar"
35 // CHECK: 0x0[[BAR:.*]]: DW_TAG_structure_type
37 // CHECK: DW_AT_name {{.*}}"Bar"
39 // CHECK: DW_TAG_member
40 // CHECK: DW_AT_name {{.*}}"value"
41 // CHECK: DW_TAG_structure_type
43 // CHECK: DW_AT_name {{.*}}"PruneMeNot"
52 // ---------------------------------------------------------------------
54 // ---------------------------------------------------------------------
55 // CHECK: DW_TAG_compile_unit
57 // CHECK: 0x0[[FOO:.*]]: DW_TAG_module
58 // CHECK-NEXT: DW_AT_name{{.*}}"Foo"
60 // CHECK: DW_TAG_typedef
62 // CHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[BAR]])
63 // CHECK: DW_TAG_structure_type
64 // CHECK-NEXT: DW_AT_name{{.*}}"S"
66 // CHECK: 0x0[[INTERFACE:.*]]: DW_TAG_structure_type
67 // CHECK-NEXT: DW_AT_name{{.*}}"Foo"
70 typedef struct Bar Bar;
78 // ---------------------------------------------------------------------
80 // ---------------------------------------------------------------------
82 // CHECK: DW_TAG_compile_unit
83 // CHECK: DW_AT_low_pc
85 // CHECK: DW_TAG_module
86 // CHECK-NEXT: DW_AT_name{{.*}}"Foo"
88 // CHECK: DW_TAG_typedef
92 // CHECK: DW_TAG_imported_declaration
94 // CHECK: DW_AT_import [DW_FORM_ref_addr] (0x{{0*}}[[FOO]]
96 // CHECK: DW_TAG_subprogram
97 // CHECK: DW_AT_name {{.*}}"main"
99 // CHECK: DW_TAG_variable
100 // CHECK: DW_TAG_variable
102 // CHECK: DW_AT_name{{.*}}"foo"
104 // CHECK: DW_AT_type {{.*}}{0x{{0*}}[[PTR:.*]]}
106 // CHECK: 0x{{0*}}[[PTR]]: DW_TAG_pointer_type
107 // CHECK-NEXT DW_AT_type [DW_FORM_ref_addr] {0x{{0*}}[[INTERFACE]])
110 int main(int argc, char **argv) {