CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
166 lines
5.3 KiB
Objective-C
166 lines
5.3 KiB
Objective-C
/* Compile with:
|
|
cat >modules.modulemap <<EOF
|
|
module Foo {
|
|
header "Foo.h"
|
|
export *
|
|
}
|
|
module Bar {
|
|
header "Bar.h"
|
|
export *
|
|
}
|
|
EOF
|
|
clang -D BAR_H -E -o Bar.h modules.m
|
|
clang -D FOO_H -E -o Foo.h modules.m
|
|
clang -D ODR_VIOLATION_C -E -o odr_violation.c modules.m
|
|
clang -c -fmodules -fmodule-map-file=modules.modulemap \
|
|
-g -gmodules -fmodules-cache-path=. \
|
|
-Xclang -fdisable-module-hash modules.m -o 1.o
|
|
clang -c -g odr_violation.c -o 2.o
|
|
*/
|
|
|
|
// RUN: dsymutil --linker classic -f -oso-prepend-path=%p/../Inputs/modules \
|
|
// RUN: -y %p/dummy-debug-map.map -o - \
|
|
// RUN: | llvm-dwarfdump -v --debug-info - \
|
|
// RUN: | FileCheck %s --check-prefixes=CHECK,CLASSIC
|
|
|
|
// RUN: dsymutil --linker classic -f -oso-prepend-path=%p/../Inputs/modules -y \
|
|
// RUN: %p/dummy-debug-map.map -o %t 2>&1 | FileCheck --check-prefix=WARN %s
|
|
// RUN: dsymutil --linker parallel -f -oso-prepend-path=%p/../Inputs/modules -y \
|
|
// RUN: %p/dummy-debug-map.map -o %t 2>&1 | FileCheck --check-prefix=WARN %s
|
|
|
|
// The classic linker drops DW_AT_GNU_dwo_id; the parallel linker keeps it.
|
|
// RUN: rm -rf %t.classic.dSYM
|
|
// RUN: dsymutil --linker classic --accelerator Dwarf -verify -f \
|
|
// RUN: -oso-prepend-path=%p/../Inputs/modules \
|
|
// RUN: -y %p/dummy-debug-map.map -o %t.classic.dSYM
|
|
// RUN: llvm-dwarfdump -v --debug-info %t.classic.dSYM \
|
|
// RUN: | FileCheck --check-prefix=ACCEL %s
|
|
// RUN: rm -rf %t.parallel.dSYM
|
|
// RUN: dsymutil --linker parallel --accelerator Dwarf -verify -f \
|
|
// RUN: -oso-prepend-path=%p/../Inputs/modules \
|
|
// RUN: -y %p/dummy-debug-map.map -o %t.parallel.dSYM
|
|
// RUN: llvm-dwarfdump -v --debug-info %t.parallel.dSYM \
|
|
// RUN: | FileCheck --check-prefix=ACCEL %s
|
|
|
|
// ACCEL: DW_TAG_compile_unit
|
|
|
|
// WARN-NOT: warning: hash mismatch
|
|
|
|
// ---------------------------------------------------------------------
|
|
#ifdef BAR_H
|
|
// ---------------------------------------------------------------------
|
|
// CHECK: DW_TAG_compile_unit
|
|
// CLASSIC-NOT: DW_AT_GNU_dwo_id
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_TAG_module
|
|
// CHECK-NEXT: DW_AT_name{{.*}}"Bar"
|
|
// CHECK: 0x0[[BAR:.*]]: DW_TAG_structure_type
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_name {{.*}}"Bar"
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_TAG_member
|
|
// CHECK: DW_AT_name {{.*}}"value"
|
|
// CHECK: DW_TAG_structure_type
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_name {{.*}}"PruneMeNot"
|
|
|
|
struct Bar {
|
|
int value;
|
|
};
|
|
|
|
struct PruneMeNot;
|
|
|
|
#else
|
|
// ---------------------------------------------------------------------
|
|
#ifdef FOO_H
|
|
// ---------------------------------------------------------------------
|
|
// CHECK: DW_TAG_compile_unit
|
|
// CLASSIC-NOT: DW_AT_GNU_dwo_id
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: 0x0[[FOO:.*]]: DW_TAG_module
|
|
// CHECK-NEXT: DW_AT_name{{.*}}"Foo"
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: 0x0[[BARTD:.*]]: DW_TAG_typedef
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[BAR]]
|
|
// CHECK: DW_TAG_structure_type
|
|
// CHECK-NEXT: DW_AT_name{{.*}}"S"
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: 0x0[[INTERFACE:.*]]: DW_TAG_structure_type
|
|
// CHECK-NEXT: DW_AT_name{{.*}}"Foo"
|
|
|
|
@import Bar;
|
|
typedef struct Bar Bar;
|
|
struct S {};
|
|
|
|
@interface Foo {
|
|
int ivar;
|
|
}
|
|
@end
|
|
|
|
#else
|
|
// ---------------------------------------------------------------------
|
|
#ifdef ODR_VIOLATION_C
|
|
// ---------------------------------------------------------------------
|
|
|
|
struct Bar {
|
|
int i;
|
|
};
|
|
typedef struct Bar Bar;
|
|
Bar odr_violation = { 42 };
|
|
|
|
// ---------------------------------------------------------------------
|
|
#else
|
|
// ---------------------------------------------------------------------
|
|
|
|
// CHECK: DW_TAG_compile_unit
|
|
// CLASSIC-NOT: DW_AT_GNU_dwo_id
|
|
// CHECK: DW_AT_low_pc
|
|
// CHECK-NOT: DW_TAG_module
|
|
// CHECK-NOT: DW_TAG_typedef
|
|
//
|
|
// CHECK: DW_TAG_imported_declaration
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_import [DW_FORM_ref_addr] (0x{{0*}}[[FOO]]
|
|
//
|
|
// CHECK: DW_TAG_subprogram
|
|
// CHECK: DW_AT_name {{.*}}"main"
|
|
//
|
|
// CHECK: DW_TAG_variable
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_name{{.*}}"bar"
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[BARTD]]
|
|
// CHECK: DW_TAG_variable
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_name{{.*}}"foo"
|
|
// CHECK-NOT: DW_TAG
|
|
// CHECK: DW_AT_type {{.*}}{0x{{0*}}[[PTR:.*]]}
|
|
//
|
|
// CHECK: 0x{{0*}}[[PTR]]: DW_TAG_pointer_type
|
|
// CHECK-NEXT: DW_AT_type [DW_FORM_ref_addr] (0x{{0*}}[[INTERFACE]]
|
|
extern int odr_violation;
|
|
|
|
@import Foo;
|
|
int main(int argc, char **argv) {
|
|
Bar bar;
|
|
Foo *foo = 0;
|
|
bar.value = odr_violation;
|
|
return bar.value;
|
|
}
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
// CHECK: DW_TAG_compile_unit
|
|
// CLASSIC-NOT: DW_AT_GNU_dwo_id
|
|
// CHECK: DW_AT_name {{.*}}"odr_violation.c"
|
|
// CHECK: DW_TAG_variable
|
|
// CHECK: DW_AT_name {{.*}}"odr_violation"
|
|
// CHECK: DW_AT_type [DW_FORM_ref4] ({{.*}}{0x{{0*}}[[BAR2:.*]]}
|
|
// CHECK: 0x{{0*}}[[BAR2]]: DW_TAG_typedef
|
|
// CHECK: DW_AT_type [DW_FORM_ref4] ({{.*}}{0x{{0*}}[[BAR3:.*]]}
|
|
// CHECK: DW_AT_name {{.*}}"Bar"
|
|
// CHECK: 0x{{0*}}[[BAR3]]: DW_TAG_structure_type
|
|
// CHECK-NEXT: DW_AT_name {{.*}}"Bar"
|