Index: openmp/trunk/runtime/test/ompt/loadtool/tool_available.c =================================================================== --- openmp/trunk/runtime/test/ompt/loadtool/tool_available.c +++ openmp/trunk/runtime/test/ompt/loadtool/tool_available.c @@ -1,74 +0,0 @@ -// The OpenMP standard defines 3 ways of providing ompt_start_tool: -// 1. "statically-linking the tool’s definition of ompt_start_tool into an OpenMP application" -// RUN: %libomp-compile -DCODE -DTOOL && %libomp-run | FileCheck %s - -// Note: We should compile the tool without -fopenmp as other tools developer -// would do. Otherwise this test may pass for the wrong reasons on Darwin. -// RUN: %clang %flags -DTOOL -shared -fPIC %s -o %T/tool.so -// 2. "introducing a dynamically-linked library that includes the tool’s definition of ompt_start_tool into the application’s address space" -// 2.1 Link with tool during compilation -// RUN: %libomp-compile -DCODE -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s -// 2.2 Link with tool during compilation, but AFTER the runtime -// RUN: %libomp-compile -DCODE -lomp -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s -// 2.3 Inject tool via the dynamic loader -// RUN: %libomp-compile -DCODE && %preload-tool %libomp-run | FileCheck %s - -// 3. "providing the name of a dynamically-linked library appropriate for the architecture and operating system used by the application in the tool-libraries-var ICV" -// RUN: %libomp-compile -DCODE && env OMP_TOOL_LIBRARIES=%T/tool.so %libomp-run | FileCheck %s - -// REQUIRES: ompt - -/* - * This file contains code for an OMPT shared library tool to be - * loaded and the code for the OpenMP executable. - * -DTOOL enables the code for the tool during compilation - * -DCODE enables the code for the executable during compilation - */ - -#ifdef CODE -#include "omp.h" - -int main() -{ - #pragma omp parallel num_threads(2) - { - } - - - // Check if libomp supports the callbacks for this test. - // CHECK-NOT: {{^}}0: Could not register callback - - // CHECK: {{^}}0: NULL_POINTER=[[NULL:.*$]] - // CHECK: {{^}}0: ompt_event_runtime_shutdown - - return 0; -} - -#endif /* CODE */ - -#ifdef TOOL - -#include -#include - -int ompt_initialize( - ompt_function_lookup_t lookup, - ompt_data_t* tool_data) -{ - printf("0: NULL_POINTER=%p\n", (void*)NULL); - return 1; //success -} - -void ompt_finalize(ompt_data_t* tool_data) -{ - printf("0: ompt_event_runtime_shutdown\n"); -} - -ompt_start_tool_result_t* ompt_start_tool( - unsigned int omp_version, - const char *runtime_version) -{ - static ompt_start_tool_result_t ompt_start_tool_result = {&ompt_initialize,&ompt_finalize, 0}; - return &ompt_start_tool_result; -} -#endif /* TOOL */ Index: openmp/trunk/runtime/test/ompt/loadtool/tool_available/tool_available.c =================================================================== --- openmp/trunk/runtime/test/ompt/loadtool/tool_available/tool_available.c +++ openmp/trunk/runtime/test/ompt/loadtool/tool_available/tool_available.c @@ -0,0 +1,74 @@ +// The OpenMP standard defines 3 ways of providing ompt_start_tool: +// 1. "statically-linking the tool’s definition of ompt_start_tool into an OpenMP application" +// RUN: %libomp-compile -DCODE -DTOOL && %libomp-run | FileCheck %s + +// Note: We should compile the tool without -fopenmp as other tools developer +// would do. Otherwise this test may pass for the wrong reasons on Darwin. +// RUN: %clang %flags -DTOOL -shared -fPIC %s -o %T/tool.so +// 2. "introducing a dynamically-linked library that includes the tool’s definition of ompt_start_tool into the application’s address space" +// 2.1 Link with tool during compilation +// RUN: %libomp-compile -DCODE -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s +// 2.2 Link with tool during compilation, but AFTER the runtime +// RUN: %libomp-compile -DCODE -lomp -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s +// 2.3 Inject tool via the dynamic loader +// RUN: %libomp-compile -DCODE && %preload-tool %libomp-run | FileCheck %s + +// 3. "providing the name of a dynamically-linked library appropriate for the architecture and operating system used by the application in the tool-libraries-var ICV" +// RUN: %libomp-compile -DCODE && env OMP_TOOL_LIBRARIES=%T/tool.so %libomp-run | FileCheck %s + +// REQUIRES: ompt + +/* + * This file contains code for an OMPT shared library tool to be + * loaded and the code for the OpenMP executable. + * -DTOOL enables the code for the tool during compilation + * -DCODE enables the code for the executable during compilation + */ + +#ifdef CODE +#include "omp.h" + +int main() +{ + #pragma omp parallel num_threads(2) + { + } + + + // Check if libomp supports the callbacks for this test. + // CHECK-NOT: {{^}}0: Could not register callback + + // CHECK: {{^}}0: NULL_POINTER=[[NULL:.*$]] + // CHECK: {{^}}0: ompt_event_runtime_shutdown + + return 0; +} + +#endif /* CODE */ + +#ifdef TOOL + +#include +#include + +int ompt_initialize( + ompt_function_lookup_t lookup, + ompt_data_t* tool_data) +{ + printf("0: NULL_POINTER=%p\n", (void*)NULL); + return 1; //success +} + +void ompt_finalize(ompt_data_t* tool_data) +{ + printf("0: ompt_event_runtime_shutdown\n"); +} + +ompt_start_tool_result_t* ompt_start_tool( + unsigned int omp_version, + const char *runtime_version) +{ + static ompt_start_tool_result_t ompt_start_tool_result = {&ompt_initialize,&ompt_finalize, 0}; + return &ompt_start_tool_result; +} +#endif /* TOOL */ Index: openmp/trunk/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c =================================================================== --- openmp/trunk/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c +++ openmp/trunk/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c @@ -0,0 +1,69 @@ +// The OpenMP standard defines 3 ways of providing ompt_start_tool: +// 1. "statically-linking the tool’s definition of ompt_start_tool into an OpenMP application" +// RUN: %libomp-compile -DCODE -DTOOL && %libomp-run | FileCheck %s + +// Note: We should compile the tool without -fopenmp as other tools developer +// would do. Otherwise this test may pass for the wrong reasons on Darwin. +// RUN: %clang %flags -DTOOL -shared -fPIC %s -o %T/tool.so +// 2. "introducing a dynamically-linked library that includes the tool’s definition of ompt_start_tool into the application’s address space" +// 2.1 Link with tool during compilation +// RUN: %libomp-compile -DCODE -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s +// 2.2 Link with tool during compilation, but AFTER the runtime +// RUN: %libomp-compile -DCODE -lomp -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s +// 2.3 Inject tool via the dynamic loader +// RUN: %libomp-compile -DCODE && %preload-tool %libomp-run | FileCheck %s + +// 3. "providing the name of a dynamically-linked library appropriate for the architecture and operating system used by the application in the tool-libraries-var ICV" +// RUN: %libomp-compile -DCODE && env OMP_TOOL_LIBRARIES=%T/tool.so %libomp-run | FileCheck %s + +// REQUIRES: ompt + +/* + * This file contains code for an OMPT shared library tool to be + * loaded and the code for the OpenMP executable. + * -DTOOL enables the code for the tool during compilation + * -DCODE enables the code for the executable during compilation + */ + +#ifdef CODE +#include "stdio.h" +#include "omp.h" +#include "ompt.h" + +int main() +{ + #pragma omp parallel num_threads(2) + { + #pragma omp master + { + int result = omp_control_tool(omp_control_tool_start, 0, NULL); + printf("0: control_tool()=%d\n", result); + } + } + + + // Check if libomp supports the callbacks for this test. + // CHECK-NOT: {{^}}0: Could not register callback + + // CHECK: {{^}}0: Do not initialize tool + // CHECK: {{^}}0: control_tool()=-2 + + + return 0; +} + +#endif /* CODE */ + +#ifdef TOOL + +#include +#include "stdio.h" + +ompt_start_tool_result_t* ompt_start_tool( + unsigned int omp_version, + const char *runtime_version) +{ + printf("0: Do not initialize tool\n"); + return NULL; +} +#endif /* TOOL */