LLVM OpenMP
22.0.0git
runtime
test
ompt
loadtool
tool_not_available.c
Go to the documentation of this file.
1
// clang-format off
2
// The OpenMP standard defines 3 ways of providing ompt_start_tool:
3
4
// RUN: mkdir -p %t.tool_dir
5
6
// 1. "statically-linking the tool’s definition of ompt_start_tool into an
7
// OpenMP application"
8
9
// RUN: %libomp-compile -DCODE -DTOOL && \
10
// RUN: env OMP_TOOL_VERBOSE_INIT=stdout %libomp-run | \
11
// RUN: FileCheck %s --check-prefixes CHECK,ADDRSPACE
12
13
// Note: We should compile the tool without -fopenmp as other tools developer
14
// would do. Otherwise this test may pass for the wrong reasons on Darwin.
15
16
// RUN: %clang %flags -DTOOL -shared -fPIC %s -o %t.tool_dir/tool.so
17
18
// 2. "introducing a dynamically-linked library that includes the tool’s
19
// definition of ompt_start_tool into the application’s address space"
20
21
// 2.1 Link with tool during compilation
22
23
// RUN: %libomp-compile -DCODE %no-as-needed-flag %t.tool_dir/tool.so && \
24
// RUN: env OMP_TOOL_VERBOSE_INIT=stdout %libomp-run | \
25
// RUN: FileCheck %s --check-prefixes CHECK,ADDRSPACE
26
27
// 2.2 Link with tool during compilation, but AFTER the runtime
28
29
// RUN: %libomp-compile -DCODE -lomp %no-as-needed-flag %t.tool_dir/tool.so && \
30
// RUN: env OMP_TOOL_VERBOSE_INIT=stdout %libomp-run | \
31
// RUN: FileCheck %s --check-prefixes CHECK,ADDRSPACE
32
33
// 2.3 Inject tool via the dynamic loader
34
35
// RUN: %libomp-compile -DCODE && \
36
// RUN: env OMP_TOOL_VERBOSE_INIT=stdout %preload-tool %libomp-run | \
37
// RUN: FileCheck %s --check-prefixes CHECK,ADDRSPACE
38
39
// 3. "providing the name of a dynamically-linked library appropriate for the
40
// architecture and operating system used by the application in the
41
// tool-libraries-var ICV"
42
43
// RUN: %libomp-compile -DCODE && env OMP_TOOL_LIBRARIES=%t.tool_dir/tool.so \
44
// RUN: OMP_TOOL_VERBOSE_INIT=stdout %libomp-run | \
45
// RUN: FileCheck %s -DPARENTPATH=%t.tool_dir --check-prefixes CHECK,TOOLLIB
46
47
// REQUIRES: ompt
48
// clang-format on
49
50
/*
51
* This file contains code for an OMPT shared library tool to be
52
* loaded and the code for the OpenMP executable.
53
* -DTOOL enables the code for the tool during compilation
54
* -DCODE enables the code for the executable during compilation
55
*/
56
57
#ifdef CODE
58
#include "stdio.h"
59
#include "omp.h"
60
#include "omp-tools.h"
61
62
int
main
() {
63
#pragma omp parallel num_threads(2)
64
{
65
#pragma omp master
66
{
67
int
result
= omp_control_tool(omp_control_tool_start, 0, NULL);
68
printf(
"0: control_tool()=%d\n"
,
result
);
69
}
70
}
71
72
// clang-format off
73
// Check if libomp supports the callbacks for this test.
74
// CHECK-NOT: {{^}}0: Could not register callback
75
76
// ADDRSPACE: ----- START LOGGING OF TOOL REGISTRATION -----
77
// ADDRSPACE-NEXT: Search for OMP tool in current address space...
78
79
// TOOLLIB: ----- START LOGGING OF TOOL REGISTRATION -----
80
// TOOLLIB-NEXT: Search for OMP tool in current address space... Failed.
81
// TOOLLIB-NEXT: Searching tool libraries...
82
// TOOLLIB-NEXT: OMP_TOOL_LIBRARIES = [[PARENTPATH]]/tool.so
83
// TOOLLIB-NEXT: Opening [[PARENTPATH]]/tool.so... Success.
84
// TOOLLIB-NEXT: Searching for ompt_start_tool in
85
// TOOLLIB-SAME: [[PARENTPATH]]/tool.so...
86
87
// CHECK: 0: Do not initialize tool
88
89
// ADDRSPACE-NEXT: Failed.
90
// ADDRSPACE-NEXT: No OMP_TOOL_LIBRARIES defined.
91
// ADDRSPACE-NEXT: ...searching tool libraries failed.
92
// ADDRSPACE: No OMP tool loaded.
93
// ADDRSPACE-NEXT: ----- END LOGGING OF TOOL REGISTRATION -----
94
95
// TOOLLIB-NEXT: Found but not using the OMPT interface.
96
// TOOLLIB-NEXT: Continuing search...
97
// TOOLLIB-NEXT: ...searching tool libraries failed.
98
// TOOLLIB: No OMP tool loaded.
99
// TOOLLIB-NEXT: ----- END LOGGING OF TOOL REGISTRATION -----
100
101
// CHECK: {{^}}0: control_tool()=-2
102
// clang-format on
103
104
return
0;
105
}
106
107
#endif
/* CODE */
108
109
#ifdef TOOL
110
111
#include <omp-tools.h>
112
#include "stdio.h"
113
114
ompt_start_tool_result_t
*
ompt_start_tool
(
unsigned
int
omp_version,
115
const
char
*runtime_version) {
116
printf(
"0: Do not initialize tool\n"
);
117
return
NULL;
118
}
119
#endif
/* TOOL */
result
int result[2]
Definition
cancellation_for_sections.c:13
ompt_start_tool_result_t
struct ompt_start_tool_result_t ompt_start_tool_result_t
Definition
kmp_utility.cpp:345
ompt_start_tool
#define ompt_start_tool
Definition
ompt-multiplex.h:1208
main
int main()
Definition
test-touch.c:21
Generated on
for LLVM OpenMP by
1.14.0