diff --git a/openmp/libomptarget/DeviceRTL/CMakeLists.txt b/openmp/libomptarget/DeviceRTL/CMakeLists.txt --- a/openmp/libomptarget/DeviceRTL/CMakeLists.txt +++ b/openmp/libomptarget/DeviceRTL/CMakeLists.txt @@ -130,7 +130,7 @@ list(TRANSFORM LIBOMPTARGET_LLVM_INCLUDE_DIRS_DEVICERTL PREPEND "-I") # Set flags for LLVM Bitcode compilation. -set(bc_flags -S -x c++ -std=c++17 +set(bc_flags -S -x c++ -std=c++17 -fvisibility=hidden ${clang_opt_flags} -Xclang -emit-llvm-bc -Xclang -aux-triple -Xclang ${aux_triple} @@ -231,5 +231,5 @@ endforeach() foreach(mcpu ${amdgpu_mcpus}) - compileDeviceRTLLibrary(${mcpu} amdgpu -target amdgcn-amd-amdhsa -D__AMDGCN__ -fvisibility=default -nogpulib) + compileDeviceRTLLibrary(${mcpu} amdgpu -target amdgcn-amd-amdhsa -D__AMDGCN__ -nogpulib) endforeach() diff --git a/openmp/libomptarget/DeviceRTL/include/Types.h b/openmp/libomptarget/DeviceRTL/include/Types.h --- a/openmp/libomptarget/DeviceRTL/include/Types.h +++ b/openmp/libomptarget/DeviceRTL/include/Types.h @@ -193,8 +193,7 @@ // TODO: clang should use address space 5 for omp_thread_mem_alloc, but right // now that's not the case. #define THREAD_LOCAL(NAME) \ - NAME [[clang::loader_uninitialized, clang::address_space(5), \ - gnu::visibility("hidden")]] + NAME [[clang::loader_uninitialized, clang::address_space(5)]] // TODO: clang should use address space 4 for omp_const_mem_alloc, maybe it // does? diff --git a/openmp/libomptarget/DeviceRTL/src/Configuration.cpp b/openmp/libomptarget/DeviceRTL/src/Configuration.cpp --- a/openmp/libomptarget/DeviceRTL/src/Configuration.cpp +++ b/openmp/libomptarget/DeviceRTL/src/Configuration.cpp @@ -23,8 +23,10 @@ extern uint32_t __omp_rtl_debug_kind; // defined by CGOpenMPRuntimeGPU // TODO: We want to change the name as soon as the old runtime is gone. +// This variable should be visibile to the plugin so we override the default +// hidden visibility. DeviceEnvironmentTy CONSTANT(omptarget_device_environment) - __attribute__((used, retain, weak)); + __attribute__((used, retain, weak, visibility("protected"))); uint32_t config::getDebugKind() { return __omp_rtl_debug_kind & omptarget_device_environment.DebugKind; diff --git a/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt b/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt --- a/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt +++ b/openmp/libomptarget/deviceRTLs/amdgcn/CMakeLists.txt @@ -132,7 +132,7 @@ -fopenmp -fopenmp-cuda-mode -Xclang -fopenmp-is-device -D__AMDGCN__ -Xclang -target-cpu -Xclang ${mcpu} - -fvisibility=default + -fvisibility=hidden -Wno-unused-value -nogpulib -O${optimization_level} diff --git a/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h b/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h --- a/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h +++ b/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h @@ -34,8 +34,8 @@ __attribute__((used)) /* Don't discard values the plugin reads */ \ __attribute__((weak)) /* We may have multiple definitions */ \ __attribute__((retain)) /* Also needed to keep values alive */ \ - __attribute__((visibility("default"))) /* Access via SHT_HASH */ \ - __attribute__((section(".data"))) /* Not .bss, can write before load */ + __attribute__((visibility("protected"))) /* Access via SHT_HASH */ \ + __attribute__((section(".data"))) /* Not .bss, can write before load */ #include "llvm/Frontend/OpenMP/OMPGridValues.h" diff --git a/openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt b/openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt --- a/openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt +++ b/openmp/libomptarget/deviceRTLs/nvptx/CMakeLists.txt @@ -165,6 +165,7 @@ -mllvm -openmp-opt-disable -ffreestanding -target nvptx64 + -fvisibility=hidden -Xclang -emit-llvm-bc -Xclang -aux-triple -Xclang ${aux_triple} -fopenmp -fopenmp-cuda-mode -Xclang -fopenmp-is-device