ports/devel/llvm11/files/openmp/patch-backport-version-fixes
Brooks Davis adfdd1a786 devel/llvm10: actually fix build with llvm17
I failed to apply the actual patch and committed the ports patch
instead.  It applies because it just creates files.

PR:		273959
Fixes:		50e51d2680 devel/llvm10: fix build with llvm17
2023-09-21 16:23:30 +01:00

210 lines
7.1 KiB
Text

diff --git projects/openmp/libomptarget/plugins/exports projects/openmp/libomptarget/plugins/exports
index 62bfc6e24d90..cc7beda183af 100644
--- projects/openmp/libomptarget/plugins/exports
+++ projects/openmp/libomptarget/plugins/exports
@@ -1,24 +1,6 @@
VERS1.0 {
global:
- __tgt_rtl_is_valid_binary;
- __tgt_rtl_is_data_exchangable;
- __tgt_rtl_number_of_devices;
- __tgt_rtl_init_requires;
- __tgt_rtl_init_device;
- __tgt_rtl_load_binary;
- __tgt_rtl_data_alloc;
- __tgt_rtl_data_submit;
- __tgt_rtl_data_submit_async;
- __tgt_rtl_data_retrieve;
- __tgt_rtl_data_retrieve_async;
- __tgt_rtl_data_exchange;
- __tgt_rtl_data_exchange_async;
- __tgt_rtl_data_delete;
- __tgt_rtl_run_target_team_region;
- __tgt_rtl_run_target_team_region_async;
- __tgt_rtl_run_target_region;
- __tgt_rtl_run_target_region_async;
- __tgt_rtl_synchronize;
+ __tgt_rtl*;
local:
*;
};
diff --git projects/openmp/runtime/cmake/LibompHandleFlags.cmake projects/openmp/runtime/cmake/LibompHandleFlags.cmake
index 0b8e3a35c888..cacc192eb378 100644
--- projects/openmp/runtime/cmake/LibompHandleFlags.cmake
+++ projects/openmp/runtime/cmake/LibompHandleFlags.cmake
@@ -94,7 +94,6 @@ function(libomp_get_ldflags ldflags)
IF_DEFINED CMAKE_C_OSX_CURRENT_VERSION_FLAG)
libomp_append(ldflags_local "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}${LIBOMP_VERSION_MAJOR}.${LIBOMP_VERSION_MINOR}"
IF_DEFINED CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG)
- libomp_append(ldflags_local -Wl,--warn-shared-textrel LIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG)
libomp_append(ldflags_local -Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG)
libomp_append(ldflags_local "-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
libomp_append(ldflags_local -static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG)
diff --git projects/openmp/runtime/cmake/config-ix.cmake projects/openmp/runtime/cmake/config-ix.cmake
index 3419dd8cd788..fb7a644155e2 100644
--- projects/openmp/runtime/cmake/config-ix.cmake
+++ projects/openmp/runtime/cmake/config-ix.cmake
@@ -100,9 +100,8 @@ if(WIN32)
libomp_check_linker_flag(/SAFESEH LIBOMP_HAVE_SAFESEH_FLAG)
elseif(NOT APPLE)
libomp_check_linker_flag(-Wl,-x LIBOMP_HAVE_X_FLAG)
- libomp_check_linker_flag(-Wl,--warn-shared-textrel LIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG)
libomp_check_linker_flag(-Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG)
- libomp_check_linker_flag("-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ libomp_check_linker_flag("-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_test_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
libomp_check_linker_flag(-static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG)
libomp_check_linker_flag(-Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG)
endif()
diff --git projects/openmp/runtime/src/exports_so.txt projects/openmp/runtime/src/exports_so.txt
index 30222418163d..4e159a1abf29 100644
--- projects/openmp/runtime/src/exports_so.txt
+++ projects/openmp/runtime/src/exports_so.txt
@@ -74,10 +74,8 @@ VERSION {
__kmp_fork_call;
__kmp_invoke_microtask;
#if KMP_USE_MONITOR
- __kmp_launch_monitor;
__kmp_reap_monitor;
#endif
- __kmp_launch_worker;
__kmp_reap_worker;
__kmp_release_64;
__kmp_wait_64;
diff --git projects/openmp/runtime/src/exports_test_so.txt projects/openmp/runtime/src/exports_test_so.txt
new file mode 100644
index 000000000000..912d160e7c06
--- /dev/null
+++ projects/openmp/runtime/src/exports_test_so.txt
@@ -0,0 +1,60 @@
+# exports_test_so.txt #
+
+#
+#//===----------------------------------------------------------------------===//
+#//
+#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+#// See https://llvm.org/LICENSE.txt for license information.
+#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#//
+#//===----------------------------------------------------------------------===//
+#
+
+# This is used only to test if the linker supports version scripts. If the full
+# version script it used we may error on undefined symbols and erroneously fail.
+
+VERSION {
+
+ global: # Exported symbols.
+
+ *; # All symbols as exported for testing.
+
+ local: # Non-exported symbols.
+
+ *; # All other symbols are not exported.
+
+}; # VERSION
+
+# sets up GCC OMP_ version dependency chain
+OMP_1.0 {
+};
+OMP_2.0 {
+} OMP_1.0;
+OMP_3.0 {
+} OMP_2.0;
+OMP_3.1 {
+} OMP_3.0;
+OMP_4.0 {
+} OMP_3.1;
+OMP_4.5 {
+} OMP_4.0;
+OMP_5.0 {
+} OMP_4.5;
+
+# sets up GCC GOMP_ version dependency chain
+GOMP_1.0 {
+};
+GOMP_2.0 {
+} GOMP_1.0;
+GOMP_3.0 {
+} GOMP_2.0;
+GOMP_4.0 {
+} GOMP_3.0;
+GOMP_4.5 {
+} GOMP_4.0;
+GOMP_5.0 {
+} GOMP_4.5;
+GOMP_5.0.1 {
+} GOMP_5.0;
+
+# end of file #
diff --git projects/openmp/runtime/src/kmp_runtime.cpp projects/openmp/runtime/src/kmp_runtime.cpp
index e0c8cf241044..772942079b1b 100644
--- projects/openmp/runtime/src/kmp_runtime.cpp
+++ projects/openmp/runtime/src/kmp_runtime.cpp
@@ -8305,3 +8305,20 @@ void __kmp_omp_display_env(int verbose) {
__kmp_display_env_impl(!verbose, verbose);
__kmp_release_bootstrap_lock(&__kmp_initz_lock);
}
+
+// Empty symbols to export (see exports_so.txt) when feature is disabled
+extern "C" {
+#if !KMP_STATS_ENABLED
+void __kmp_reset_stats() {}
+#endif
+#if !USE_DEBUGGER
+int __kmp_omp_debug_struct_info = FALSE;
+int __kmp_debugging = FALSE;
+#endif
+#if !USE_ITT_BUILD || !USE_ITT_NOTIFY
+void __kmp_itt_fini_ittlib() {}
+void __kmp_itt_init_ittlib() {}
+#endif
+}
+
+// end of file
diff --git projects/openmp/runtime/src/kmp_utility.cpp projects/openmp/runtime/src/kmp_utility.cpp
index 6e6785deb445..5f66e2509d33 100644
--- projects/openmp/runtime/src/kmp_utility.cpp
+++ projects/openmp/runtime/src/kmp_utility.cpp
@@ -407,3 +407,16 @@ void __kmp_expand_file_name(char *result, size_t rlen, char *pattern) {
*pos = '\0';
}
+
+#if !OMPT_SUPPORT
+extern "C" {
+typedef struct ompt_start_tool_result_t ompt_start_tool_result_t;
+// Define symbols expected by VERSION script
+ompt_start_tool_result_t *ompt_start_tool(unsigned int omp_version,
+ const char *runtime_version) {
+ return nullptr;
+}
+
+void ompt_libomp_connect(ompt_start_tool_result_t *result) { result = nullptr; }
+}
+#endif
diff --git projects/openmp/runtime/src/z_Linux_util.cpp projects/openmp/runtime/src/z_Linux_util.cpp
index 3b5910fc95e8..e36952f30982 100644
--- projects/openmp/runtime/src/z_Linux_util.cpp
+++ projects/openmp/runtime/src/z_Linux_util.cpp
@@ -1049,7 +1049,7 @@ void __kmp_exit_thread(int exit_status) {
#if KMP_USE_MONITOR
void __kmp_resume_monitor();
-void __kmp_reap_monitor(kmp_info_t *th) {
+extern "C" void __kmp_reap_monitor(kmp_info_t *th) {
int status;
void *exit_val;
@@ -1091,6 +1091,12 @@ void __kmp_reap_monitor(kmp_info_t *th) {
KMP_MB(); /* Flush all pending memory write invalidates. */
}
+#else
+// Empty symbol to export (see exports_so.txt) when
+// monitor thread feature is disabled
+extern "C" void __kmp_reap_monitor(kmp_info_t *th) {
+ (void)th;
+}
#endif // KMP_USE_MONITOR
void __kmp_reap_worker(kmp_info_t *th) {