From 17d56d405838187348843db0ca687a6d62f91130 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Sat, 16 Nov 2024 13:27:30 -0800 Subject: [PATCH] Add missing patches --- ...-18-Always-build-shared-libs-for-LLD.patch | 29 +++ ...-19-Always-build-shared-libs-for-LLD.patch | 30 +++ ...move-myst_parser-dependency-for-RHEL.patch | 41 ++++ ...move-myst_parser-dependency-for-RHEL.patch | 43 ++++ ...size-constant-on-aarch64-and-ppc64le.patch | 25 +++ ...-funwind-tables-the-default-on-all-a.patch | 27 +++ 0001-Workaround-a-bug-in-ORC-on-ppc64le.patch | 30 +++ ...-option-to-disable-tsan-tests-111548.patch | 62 ++++++ ...siblings_list-if-physical_package_id.patch | 205 ++++++++++++++++++ ...clang-Don-t-install-static-libraries.patch | 25 +++ 10 files changed, 517 insertions(+) create mode 100644 0001-18-Always-build-shared-libs-for-LLD.patch create mode 100644 0001-19-Always-build-shared-libs-for-LLD.patch create mode 100644 0001-19-Remove-myst_parser-dependency-for-RHEL.patch create mode 100644 0001-20-Remove-myst_parser-dependency-for-RHEL.patch create mode 100644 0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch create mode 100644 0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch create mode 100644 0001-Workaround-a-bug-in-ORC-on-ppc64le.patch create mode 100644 0001-openmp-Add-option-to-disable-tsan-tests-111548.patch create mode 100644 0001-openmp-Use-core_siblings_list-if-physical_package_id.patch create mode 100644 0003-PATCH-clang-Don-t-install-static-libraries.patch diff --git a/0001-18-Always-build-shared-libs-for-LLD.patch b/0001-18-Always-build-shared-libs-for-LLD.patch new file mode 100644 index 0000000..1659800 --- /dev/null +++ b/0001-18-Always-build-shared-libs-for-LLD.patch @@ -0,0 +1,29 @@ +From b1c60d7fa322a2d208556087df9e7ef94bfbffb8 Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Wed, 8 May 2024 12:30:36 +0900 +Subject: [PATCH] Always build shared libs for LLD + +We don't want to enable BUILD_SHARED_LIBS for the whole build, +but we do want to build lld libraries. +--- + lld/cmake/modules/AddLLD.cmake | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake +index 2ee066b41535..270c03f096ac 100644 +--- a/lld/cmake/modules/AddLLD.cmake ++++ b/lld/cmake/modules/AddLLD.cmake +@@ -7,9 +7,8 @@ macro(add_lld_library name) + "" + "" + ${ARGN}) +- if(ARG_SHARED) +- set(ARG_ENABLE_SHARED SHARED) +- endif() ++ # Always build shared libs for LLD. ++ set(ARG_ENABLE_SHARED SHARED) + llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS}) + set_target_properties(${name} PROPERTIES FOLDER "lld libraries") + +-- +2.44.0 \ No newline at end of file diff --git a/0001-19-Always-build-shared-libs-for-LLD.patch b/0001-19-Always-build-shared-libs-for-LLD.patch new file mode 100644 index 0000000..6840554 --- /dev/null +++ b/0001-19-Always-build-shared-libs-for-LLD.patch @@ -0,0 +1,30 @@ +From 69faadbc396000bfa60c722f6fb9c0fc3fb2daf0 Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Wed, 8 May 2024 12:30:36 +0900 +Subject: [PATCH] Always build shared libs for LLD + +We don't want to enable BUILD_SHARED_LIBS for the whole build, +but we do want to build lld libraries. +--- + lld/cmake/modules/AddLLD.cmake | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake +index 9f2684b6f933..743ec87814a2 100644 +--- a/lld/cmake/modules/AddLLD.cmake ++++ b/lld/cmake/modules/AddLLD.cmake +@@ -7,9 +7,8 @@ macro(add_lld_library name) + "" + "" + ${ARGN}) +- if(ARG_SHARED) +- set(ARG_ENABLE_SHARED SHARED) +- endif() ++ # Always build shared libs for LLD. ++ set(ARG_ENABLE_SHARED SHARED) + llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS}) + + if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) +-- +2.45.1 + diff --git a/0001-19-Remove-myst_parser-dependency-for-RHEL.patch b/0001-19-Remove-myst_parser-dependency-for-RHEL.patch new file mode 100644 index 0000000..d1df528 --- /dev/null +++ b/0001-19-Remove-myst_parser-dependency-for-RHEL.patch @@ -0,0 +1,41 @@ +From d8742e9b361e5fd6fee2298b8ea0aeb4671ec05a Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Wed, 22 May 2024 09:39:26 +0200 +Subject: [PATCH] Remove myst_parser dependency for RHEL + +--- + clang/docs/conf.py | 3 +-- + llvm/docs/conf.py | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/clang/docs/conf.py b/clang/docs/conf.py +index 4cee382a718f..d2e2198e05d4 100644 +--- a/clang/docs/conf.py ++++ b/clang/docs/conf.py +@@ -43,8 +43,7 @@ try: + + extensions.append("myst_parser") + except ImportError: +- if not tags.has("builder-man"): +- raise ++ pass + + + # The encoding of source files. +diff --git a/llvm/docs/conf.py b/llvm/docs/conf.py +index 7f2ed5309606..354a41f11280 100644 +--- a/llvm/docs/conf.py ++++ b/llvm/docs/conf.py +@@ -36,8 +36,7 @@ try: + + extensions.append("myst_parser") + except ImportError: +- if not tags.has("builder-man"): +- raise ++ pass + + # Automatic anchors for markdown titles + from llvm_slug import make_slug +-- +2.44.0 + diff --git a/0001-20-Remove-myst_parser-dependency-for-RHEL.patch b/0001-20-Remove-myst_parser-dependency-for-RHEL.patch new file mode 100644 index 0000000..0697d1e --- /dev/null +++ b/0001-20-Remove-myst_parser-dependency-for-RHEL.patch @@ -0,0 +1,43 @@ +From 50cd36c2156d375a6d50f661908b460fbbd22e78 Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Wed, 22 May 2024 09:39:26 +0200 +Subject: [PATCH] Remove myst_parser dependency for RHEL + +--- + clang/docs/conf.py | 3 +-- + llvm/docs/conf.py | 5 +---- + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/clang/docs/conf.py b/clang/docs/conf.py +index 4cee382a718f..d2e2198e05d4 100644 +--- a/clang/docs/conf.py ++++ b/clang/docs/conf.py +@@ -43,8 +43,7 @@ try: + + extensions.append("myst_parser") + except ImportError: +- if not tags.has("builder-man"): +- raise ++ pass + + + # The encoding of source files. +diff --git a/llvm/docs/conf.py b/llvm/docs/conf.py +index d9fa6961032b..e38c009a457d 100644 +--- a/llvm/docs/conf.py ++++ b/llvm/docs/conf.py +@@ -36,10 +36,7 @@ try: + + extensions.append("myst_parser") + except ImportError: +- if not tags.has("builder-man"): +- raise +-else: +- myst_enable_extensions = ["substitution"] ++ pass + + # Automatic anchors for markdown titles + myst_heading_anchors = 6 +-- +2.46.0 + diff --git a/0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch b/0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch new file mode 100644 index 0000000..925c996 --- /dev/null +++ b/0001-Fix-page-size-constant-on-aarch64-and-ppc64le.patch @@ -0,0 +1,25 @@ +From 5f73befe5a0df82e455f4b1052e62f34009e98bb Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Tue, 23 Apr 2024 15:08:34 -0700 +Subject: [PATCH] Fix page size constant on aarch64 and ppc64le + +--- + compiler-rt/lib/cfi/cfi.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/compiler-rt/lib/cfi/cfi.cpp b/compiler-rt/lib/cfi/cfi.cpp +index ad1c91623514..e7e86e5807a8 100644 +--- a/compiler-rt/lib/cfi/cfi.cpp ++++ b/compiler-rt/lib/cfi/cfi.cpp +@@ -53,6 +53,8 @@ namespace __cfi { + + #if SANITIZER_LOONGARCH64 + #define kCfiShadowLimitsStorageSize 16384 // 16KiB on loongarch64 per page ++#elif defined(__aarch64__) || defined(__powerpc64__) ++#define kCfiShadowLimitsStorageSize 65536 // 1 page + #else + #define kCfiShadowLimitsStorageSize 4096 // 1 page + #endif +-- +2.40.1 + diff --git a/0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch b/0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch new file mode 100644 index 0000000..113f2a7 --- /dev/null +++ b/0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch @@ -0,0 +1,27 @@ +From 49f827b09db549de62dcaf8b90b3fcb3e08c0ee5 Mon Sep 17 00:00:00 2001 +From: Serge Guelton +Date: Mon, 6 Mar 2023 12:37:48 +0100 +Subject: [PATCH] Make -funwind-tables the default on all archs + +--- + clang/lib/Driver/ToolChains/Gnu.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp +index 24fbdcffc07b..8fed46b49515 100644 +--- a/clang/lib/Driver/ToolChains/Gnu.cpp ++++ b/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -2904,6 +2904,10 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const { + case llvm::Triple::riscv64: + case llvm::Triple::x86: + case llvm::Triple::x86_64: ++ // Enable -funwind-tables on all architectures supported by Fedora: ++ // rhbz#1655546 ++ case llvm::Triple::systemz: ++ case llvm::Triple::arm: + return UnwindTableLevel::Asynchronous; + default: + return UnwindTableLevel::None; +-- +2.39.1 + diff --git a/0001-Workaround-a-bug-in-ORC-on-ppc64le.patch b/0001-Workaround-a-bug-in-ORC-on-ppc64le.patch new file mode 100644 index 0000000..af236a1 --- /dev/null +++ b/0001-Workaround-a-bug-in-ORC-on-ppc64le.patch @@ -0,0 +1,30 @@ +From a2449cee8c995b56f1892502aab3dfad3d6f3ca1 Mon Sep 17 00:00:00 2001 +From: Tulio Magno Quites Machado Filho +Date: Fri, 8 Sep 2023 11:45:34 -0300 +Subject: [PATCH] Workaround a bug in ORC on ppc64le + +The Jit code appears to be returning the wrong printf symbol on ppc64le +after the transition of the default long double to IEEE 128-bit floating +point. +--- + clang/unittests/Interpreter/InterpreterTest.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp +index abb8e6377aab..7b6697ebc6ed 100644 +--- a/clang/unittests/Interpreter/InterpreterTest.cpp ++++ b/clang/unittests/Interpreter/InterpreterTest.cpp +@@ -243,7 +243,9 @@ TEST(IncrementalProcessing, FindMangledNameSymbol) { + EXPECT_FALSE(!Addr); + + // FIXME: Re-enable when we investigate the way we handle dllimports on Win. +-#ifndef _WIN32 ++ // FIXME: The printf symbol returned from the Jit may not be correct on ++ // ppc64le when the default long double is IEEE 128-bit fp. ++#if !defined _WIN32 && !(defined __PPC64__ && defined __LITTLE_ENDIAN__) + EXPECT_EQ((uintptr_t)&printf, Addr->getValue()); + #endif // _WIN32 + } +-- +2.41.0 + diff --git a/0001-openmp-Add-option-to-disable-tsan-tests-111548.patch b/0001-openmp-Add-option-to-disable-tsan-tests-111548.patch new file mode 100644 index 0000000..0e30347 --- /dev/null +++ b/0001-openmp-Add-option-to-disable-tsan-tests-111548.patch @@ -0,0 +1,62 @@ +From b2edeb58b8cb3268acee425cd52b406eb60a8095 Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Wed, 9 Oct 2024 11:29:30 +0200 +Subject: [PATCH] [openmp] Add option to disable tsan tests (#111548) + +This adds a OPENMP_TEST_ENABLE_TSAN option that allows to override +whether tests using tsan will be enabled. The option defaults to the +existing auto-detection. + +The background here is +https://github.com/llvm/llvm-project/issues/111492, where we have some +systems where tsan doesn't work, but we do still want to build it and +run tests that don't use tsan. +--- + openmp/cmake/OpenMPTesting.cmake | 3 +++ + openmp/tools/archer/tests/CMakeLists.txt | 2 +- + openmp/tools/archer/tests/lit.site.cfg.in | 2 +- + 3 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/openmp/cmake/OpenMPTesting.cmake b/openmp/cmake/OpenMPTesting.cmake +index c67ad8b1cbd9..14cc5c67d84c 100644 +--- a/openmp/cmake/OpenMPTesting.cmake ++++ b/openmp/cmake/OpenMPTesting.cmake +@@ -163,6 +163,9 @@ else() + set(OPENMP_TEST_COMPILER_HAS_OMIT_FRAME_POINTER_FLAGS 1) + endif() + ++set(OPENMP_TEST_ENABLE_TSAN "${OPENMP_TEST_COMPILER_HAS_TSAN_FLAGS}" CACHE BOOL ++ "Whether to enable tests using tsan") ++ + # Function to set compiler features for use in lit. + function(update_test_compiler_features) + set(FEATURES "[") +diff --git a/openmp/tools/archer/tests/CMakeLists.txt b/openmp/tools/archer/tests/CMakeLists.txt +index 5de91148fa4b..412c7d63725e 100644 +--- a/openmp/tools/archer/tests/CMakeLists.txt ++++ b/openmp/tools/archer/tests/CMakeLists.txt +@@ -28,7 +28,7 @@ macro(pythonize_bool var) + endmacro() + + pythonize_bool(LIBARCHER_HAVE_LIBATOMIC) +-pythonize_bool(OPENMP_TEST_COMPILER_HAS_TSAN_FLAGS) ++pythonize_bool(OPENMP_TEST_ENABLE_TSAN) + + set(ARCHER_TSAN_TEST_DEPENDENCE "") + if(TARGET tsan) +diff --git a/openmp/tools/archer/tests/lit.site.cfg.in b/openmp/tools/archer/tests/lit.site.cfg.in +index 55edfde9738e..ddcb7b8bc3a5 100644 +--- a/openmp/tools/archer/tests/lit.site.cfg.in ++++ b/openmp/tools/archer/tests/lit.site.cfg.in +@@ -12,7 +12,7 @@ config.omp_library_dir = "@LIBOMP_LIBRARY_DIR@" + config.omp_header_dir = "@LIBOMP_INCLUDE_DIR@" + config.operating_system = "@CMAKE_SYSTEM_NAME@" + config.has_libatomic = @LIBARCHER_HAVE_LIBATOMIC@ +-config.has_tsan = @OPENMP_TEST_COMPILER_HAS_TSAN_FLAGS@ ++config.has_tsan = @OPENMP_TEST_ENABLE_TSAN@ + + config.test_archer_flags = "@LIBARCHER_TEST_FLAGS@" + config.libarcher_obj_root = "@CMAKE_CURRENT_BINARY_DIR@" +-- +2.46.0 + diff --git a/0001-openmp-Use-core_siblings_list-if-physical_package_id.patch b/0001-openmp-Use-core_siblings_list-if-physical_package_id.patch new file mode 100644 index 0000000..bacb81f --- /dev/null +++ b/0001-openmp-Use-core_siblings_list-if-physical_package_id.patch @@ -0,0 +1,205 @@ +From 5fb4d7f6079a76b2907ccc8c53c7c509c30a3dca Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Thu, 10 Oct 2024 12:47:33 +0000 +Subject: [PATCH] [openmp] Use core_siblings_list if physical_package_id not + available + +On powerpc, physical_package_id may not be available. Currently, +this causes openmp to fall back to flat topology and various +affinity tests fail. + +Fix this by parsing core_siblings_list to deterimine which cpus +belong to the same socket. This matches what the testing code +does. The code to parse the CPU list format thankfully already +exists. + +Fixes https://github.com/llvm/llvm-project/issues/111809. +--- + openmp/runtime/src/kmp_affinity.cpp | 100 +++++++++++++------ + openmp/runtime/test/affinity/kmp-hw-subset.c | 2 +- + 2 files changed, 72 insertions(+), 30 deletions(-) + +diff --git a/openmp/runtime/src/kmp_affinity.cpp b/openmp/runtime/src/kmp_affinity.cpp +index cf5cad04eb57..c3d5ecf1345e 100644 +--- a/openmp/runtime/src/kmp_affinity.cpp ++++ b/openmp/runtime/src/kmp_affinity.cpp +@@ -1589,15 +1589,13 @@ kmp_str_buf_t *__kmp_affinity_str_buf_mask(kmp_str_buf_t *buf, + return buf; + } + +-// Return (possibly empty) affinity mask representing the offline CPUs +-// Caller must free the mask +-kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() { +- kmp_affin_mask_t *offline; +- KMP_CPU_ALLOC(offline); +- KMP_CPU_ZERO(offline); ++static kmp_affin_mask_t *__kmp_parse_cpu_list(const char *path) { ++ kmp_affin_mask_t *mask; ++ KMP_CPU_ALLOC(mask); ++ KMP_CPU_ZERO(mask); + #if KMP_OS_LINUX + int n, begin_cpu, end_cpu; +- kmp_safe_raii_file_t offline_file; ++ kmp_safe_raii_file_t file; + auto skip_ws = [](FILE *f) { + int c; + do { +@@ -1606,29 +1604,29 @@ kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() { + if (c != EOF) + ungetc(c, f); + }; +- // File contains CSV of integer ranges representing the offline CPUs ++ // File contains CSV of integer ranges representing the CPUs + // e.g., 1,2,4-7,9,11-15 +- int status = offline_file.try_open("/sys/devices/system/cpu/offline", "r"); ++ int status = file.try_open(path, "r"); + if (status != 0) +- return offline; +- while (!feof(offline_file)) { +- skip_ws(offline_file); +- n = fscanf(offline_file, "%d", &begin_cpu); ++ return mask; ++ while (!feof(file)) { ++ skip_ws(file); ++ n = fscanf(file, "%d", &begin_cpu); + if (n != 1) + break; +- skip_ws(offline_file); +- int c = fgetc(offline_file); ++ skip_ws(file); ++ int c = fgetc(file); + if (c == EOF || c == ',') { + // Just single CPU + end_cpu = begin_cpu; + } else if (c == '-') { + // Range of CPUs +- skip_ws(offline_file); +- n = fscanf(offline_file, "%d", &end_cpu); ++ skip_ws(file); ++ n = fscanf(file, "%d", &end_cpu); + if (n != 1) + break; +- skip_ws(offline_file); +- c = fgetc(offline_file); // skip ',' ++ skip_ws(file); ++ c = fgetc(file); // skip ',' + } else { + // Syntax problem + break; +@@ -1638,13 +1636,19 @@ kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() { + end_cpu >= __kmp_xproc || begin_cpu > end_cpu) { + continue; + } +- // Insert [begin_cpu, end_cpu] into offline mask ++ // Insert [begin_cpu, end_cpu] into mask + for (int cpu = begin_cpu; cpu <= end_cpu; ++cpu) { +- KMP_CPU_SET(cpu, offline); ++ KMP_CPU_SET(cpu, mask); + } + } + #endif +- return offline; ++ return mask; ++} ++ ++// Return (possibly empty) affinity mask representing the offline CPUs ++// Caller must free the mask ++kmp_affin_mask_t *__kmp_affinity_get_offline_cpus() { ++ return __kmp_parse_cpu_list("/sys/devices/system/cpu/offline"); + } + + // Return the number of available procs +@@ -3175,6 +3179,37 @@ static inline const char *__kmp_cpuinfo_get_envvar() { + return envvar; + } + ++static bool __kmp_package_id_from_core_siblings_list(unsigned **threadInfo, ++ unsigned num_avail, ++ unsigned idx) { ++ if (!KMP_AFFINITY_CAPABLE()) ++ return false; ++ ++ char path[256]; ++ KMP_SNPRINTF(path, sizeof(path), ++ "/sys/devices/system/cpu/cpu%u/topology/core_siblings_list", ++ threadInfo[idx][osIdIndex]); ++ kmp_affin_mask_t *siblings = __kmp_parse_cpu_list(path); ++ for (unsigned i = 0; i < num_avail; ++i) { ++ unsigned cpu_id = threadInfo[i][osIdIndex]; ++ KMP_ASSERT(cpu_id < __kmp_affin_mask_size * CHAR_BIT); ++ if (!KMP_CPU_ISSET(cpu_id, siblings)) ++ continue; ++ if (threadInfo[i][pkgIdIndex] == UINT_MAX) { ++ // Arbitrarily pick the first index we encounter, it only matters that ++ // the value is the same for all siblings. ++ threadInfo[i][pkgIdIndex] = idx; ++ } else if (threadInfo[i][pkgIdIndex] != idx) { ++ // Contradictory sibling lists. ++ KMP_CPU_FREE(siblings); ++ return false; ++ } ++ } ++ KMP_ASSERT(threadInfo[idx][pkgIdIndex] != UINT_MAX); ++ KMP_CPU_FREE(siblings); ++ return true; ++} ++ + // Parse /proc/cpuinfo (or an alternate file in the same format) to obtain the + // affinity map. On AIX, the map is obtained through system SRAD (Scheduler + // Resource Allocation Domain). +@@ -3550,18 +3585,13 @@ static bool __kmp_affinity_create_cpuinfo_map(int *line, + return false; + } + +- // Check for missing fields. The osId field must be there, and we +- // currently require that the physical id field is specified, also. ++ // Check for missing fields. The osId field must be there. The physical ++ // id field will be checked later. + if (threadInfo[num_avail][osIdIndex] == UINT_MAX) { + CLEANUP_THREAD_INFO; + *msg_id = kmp_i18n_str_MissingProcField; + return false; + } +- if (threadInfo[0][pkgIdIndex] == UINT_MAX) { +- CLEANUP_THREAD_INFO; +- *msg_id = kmp_i18n_str_MissingPhysicalIDField; +- return false; +- } + + // Skip this proc if it is not included in the machine model. + if (KMP_AFFINITY_CAPABLE() && +@@ -3591,6 +3621,18 @@ static bool __kmp_affinity_create_cpuinfo_map(int *line, + } + *line = 0; + ++ // At least on powerpc, Linux may return -1 for physical_package_id. Try ++ // to reconstruct topology from core_siblings_list in that case. ++ for (i = 0; i < num_avail; ++i) { ++ if (threadInfo[i][pkgIdIndex] == UINT_MAX) { ++ if (!__kmp_package_id_from_core_siblings_list(threadInfo, num_avail, i)) { ++ CLEANUP_THREAD_INFO; ++ *msg_id = kmp_i18n_str_MissingPhysicalIDField; ++ return false; ++ } ++ } ++ } ++ + #if KMP_MIC && REDUCE_TEAM_SIZE + unsigned teamSize = 0; + #endif // KMP_MIC && REDUCE_TEAM_SIZE +diff --git a/openmp/runtime/test/affinity/kmp-hw-subset.c b/openmp/runtime/test/affinity/kmp-hw-subset.c +index 606fcdfbada9..0b49969bd3b1 100644 +--- a/openmp/runtime/test/affinity/kmp-hw-subset.c ++++ b/openmp/runtime/test/affinity/kmp-hw-subset.c +@@ -25,7 +25,7 @@ static int compare_hw_subset_places(const place_list_t *openmp_places, + expected_per_place = nthreads_per_core; + } else { + expected_total = nsockets; +- expected_per_place = ncores_per_socket; ++ expected_per_place = ncores_per_socket * nthreads_per_core; + } + if (openmp_places->num_places != expected_total) { + fprintf(stderr, "error: KMP_HW_SUBSET did not half each resource layer!\n"); +-- +2.47.0 + diff --git a/0003-PATCH-clang-Don-t-install-static-libraries.patch b/0003-PATCH-clang-Don-t-install-static-libraries.patch new file mode 100644 index 0000000..bc8fa51 --- /dev/null +++ b/0003-PATCH-clang-Don-t-install-static-libraries.patch @@ -0,0 +1,25 @@ +From 88704fc2eabb9dd19a9c3eb81a9b3dc37d95651c Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Fri, 31 Jan 2020 11:04:57 -0800 +Subject: [PATCH][clang] Don't install static libraries + +--- + clang/cmake/modules/AddClang.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake +index 5752f4277444..0f52822d91f0 100644 +--- a/clang/cmake/modules/AddClang.cmake ++++ b/clang/cmake/modules/AddClang.cmake +@@ -113,7 +113,7 @@ macro(add_clang_library name) + if(TARGET ${lib}) + target_link_libraries(${lib} INTERFACE ${LLVM_COMMON_LIBS}) + +- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN) ++ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)) + get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA clang-libraries) + install(TARGETS ${lib} + COMPONENT ${lib} +-- +2.30.2 +