mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-10-17 11:27:15 +00:00
libclc: Rollback to 22.1.8
Given that we are only including libclc for our mesa-pvr recipes, we need to lock down the version to a known working version to avoid the llvm version changes from causing build failures. Signed-off-by: Ryan Eatmon <reatmon@ti.com>
This commit is contained in:
1 parent
9cc77b806f
commit
c909da414d
43 files changed
+3062
-27
No files matched your search
+60
@@ -0,0 +1,60 @@
|
||||
From 97247b6a1df63a5f930d090a3952876eb67cf6fb Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sun, 27 Aug 2017 10:37:49 -0700
|
||||
Subject: [PATCH] libcxxabi: Find libunwind headers when
|
||||
LIBCXXABI_LIBUNWIND_INCLUDES is set
|
||||
|
||||
Currently, when LIBCXXABI_LIBUNWIND_INCLUDES is set via CMake arguments
|
||||
then it ends up not searching the specified dir and unwind.h is not found
|
||||
especially for ARM targets
|
||||
|
||||
This patch makes the searching synthesized directories and then set
|
||||
LIBCXXABI_LIBUNWIND_INCLUDES if its there in environment
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
libcxxabi/CMakeLists.txt | 15 ++++++++++-----
|
||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt
|
||||
index 2b67c5972339..45d84b404b30 100644
|
||||
--- a/libcxxabi/CMakeLists.txt
|
||||
+++ b/libcxxabi/CMakeLists.txt
|
||||
@@ -476,7 +476,7 @@ set(LIBCXXABI_LIBUNWIND_PATH "${LIBCXXABI_LIBUNWIND_PATH}" CACHE PATH
|
||||
"Specify path to libunwind source." FORCE)
|
||||
|
||||
if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM)
|
||||
- find_path(LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL libunwind.h
|
||||
+ find_path(LIBCXXABI_LIBUNWIND_INCLUDES libunwind.h
|
||||
PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES}
|
||||
${LIBCXXABI_LIBUNWIND_PATH}/include
|
||||
${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES}
|
||||
@@ -487,18 +487,23 @@ if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM)
|
||||
NO_CMAKE_FIND_ROOT_PATH
|
||||
)
|
||||
|
||||
- if (LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL STREQUAL "LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL-NOTFOUND")
|
||||
- set(LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL "")
|
||||
+ if (LIBCXXABI_LIBUNWIND_INCLUDES STREQUAL "LIBCXXABI_LIBUNWIND_INCLUDES-NOTFOUND")
|
||||
+ set(LIBCXXABI_LIBUNWIND_INCLUDES "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-if (NOT "${LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL}" STREQUAL "")
|
||||
- include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL}")
|
||||
+if (NOT "${LIBCXXABI_LIBUNWIND_INCLUDES}" STREQUAL "")
|
||||
+ include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES}")
|
||||
endif()
|
||||
|
||||
add_custom_target(cxxabi-test-depends
|
||||
COMMENT "Build dependencies required to run the libc++abi test suite.")
|
||||
|
||||
+set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH
|
||||
+ "Specify path to libunwind includes." FORCE)
|
||||
+set(LIBCXXABI_LIBUNWIND_PATH "${LIBCXXABI_LIBUNWIND_PATH}" CACHE PATH
|
||||
+ "Specify path to libunwind source." FORCE)
|
||||
+
|
||||
# Add source code. This also contains all of the logic for deciding linker flags
|
||||
# soname, etc...
|
||||
add_subdirectory(include)
|
||||
+309
@@ -0,0 +1,309 @@
|
||||
From eae63772aacba29de729d9af5c52542cd8a043ee Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sun, 19 Apr 2015 15:16:23 -0700
|
||||
Subject: [PATCH] compiler-rt: support a new embedded linux target
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
.../make/platform/clang_linux_embedded.mk | 286 ++++++++++++++++++
|
||||
.../clang_linux_embedded_test_input.c | 0
|
||||
2 files changed, 286 insertions(+)
|
||||
create mode 100644 compiler-rt/make/platform/clang_linux_embedded.mk
|
||||
create mode 100644 compiler-rt/make/platform/clang_linux_embedded_test_input.c
|
||||
|
||||
diff --git a/compiler-rt/make/platform/clang_linux_embedded.mk b/compiler-rt/make/platform/clang_linux_embedded.mk
|
||||
new file mode 100644
|
||||
index 000000000000..d0a890075a1c
|
||||
--- /dev/null
|
||||
+++ b/compiler-rt/make/platform/clang_linux_embedded.mk
|
||||
@@ -0,0 +1,286 @@
|
||||
+# These are the functions which clang needs when it is targeting a previous
|
||||
+# version of the OS. The issue is that the backend may use functions which were
|
||||
+# not present in the libgcc that shipped on the platform. In such cases, we link
|
||||
+# with a version of the library which contains private_extern definitions of all
|
||||
+# the extra functions which might be referenced.
|
||||
+
|
||||
+Description := Static runtime libraries for embedded clang/Linux
|
||||
+
|
||||
+# A function that ensures we don't try to build for architectures that we
|
||||
+# don't have working toolchains for.
|
||||
+CheckArches = \
|
||||
+ $(shell \
|
||||
+ result=""; \
|
||||
+ for arch in $(1); do \
|
||||
+ if $(CC) -arch $$arch -c \
|
||||
+ -integrated-as \
|
||||
+ $(ProjSrcRoot)/make/platform/clang_linux_embedded_test_input.c \
|
||||
+ -o /dev/null > /dev/null 2> /dev/null; then \
|
||||
+ result="$$result$$arch "; \
|
||||
+ else \
|
||||
+ printf 1>&2 \
|
||||
+ "warning: clang_linux_embedded.mk: dropping arch '$$arch' from lib '$(2)'\n"; \
|
||||
+ fi; \
|
||||
+ done; \
|
||||
+ echo $$result)
|
||||
+
|
||||
+XCRun = \
|
||||
+ $(shell \
|
||||
+ result=`xcrun -find $(1) 2> /dev/null`; \
|
||||
+ if [ "$$?" != "0" ]; then result=$(1); fi; \
|
||||
+ echo $$result)
|
||||
+
|
||||
+###
|
||||
+
|
||||
+CC := $(call XCRun,clang)
|
||||
+AR := $(call XCRun,ar)
|
||||
+RANLIB := $(call XCRun,ranlib)
|
||||
+STRIP := $(call XCRun,strip)
|
||||
+LIPO := $(call XCRun,lipo)
|
||||
+DSYMUTIL := $(call XCRun,dsymutil)
|
||||
+Configs :=
|
||||
+UniversalArchs :=
|
||||
+
|
||||
+# Soft-float version of the runtime. No floating-point instructions will be used
|
||||
+# and the ABI (out of necessity) passes floating values in normal registers:
|
||||
+# non-VFP variant of the AAPCS.
|
||||
+UniversalArchs.soft_static := $(call CheckArches,arm armv7m armv7em armv7,soft_static)
|
||||
+Configs += $(if $(UniversalArchs.soft_static),soft_static)
|
||||
+
|
||||
+# Hard-float version of the runtime. On ARM VFP instructions and registers are
|
||||
+# allowed, and floating point values get passed in them. VFP variant of the
|
||||
+# AAPCS.
|
||||
+UniversalArchs.hard_static := $(call CheckArches,armv7em armv7 i386 x86_64,hard_static)
|
||||
+Configs += $(if $(UniversalArchs.hard_static),hard_static)
|
||||
+
|
||||
+UniversalArchs.soft_pic := $(call CheckArches,armv6m armv7m armv7em armv7,soft_pic)
|
||||
+Configs += $(if $(UniversalArchs.soft_pic),soft_pic)
|
||||
+
|
||||
+UniversalArchs.hard_pic := $(call CheckArches,armv7em armv7 i386 x86_64,hard_pic)
|
||||
+Configs += $(if $(UniversalArchs.hard_pic),hard_pic)
|
||||
+
|
||||
+CFLAGS := -Wall -Werror -Oz -fomit-frame-pointer -ffreestanding
|
||||
+
|
||||
+PIC_CFLAGS := -fPIC
|
||||
+STATIC_CFLAGS := -static
|
||||
+
|
||||
+CFLAGS_SOFT := -mfloat-abi=soft
|
||||
+CFLAGS_HARD := -mfloat-abi=hard
|
||||
+
|
||||
+CFLAGS_I386 := -march=pentium
|
||||
+
|
||||
+CFLAGS.soft_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_SOFT)
|
||||
+CFLAGS.hard_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_HARD)
|
||||
+CFLAGS.soft_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_SOFT)
|
||||
+CFLAGS.hard_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_HARD)
|
||||
+
|
||||
+CFLAGS.soft_static.armv7 := $(CFLAGS.soft_static) $(CFLAGS_ARMV7)
|
||||
+CFLAGS.hard_static.armv7 := $(CFLAGS.hard_static) $(CFLAGS_ARMV7)
|
||||
+CFLAGS.soft_pic.armv7 := $(CFLAGS.soft_pic) $(CFLAGS_ARMV7)
|
||||
+CFLAGS.hard_pic.armv7 := $(CFLAGS.hard_pic) $(CFLAGS_ARMV7)
|
||||
+
|
||||
+# x86 platforms ignore -mfloat-abi options and complain about doing so. Despite
|
||||
+# this they're hard-float.
|
||||
+CFLAGS.hard_static.i386 := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_I386)
|
||||
+CFLAGS.hard_pic.i386 := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_I386)
|
||||
+CFLAGS.hard_static.x86_64 := $(CFLAGS) $(STATIC_CFLAGS)
|
||||
+CFLAGS.hard_pic.x86_64 := $(CFLAGS) $(PIC_CFLAGS)
|
||||
+
|
||||
+# Functions not wanted:
|
||||
+# + eprintf is obsolete anyway
|
||||
+# + *vfp: designed for Thumb1 CPUs with VFPv2
|
||||
+
|
||||
+COMMON_FUNCTIONS := \
|
||||
+ absvdi2 \
|
||||
+ absvsi2 \
|
||||
+ addvdi3 \
|
||||
+ addvsi3 \
|
||||
+ ashldi3 \
|
||||
+ ashrdi3 \
|
||||
+ bswapdi2 \
|
||||
+ bswapsi2 \
|
||||
+ clzdi2 \
|
||||
+ clzsi2 \
|
||||
+ cmpdi2 \
|
||||
+ ctzdi2 \
|
||||
+ ctzsi2 \
|
||||
+ divdc3 \
|
||||
+ divdi3 \
|
||||
+ divsc3 \
|
||||
+ divmodsi4 \
|
||||
+ udivmodsi4 \
|
||||
+ do_global_dtors \
|
||||
+ ffsdi2 \
|
||||
+ fixdfdi \
|
||||
+ fixsfdi \
|
||||
+ fixunsdfdi \
|
||||
+ fixunsdfsi \
|
||||
+ fixunssfdi \
|
||||
+ fixunssfsi \
|
||||
+ floatdidf \
|
||||
+ floatdisf \
|
||||
+ floatundidf \
|
||||
+ floatundisf \
|
||||
+ gcc_bcmp \
|
||||
+ lshrdi3 \
|
||||
+ moddi3 \
|
||||
+ muldc3 \
|
||||
+ muldi3 \
|
||||
+ mulsc3 \
|
||||
+ mulvdi3 \
|
||||
+ mulvsi3 \
|
||||
+ negdi2 \
|
||||
+ negvdi2 \
|
||||
+ negvsi2 \
|
||||
+ paritydi2 \
|
||||
+ paritysi2 \
|
||||
+ popcountdi2 \
|
||||
+ popcountsi2 \
|
||||
+ powidf2 \
|
||||
+ powisf2 \
|
||||
+ subvdi3 \
|
||||
+ subvsi3 \
|
||||
+ ucmpdi2 \
|
||||
+ udiv_w_sdiv \
|
||||
+ udivdi3 \
|
||||
+ udivmoddi4 \
|
||||
+ umoddi3 \
|
||||
+ adddf3 \
|
||||
+ addsf3 \
|
||||
+ cmpdf2 \
|
||||
+ cmpsf2 \
|
||||
+ div0 \
|
||||
+ divdf3 \
|
||||
+ divsf3 \
|
||||
+ divsi3 \
|
||||
+ extendsfdf2 \
|
||||
+ ffssi2 \
|
||||
+ fixdfsi \
|
||||
+ fixsfsi \
|
||||
+ floatsidf \
|
||||
+ floatsisf \
|
||||
+ floatunsidf \
|
||||
+ floatunsisf \
|
||||
+ comparedf2 \
|
||||
+ comparesf2 \
|
||||
+ modsi3 \
|
||||
+ muldf3 \
|
||||
+ mulsf3 \
|
||||
+ negdf2 \
|
||||
+ negsf2 \
|
||||
+ subdf3 \
|
||||
+ subsf3 \
|
||||
+ truncdfsf2 \
|
||||
+ udivsi3 \
|
||||
+ umodsi3 \
|
||||
+ unorddf2 \
|
||||
+ unordsf2
|
||||
+
|
||||
+ARM_FUNCTIONS := \
|
||||
+ aeabi_cdcmpeq \
|
||||
+ aeabi_cdrcmple \
|
||||
+ aeabi_cfcmpeq \
|
||||
+ aeabi_cfrcmple \
|
||||
+ aeabi_dcmpeq \
|
||||
+ aeabi_dcmpge \
|
||||
+ aeabi_dcmpgt \
|
||||
+ aeabi_dcmple \
|
||||
+ aeabi_dcmplt \
|
||||
+ aeabi_drsub \
|
||||
+ aeabi_fcmpeq \
|
||||
+ aeabi_fcmpge \
|
||||
+ aeabi_fcmpgt \
|
||||
+ aeabi_fcmple \
|
||||
+ aeabi_fcmplt \
|
||||
+ aeabi_frsub \
|
||||
+ aeabi_idivmod \
|
||||
+ aeabi_uidivmod \
|
||||
+
|
||||
+# ARM Assembly implementation which requires Thumb2 (i.e. won't work on v6M).
|
||||
+THUMB2_FUNCTIONS := \
|
||||
+ switch16 \
|
||||
+ switch32 \
|
||||
+ switch8 \
|
||||
+ switchu8 \
|
||||
+ sync_fetch_and_add_4 \
|
||||
+ sync_fetch_and_sub_4 \
|
||||
+ sync_fetch_and_and_4 \
|
||||
+ sync_fetch_and_or_4 \
|
||||
+ sync_fetch_and_xor_4 \
|
||||
+ sync_fetch_and_nand_4 \
|
||||
+ sync_fetch_and_max_4 \
|
||||
+ sync_fetch_and_umax_4 \
|
||||
+ sync_fetch_and_min_4 \
|
||||
+ sync_fetch_and_umin_4 \
|
||||
+ sync_fetch_and_add_8 \
|
||||
+ sync_fetch_and_sub_8 \
|
||||
+ sync_fetch_and_and_8 \
|
||||
+ sync_fetch_and_or_8 \
|
||||
+ sync_fetch_and_xor_8 \
|
||||
+ sync_fetch_and_nand_8 \
|
||||
+ sync_fetch_and_max_8 \
|
||||
+ sync_fetch_and_umax_8 \
|
||||
+ sync_fetch_and_min_8 \
|
||||
+ sync_fetch_and_umin_8
|
||||
+
|
||||
+I386_FUNCTIONS := \
|
||||
+ i686.get_pc_thunk.eax \
|
||||
+ i686.get_pc_thunk.ebp \
|
||||
+ i686.get_pc_thunk.ebx \
|
||||
+ i686.get_pc_thunk.ecx \
|
||||
+ i686.get_pc_thunk.edi \
|
||||
+ i686.get_pc_thunk.edx \
|
||||
+ i686.get_pc_thunk.esi
|
||||
+
|
||||
+# FIXME: Currently, compiler-rt is missing implementations for a number of the
|
||||
+# functions. Filter them out for now.
|
||||
+MISSING_FUNCTIONS := \
|
||||
+ cmpdf2 cmpsf2 div0 \
|
||||
+ ffssi2 \
|
||||
+ udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \
|
||||
+ bswapsi2 \
|
||||
+ gcc_bcmp \
|
||||
+ do_global_dtors \
|
||||
+ i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \
|
||||
+ i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \
|
||||
+ i686.get_pc_thunk.esi \
|
||||
+ aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \
|
||||
+ aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub \
|
||||
+ aeabi_fcmpeq \ aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt \
|
||||
+ aeabi_frsub aeabi_idivmod aeabi_uidivmod
|
||||
+
|
||||
+FUNCTIONS_ARMV6M := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS)
|
||||
+FUNCTIONS_ARM_ALL := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) $(THUMB2_FUNCTIONS)
|
||||
+FUNCTIONS_I386 := $(COMMON_FUNCTIONS) $(I386_FUNCTIONS)
|
||||
+FUNCTIONS_X86_64 := $(COMMON_FUNCTIONS)
|
||||
+
|
||||
+FUNCTIONS_ARMV6M := \
|
||||
+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARMV6M))
|
||||
+FUNCTIONS_ARM_ALL := \
|
||||
+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARM_ALL))
|
||||
+FUNCTIONS_I386 := \
|
||||
+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_I386))
|
||||
+FUNCTIONS_X86_64 := \
|
||||
+ $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_X86_64))
|
||||
+
|
||||
+FUNCTIONS.soft_static.armv6m := $(FUNCTIONS_ARMV6M)
|
||||
+FUNCTIONS.soft_pic.armv6m := $(FUNCTIONS_ARMV6M)
|
||||
+
|
||||
+FUNCTIONS.soft_static.armv7m := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.soft_pic.armv7m := $(FUNCTIONS_ARM_ALL)
|
||||
+
|
||||
+FUNCTIONS.soft_static.armv7em := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.hard_static.armv7em := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.soft_pic.armv7em := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.hard_pic.armv7em := $(FUNCTIONS_ARM_ALL)
|
||||
+
|
||||
+FUNCTIONS.soft_static.armv7 := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.hard_static.armv7 := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.soft_pic.armv7 := $(FUNCTIONS_ARM_ALL)
|
||||
+FUNCTIONS.hard_pic.armv7 := $(FUNCTIONS_ARM_ALL)
|
||||
+
|
||||
+FUNCTIONS.hard_static.i386 := $(FUNCTIONS_I386)
|
||||
+FUNCTIONS.hard_pic.i386 := $(FUNCTIONS_I386)
|
||||
+
|
||||
+FUNCTIONS.hard_static.x86_64 := $(FUNCTIONS_X86_64)
|
||||
+FUNCTIONS.hard_pic.x86_64 := $(FUNCTIONS_X86_64)
|
||||
diff --git a/compiler-rt/make/platform/clang_linux_embedded_test_input.c b/compiler-rt/make/platform/clang_linux_embedded_test_input.c
|
||||
new file mode 100644
|
||||
index 000000000000..e69de29bb2d1
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
From 16b03fccab20cac13065ab99f36a7f0a77a62b92 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 19 May 2016 23:11:45 -0700
|
||||
Subject: [PATCH] compiler-rt: Simplify cross-compilation. Don't use
|
||||
native-compiled llvm-config.
|
||||
|
||||
Note: AddLLVM.cmake does not expose the LLVM source directory.
|
||||
So if you want to run the test suite, you need to either:
|
||||
|
||||
1) set LLVM_MAIN_SRC_DIR explicitly (to find lit.py)
|
||||
2) change AddLLVM.cmake to point to an installed 'lit'.
|
||||
3) add_subdirectory(compiler-rt/test) from clang instead of compiler-rt.
|
||||
|
||||
https://us.codeaurora.org/patches/quic/llvm/50683/compiler-rt-cross-compilation.patch
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Greg Fitzgerald <gregf@codeaurora.org>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
compiler-rt/CMakeLists.txt | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
|
||||
index a92258ae1244..98c4e9a681d5 100644
|
||||
--- a/compiler-rt/CMakeLists.txt
|
||||
+++ b/compiler-rt/CMakeLists.txt
|
||||
@@ -109,7 +109,16 @@ if (COMPILER_RT_STANDALONE_BUILD)
|
||||
set(CMAKE_CXX_EXTENSIONS NO)
|
||||
|
||||
if (NOT LLVM_RUNTIMES_BUILD)
|
||||
- load_llvm_config()
|
||||
+ find_package(LLVM REQUIRED)
|
||||
+ list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
|
||||
+
|
||||
+ # Variables that AddLLVM.cmake depends on (included by AddCompilerRT)
|
||||
+ set(LLVM_TOOLS_BINARY_DIR "${LLVM_INSTALL_PREFIX}/bin")
|
||||
+ set(LLVM_LIBRARY_DIR "${LLVM_INSTALL_PREFIX}/lib")
|
||||
+
|
||||
+ set(LLVM_LIBRARY_OUTPUT_INTDIR
|
||||
+ ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
|
||||
+
|
||||
endif()
|
||||
if (TARGET intrinsics_gen)
|
||||
# Loading the llvm config causes this target to be imported so place it
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
From d13464858866ff3c0026294d6842f74a11a0d625 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kelly <mkelly@xevo.com>
|
||||
Date: Fri, 19 May 2017 00:22:57 -0700
|
||||
Subject: [PATCH] llvm: allow env override of exe and libdir path
|
||||
|
||||
When using a native llvm-config from inside a sysroot, we need llvm-config to
|
||||
return the libraries, include directories, etc. from inside the sysroot rather
|
||||
than from the native sysroot. Thus provide an env override for calling
|
||||
llvm-config from a target sysroot.
|
||||
|
||||
Add YOCTO_ALTERNATE_LIBDIR and YOCTO_ALTERNATE_EXE_PATH env variables
|
||||
|
||||
Upstream-Status: Inappropriate [OE-specific]
|
||||
|
||||
Signed-off-by: Martin Kelly <mkelly@xevo.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
llvm/tools/llvm-config/llvm-config.cpp | 25 +++++++++++++++++++------
|
||||
1 file changed, 19 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
|
||||
index 24ea264419af..0a3f51ae2b83 100644
|
||||
--- a/llvm/tools/llvm-config/llvm-config.cpp
|
||||
+++ b/llvm/tools/llvm-config/llvm-config.cpp
|
||||
@@ -248,6 +248,13 @@ Typical components:\n\
|
||||
|
||||
/// Compute the path to the main executable.
|
||||
static std::string getExecutablePath(const char *Argv0) {
|
||||
+ // Hack for Yocto: we need to override the root path when we are using
|
||||
+ // llvm-config from within a target sysroot.
|
||||
+ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH");
|
||||
+ if (Sysroot != nullptr) {
|
||||
+ return Sysroot;
|
||||
+ }
|
||||
+
|
||||
// This just needs to be some symbol in the binary; C++ doesn't
|
||||
// allow taking the address of ::main however.
|
||||
void *P = (void *)(intptr_t)getExecutablePath;
|
||||
@@ -326,7 +333,7 @@ int main(int argc, char **argv) {
|
||||
// Compute various directory locations based on the derived location
|
||||
// information.
|
||||
std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir,
|
||||
- ActiveCMakeDir;
|
||||
+ ActiveCMakeDir, BaseLibDir;
|
||||
std::vector<std::string> ActiveIncludeOptions;
|
||||
if (IsInDevelopmentTree) {
|
||||
ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
|
||||
@@ -367,12 +374,18 @@ int main(int argc, char **argv) {
|
||||
sys::path::make_absolute(ActivePrefix, Path);
|
||||
ActiveBinDir = std::string(Path);
|
||||
}
|
||||
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
|
||||
- {
|
||||
- SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);
|
||||
- sys::path::make_absolute(ActivePrefix, Path);
|
||||
- ActiveCMakeDir = std::string(Path);
|
||||
+ // Hack for Yocto: we need to override the lib path when we are using
|
||||
+ // llvm-config from within a target sysroot since LLVM_LIBDIR_SUFFIX
|
||||
+ // maybe different for host llvm vs target e.g. ppc64 Libdir=lib64 but
|
||||
+ // x86_64 Libdir = lib
|
||||
+ const char *YoctoLibDir = std::getenv("YOCTO_ALTERNATE_LIBDIR");
|
||||
+ if (YoctoLibDir != nullptr) {
|
||||
+ BaseLibDir = std::string(YoctoLibDir);
|
||||
+ } else {
|
||||
+ BaseLibDir = std::string("/lib") + LLVM_LIBDIR_SUFFIX;
|
||||
}
|
||||
+ ActiveLibDir = ActivePrefix + BaseLibDir;
|
||||
+ ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
|
||||
ActiveIncludeOptions.push_back(ActiveIncludeDir);
|
||||
}
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
From 7a12ad3232dd6881ca40d94277ca8064a12d9df6 Mon Sep 17 00:00:00 2001
|
||||
From: Dan McGregor <dan.mcgregor@usask.ca>
|
||||
Date: Wed, 26 Apr 2017 20:29:41 -0600
|
||||
Subject: [PATCH] clang: driver: Check sysroot for ldso path
|
||||
|
||||
when we build multilib the ldso has different paths than clangs defaults,
|
||||
every distro kind of does that so OE is not the only one,
|
||||
it happens especially on ppc64, where OE does not necessarily follow the
|
||||
default path for the dynamic linker, therefore adjust it for OE. Check
|
||||
for the default path, and if it isn't there, check /lib.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 22 +++++++++++++++++++++-
|
||||
1 file changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index d525b417b4ea..1c31901ade74 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -630,8 +630,12 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
Triple.getEnvironment() == llvm::Triple::GNUEABIHFT64 ||
|
||||
tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
|
||||
|
||||
- LibDir = "lib";
|
||||
Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
|
||||
+ LibDir = "lib32";
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ LibDir = "lib";
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
case llvm::Triple::loongarch32: {
|
||||
@@ -685,11 +689,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
LibDir = "lib64";
|
||||
Loader =
|
||||
(tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ LibDir = "lib";
|
||||
+ }
|
||||
break;
|
||||
case llvm::Triple::ppc64le:
|
||||
LibDir = "lib64";
|
||||
Loader =
|
||||
(tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ LibDir = "lib";
|
||||
+ }
|
||||
break;
|
||||
case llvm::Triple::riscv32:
|
||||
case llvm::Triple::riscv64: {
|
||||
@@ -707,6 +719,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
case llvm::Triple::sparcv9:
|
||||
LibDir = "lib64";
|
||||
Loader = "ld-linux.so.2";
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ LibDir = "lib";
|
||||
+ }
|
||||
break;
|
||||
case llvm::Triple::systemz:
|
||||
LibDir = "lib";
|
||||
@@ -721,6 +737,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
|
||||
LibDir = X32 ? "libx32" : "lib64";
|
||||
Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ LibDir = "lib";
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
case llvm::Triple::ve:
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
From 19b8ca2e1aa536e7d7f7eb379fc4e4d6f1efd07a Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 19 May 2016 21:11:06 -0700
|
||||
Subject: [PATCH] clang: Driver/tools.cpp: Add -lssp_nonshared on musl
|
||||
|
||||
musl driver will need to add ssp_nonshared for stack_check_local
|
||||
on the linker cmdline when using stack protector commands on
|
||||
compiler cmdline
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index cb6a9b242421..8f126474b7d1 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -539,6 +539,12 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
if (IsIAMCU)
|
||||
CmdArgs.push_back("-lgloss");
|
||||
|
||||
+ if (ToolChain.getTriple().isMusl() &&
|
||||
+ (Args.hasArg(options::OPT_fstack_protector) ||
|
||||
+ Args.hasArg(options::OPT_fstack_protector_strong) ||
|
||||
+ Args.hasArg(options::OPT_fstack_protector_all))) {
|
||||
+ CmdArgs.push_back("-lssp_nonshared");
|
||||
+ }
|
||||
if (IsStatic || IsStaticPIE)
|
||||
CmdArgs.push_back("--end-group");
|
||||
else
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
From 1746960b385afbc9e8e355a3b7c66b43c946451b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 16 Mar 2017 09:02:13 -0700
|
||||
Subject: [PATCH] clang: Prepend trailing '/' to sysroot
|
||||
|
||||
This is needed to handle a case where clang
|
||||
isntall and target sysroot are perilously same
|
||||
|
||||
e.g.
|
||||
|
||||
sysroot = /mnt/clang/recipe-sysroot
|
||||
clang install = /mnt/clang/recipe-sysroot-native
|
||||
|
||||
in this case it will mistakenly assume that
|
||||
clang is installed under the same sysroot dir
|
||||
and it will try to add relative ../lib paths
|
||||
to linker steps which would then be wrong
|
||||
since they will become relative to clang
|
||||
installation and not sysroot
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index 1c31901ade74..f7f096c1ac0a 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -235,7 +235,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
|
||||
Multilibs = GCCInstallation.getMultilibs();
|
||||
SelectedMultilibs.assign({GCCInstallation.getMultilib()});
|
||||
llvm::Triple::ArchType Arch = Triple.getArch();
|
||||
- std::string SysRoot = computeSysRoot();
|
||||
+ std::string SysRoot = computeSysRoot() + "/";
|
||||
ToolChain::path_list &PPaths = getProgramPaths();
|
||||
|
||||
Generic_GCC::PushPPaths(PPaths);
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
From bfba4232621e151cfc5dcb16ce5bf661f8c3d8f8 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 20 Mar 2021 16:09:16 -0700
|
||||
Subject: [PATCH] clang: Define / releative gcc installation dir
|
||||
|
||||
This is required for OE gcc installation to work.
|
||||
Without this its not able to find the paths for libgcc
|
||||
and other standard headers and libraries from gcc
|
||||
installation in OE
|
||||
|
||||
* Do not use install relative libc++ headers
|
||||
In OE we use same clang for native and cross builds, therefore we need
|
||||
to ensure that native sysroot install of libc++ is not searched for
|
||||
headers when doing cross compile instead it searches the target sysroot
|
||||
this is especially troublesome when libcxx-native is staged along with
|
||||
libcxx e.g. chromium
|
||||
|
||||
* Fix lib paths for OpenEmbedded Host
|
||||
|
||||
Under OpenEmbedded Host, while building with clang-native, it cannot find
|
||||
the GCCInstallPath, which causing following error:
|
||||
[snip]
|
||||
compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/clang
|
||||
-target x86_64-linux
|
||||
-isystem/path/to/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/include
|
||||
-O2 -pipe
|
||||
/path/to/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/share/cmake-3.21/Modules/CMakeCCompilerABI.c`
|
||||
hosttools/ld: cannot find crtbeginS.o: No such file or directory
|
||||
[snip]
|
||||
|
||||
Before this patch:
|
||||
compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/clang
|
||||
clang version 13.0.1 (https://github.com/llvm/llvm-project 08e3a5ccd952edee36b3c002e3a29c6b1b5153de)
|
||||
Target: x86_64-unknown-linux-gnu
|
||||
Thread model: posix
|
||||
InstalledDir: /build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin
|
||||
Found candidate GCC installation: /usr/lib/gcc/x86_64-wrs-linux/10.2.0
|
||||
|
||||
After this patch:
|
||||
compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/clang
|
||||
clang version 13.0.1 (https://github.com/llvm/llvm-project 08e3a5ccd952edee36b3c002e3a29c6b1b5153de)
|
||||
Thread model: posix
|
||||
InstalledDir: /build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin
|
||||
Found candidate GCC installation: /usr/lib/gcc/x86_64-wrs-linux/10.2.0
|
||||
Found candidate GCC installation: /usr/lib/x86_64-wrs-linux/10.2.0
|
||||
Selected GCC installation: /usr/lib/x86_64-wrs-linux/10.2.0
|
||||
Candidate multilib: .;@m64
|
||||
Selected multilib: .;@m64
|
||||
|
||||
For OpenEmbedded Host, sysroots are of the form<sysroot>/usr/lib/<triple>/x.y.z.
|
||||
Take x86-64 as example, the default triple is x86_64-unknown-linux-gnu.
|
||||
For clang-native, the target vendor is '-unknown', need to test current distro
|
||||
to follow above form.
|
||||
|
||||
Upstream-Status: Inappropriate [oe specific]
|
||||
|
||||
Signed-off-by: Changqing Li <changqing.li@windriver.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 22 ++++++++++++++--------
|
||||
1 file changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index 8f126474b7d1..c80980a7fb09 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "clang/Config/config.h" // for GCC_INSTALL_PREFIX
|
||||
#include "clang/Driver/CommonArgs.h"
|
||||
#include "clang/Driver/Compilation.h"
|
||||
+#include "clang/Driver/Distro.h"
|
||||
#include "clang/Driver/Driver.h"
|
||||
#include "clang/Driver/MultilibBuilder.h"
|
||||
#include "clang/Driver/Tool.h"
|
||||
@@ -2847,6 +2848,7 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
|
||||
const llvm::Triple &TargetTriple, const ArgList &Args,
|
||||
const std::string &LibDir, StringRef CandidateTriple,
|
||||
bool NeedsBiarchSuffix, bool GCCDirExists, bool GCCCrossDirExists) {
|
||||
+ Distro Distro(D.getVFS(), TargetTriple);
|
||||
// Locations relative to the system lib directory where GCC's triple-specific
|
||||
// directories might reside.
|
||||
struct GCCLibSuffix {
|
||||
@@ -2858,19 +2860,20 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
|
||||
// Whether this library suffix is relevant for the triple.
|
||||
bool Active;
|
||||
} Suffixes[] = {
|
||||
- // This is the normal place.
|
||||
- {"gcc/" + CandidateTriple.str(), "../..", GCCDirExists},
|
||||
-
|
||||
- // Debian puts cross-compilers in gcc-cross.
|
||||
- {"gcc-cross/" + CandidateTriple.str(), "../..", GCCCrossDirExists},
|
||||
-
|
||||
// The Freescale PPC SDK has the gcc libraries in
|
||||
// <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well. Only do
|
||||
// this on Freescale triples, though, since some systems put a *lot* of
|
||||
// files in that location, not just GCC installation data.
|
||||
{CandidateTriple.str(), "..",
|
||||
TargetTriple.getVendor() == llvm::Triple::Freescale ||
|
||||
- TargetTriple.getVendor() == llvm::Triple::OpenEmbedded}};
|
||||
+ TargetTriple.getVendor() == llvm::Triple::OpenEmbedded ||
|
||||
+ Distro.IsOpenEmbedded()},
|
||||
+
|
||||
+ // This is the normal place.
|
||||
+ {"gcc/" + CandidateTriple.str(), "../..", GCCDirExists},
|
||||
+
|
||||
+ // Debian puts cross-compilers in gcc-cross.
|
||||
+ {"gcc-cross/" + CandidateTriple.str(), "../..", GCCCrossDirExists}};
|
||||
|
||||
SmallVector<GCCInstallCandidate, 3> Installations;
|
||||
for (auto &Suffix : Suffixes) {
|
||||
@@ -3273,8 +3276,11 @@ Generic_GCC::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
|
||||
// incompatible with the NDK libraries.
|
||||
SmallString<128> DriverIncludeDir(getDriver().Dir);
|
||||
llvm::sys::path::append(DriverIncludeDir, "..", "include");
|
||||
+
|
||||
+ // do not add it when --sysroot is specified, since it would expect
|
||||
+ // libc++ headers from sysroot and not relative to compiler install location
|
||||
if (AddIncludePath(DriverIncludeDir,
|
||||
- /*TargetDirRequired=*/getTriple().isAndroid()))
|
||||
+ /*TargetDirRequired=*/getTriple().isAndroid() | !computeSysRoot().empty()))
|
||||
return;
|
||||
// If this is a development, non-installed, clang, libcxx will
|
||||
// not be found at ../include/c++ but it likely to be found at
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From 03875620d0172a7c07e3cdc607a6877b06a130e9 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 31 Jul 2019 22:51:39 -0700
|
||||
Subject: [PATCH] clang: Add -lpthread and -ldl along with -lunwind for static
|
||||
linking
|
||||
|
||||
When doing static liking with --unwindlib=libunwind -static we encounter
|
||||
undefined symbols
|
||||
libunwind/src/RWMutex.hpp:68: undefined reference to `pthread_rwlock_wrlock'
|
||||
|
||||
and
|
||||
|
||||
libunwind/src/AddressSpace.hpp:597: undefined reference to `dladdr'
|
||||
|
||||
therefore we need to link in libpthread and libdl to fill these symbols
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/CommonArgs.cpp | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
index 10a1a412eea0..a217897610c3 100644
|
||||
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
|
||||
@@ -2415,6 +2415,8 @@ static void AddUnwindLibrary(const ToolChain &TC, const Driver &D,
|
||||
CmdArgs.push_back("-lunwind");
|
||||
} else if (LGT == LibGccType::StaticLibGcc) {
|
||||
CmdArgs.push_back("-l:libunwind.a");
|
||||
+ CmdArgs.push_back("-lpthread");
|
||||
+ CmdArgs.push_back("-ldl");
|
||||
} else if (LGT == LibGccType::SharedLibGcc) {
|
||||
if (TC.getTriple().isOSCygMing())
|
||||
CmdArgs.push_back("-l:libunwind.dll.a");
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
From ea4326b11976e48dde6d99605ac24df048cd3b10 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 18 Nov 2019 17:00:29 -0800
|
||||
Subject: [PATCH] Check for atomic<double> intrinsics
|
||||
|
||||
On some architectures e.g. x86/32bit gcc decides to inline calls to
|
||||
double atomic variables but clang does not and defers it to libatomic
|
||||
therefore detect if clang can use built-ins for atomic<double> if not
|
||||
then link libatomic, this helps building clangd for x86 on linux systems
|
||||
with gcc runtime
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
llvm/cmake/modules/CheckAtomic.cmake | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/llvm/cmake/modules/CheckAtomic.cmake b/llvm/cmake/modules/CheckAtomic.cmake
|
||||
index f11cadf39ff6..80a18a92956a 100644
|
||||
--- a/llvm/cmake/modules/CheckAtomic.cmake
|
||||
+++ b/llvm/cmake/modules/CheckAtomic.cmake
|
||||
@@ -30,10 +30,11 @@ function(check_working_cxx_atomics64 varname)
|
||||
#include <atomic>
|
||||
#include <cstdint>
|
||||
std::atomic<uint64_t> x (0);
|
||||
+std::atomic<double> y (0);
|
||||
int main() {
|
||||
uint64_t i = x.load(std::memory_order_relaxed);
|
||||
(void)i;
|
||||
- return 0;
|
||||
+ return int(y);
|
||||
}
|
||||
" ${varname})
|
||||
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
From dc281691e778a61cc14bca4eb187792d2ffb384c Mon Sep 17 00:00:00 2001
|
||||
From: Ovidiu Panait <ovidiu.panait@windriver.com>
|
||||
Date: Fri, 31 Jan 2020 10:56:11 +0200
|
||||
Subject: [PATCH] cmake: Fix configure for packages using find_package()
|
||||
|
||||
Currently, when a package (i.e. bcc [https://github.com/iovisor/bcc.git])
|
||||
that depends on LLVM/Clang tries to run cmake find_package() during
|
||||
do_configure, it will fail with a similar error:
|
||||
|
||||
| The imported target "llvm-tblgen" references the file
|
||||
| ".../recipe-sysroot/usr/bin/llvm-tblgen"
|
||||
|
|
||||
| but this file does not exist. Possible reasons include:
|
||||
| * The file was deleted, renamed, or moved to another location.
|
||||
| * An install or uninstall procedure did not complete successfully.
|
||||
| * The installation package was faulty and contained
|
||||
| ".../recipe-sysroot/usr/lib/cmake/LLVMExports.cmake"
|
||||
| but not all the files it references.
|
||||
|
||||
This is due to the fact that currently the cmake scripts look for target
|
||||
binaries in sysroot. Work around this by not exporting the target binaries in
|
||||
Exports-* cmake files.
|
||||
|
||||
Upstream-Status: Inappropriate [oe-specific]
|
||||
|
||||
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
|
||||
---
|
||||
clang/cmake/modules/AddClang.cmake | 2 --
|
||||
llvm/cmake/modules/AddLLVM.cmake | 9 ++-------
|
||||
llvm/cmake/modules/TableGen.cmake | 6 ------
|
||||
3 files changed, 2 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
|
||||
index 4059fc3e986c..44d43aa8f25b 100644
|
||||
--- a/clang/cmake/modules/AddClang.cmake
|
||||
+++ b/clang/cmake/modules/AddClang.cmake
|
||||
@@ -182,7 +182,6 @@ macro(add_clang_tool name)
|
||||
if (CLANG_BUILD_TOOLS)
|
||||
get_target_export_arg(${name} Clang export_to_clangtargets)
|
||||
install(TARGETS ${name}
|
||||
- ${export_to_clangtargets}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
COMPONENT ${name})
|
||||
|
||||
@@ -195,7 +194,6 @@ macro(add_clang_tool name)
|
||||
DEPENDS ${name}
|
||||
COMPONENT ${name})
|
||||
endif()
|
||||
- set_property(GLOBAL APPEND PROPERTY CLANG_EXPORTS ${name})
|
||||
endif()
|
||||
endif()
|
||||
set_target_properties(${name} PROPERTIES XCODE_GENERATE_SCHEME ON)
|
||||
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
|
||||
index d938214f9d0d..4816f2127e14 100644
|
||||
--- a/llvm/cmake/modules/AddLLVM.cmake
|
||||
+++ b/llvm/cmake/modules/AddLLVM.cmake
|
||||
@@ -1485,7 +1485,6 @@ macro(llvm_add_tool project name)
|
||||
if( LLVM_BUILD_TOOLS )
|
||||
get_target_export_arg(${name} ${project} export_to_llvmexports)
|
||||
install(TARGETS ${name}
|
||||
- ${export_to_llvmexports}
|
||||
RUNTIME DESTINATION ${${project}_TOOLS_INSTALL_DIR}
|
||||
COMPONENT ${name})
|
||||
if (LLVM_ENABLE_PDB)
|
||||
@@ -1501,10 +1500,8 @@ macro(llvm_add_tool project name)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
- if( LLVM_BUILD_TOOLS )
|
||||
- string(TOUPPER "${project}" project_upper)
|
||||
- set_property(GLOBAL APPEND PROPERTY ${project_upper}_EXPORTS ${name})
|
||||
- endif()
|
||||
+ string(TOUPPER "${project}" project_upper)
|
||||
+ set_target_properties(${name} PROPERTIES FOLDER "Tools")
|
||||
endif()
|
||||
get_subproject_title(subproject_title)
|
||||
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Tools")
|
||||
@@ -1559,7 +1556,6 @@ macro(add_llvm_utility name)
|
||||
if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
|
||||
get_target_export_arg(${name} LLVM export_to_llvmexports)
|
||||
install(TARGETS ${name}
|
||||
- ${export_to_llvmexports}
|
||||
RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR}
|
||||
COMPONENT ${name})
|
||||
if (LLVM_ENABLE_PDB)
|
||||
@@ -1573,7 +1569,6 @@ macro(add_llvm_utility name)
|
||||
DEPENDS ${name}
|
||||
COMPONENT ${name})
|
||||
endif()
|
||||
- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
|
||||
elseif(LLVM_BUILD_UTILS)
|
||||
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
|
||||
endif()
|
||||
diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake
|
||||
index 84c03cd6432e..72da60ce3ca1 100644
|
||||
--- a/llvm/cmake/modules/TableGen.cmake
|
||||
+++ b/llvm/cmake/modules/TableGen.cmake
|
||||
@@ -237,12 +237,7 @@ macro(add_tablegen target project)
|
||||
|
||||
if (ADD_TABLEGEN_DESTINATION AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY AND
|
||||
(LLVM_BUILD_UTILS OR ${target} IN_LIST LLVM_DISTRIBUTION_COMPONENTS))
|
||||
- set(export_arg)
|
||||
- if(ADD_TABLEGEN_EXPORT)
|
||||
- get_target_export_arg(${target} ${ADD_TABLEGEN_EXPORT} export_arg)
|
||||
- endif()
|
||||
install(TARGETS ${target}
|
||||
- ${export_arg}
|
||||
COMPONENT ${target}
|
||||
RUNTIME DESTINATION "${ADD_TABLEGEN_DESTINATION}")
|
||||
if(NOT LLVM_ENABLE_IDE)
|
||||
@@ -253,7 +248,6 @@ macro(add_tablegen target project)
|
||||
endif()
|
||||
if(ADD_TABLEGEN_EXPORT)
|
||||
string(TOUPPER ${ADD_TABLEGEN_EXPORT} export_upper)
|
||||
- set_property(GLOBAL APPEND PROPERTY ${export_upper}_EXPORTS ${target})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
From 248a51bece02c199d0f84d14fa7e2e2379c592a0 Mon Sep 17 00:00:00 2001
|
||||
From: Jim Broadus <jbroadus@xevo.com>
|
||||
Date: Thu, 26 Mar 2020 16:05:53 -0700
|
||||
Subject: [PATCH] clang: Fix resource dir location for cross toolchains
|
||||
|
||||
When clang looks for the resources directory, it does so based on the binary
|
||||
location and assumes that the containing directory is a sibling to lib. The
|
||||
Yocto cross.bbclass defines the default bindir as
|
||||
${exec_prefix}/bin/${CROSS_TARGET_SYS_DIR}. ex: /usr/bin/aarch64-poky-linux/.
|
||||
This causes clang to form a path that looks like /usr/bin/lib/clang/...
|
||||
|
||||
As a fix for this, check the parent directory name. If that is "bin", then
|
||||
use that directory's parent.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Jim Broadus <jbroadus@xevo.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Options/OptionUtils.cpp | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/lib/Options/OptionUtils.cpp b/clang/lib/Options/OptionUtils.cpp
|
||||
index e5aefa012f67..7c1b657ce2c1 100644
|
||||
--- a/clang/lib/Options/OptionUtils.cpp
|
||||
+++ b/clang/lib/Options/OptionUtils.cpp
|
||||
@@ -213,6 +213,7 @@ std::string clang::GetResourcesPath(StringRef BinaryPath) {
|
||||
|
||||
// Dir is bin/ or lib/, depending on where BinaryPath is.
|
||||
StringRef Dir = llvm::sys::path::parent_path(BinaryPath);
|
||||
+ StringRef LastDirName = llvm::sys::path::filename(Dir);
|
||||
SmallString<128> P(Dir);
|
||||
|
||||
StringRef ConfiguredResourceDir(CLANG_RESOURCE_DIR);
|
||||
@@ -229,9 +230,15 @@ std::string clang::GetResourcesPath(StringRef BinaryPath) {
|
||||
// With a static-library build of libclang, LibClangPath will contain the
|
||||
// path of the embedding binary, which for LLVM binaries will be in bin/.
|
||||
// ../lib gets us to lib/ in both cases.
|
||||
- P = llvm::sys::path::parent_path(Dir);
|
||||
// This search path is also created in the COFF driver of lld, so any
|
||||
// changes here also needs to happen in lld/COFF/Driver.cpp
|
||||
+
|
||||
+ // OE cross toolchains are installed, by default, in a subdir of bin.
|
||||
+ if (LastDirName == "bin") {
|
||||
+ P = llvm::sys::path::parent_path(Dir);
|
||||
+ } else {
|
||||
+ P = llvm::sys::path::parent_path(llvm::sys::path::parent_path(Dir));
|
||||
+ }
|
||||
llvm::sys::path::append(P, CLANG_INSTALL_LIBDIR_BASENAME, "clang",
|
||||
CLANG_VERSION_MAJOR_STRING);
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
From b3eea8bcdb792a7b19b879c76eac64f36d1fe012 Mon Sep 17 00:00:00 2001
|
||||
From: Oleksandr Ocheretnyi <oocheret@cisco.com>
|
||||
Date: Wed, 15 Apr 2020 00:08:39 +0300
|
||||
Subject: [PATCH] clang: driver: Add dyld-prefix when checking sysroot for ldso
|
||||
path
|
||||
|
||||
* the dyld-prefix shall be taken into account when the default
|
||||
path for the dynamic linker has to be checked.
|
||||
|
||||
* this patch shall be used as annex to the next patch:
|
||||
'clang: driver: Check sysroot for ldso path' which includes
|
||||
the usrmerge scenario.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index f7f096c1ac0a..7b608a84a66e 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -632,8 +632,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
|
||||
Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
|
||||
LibDir = "lib32";
|
||||
- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
|
||||
LibDir = "lib";
|
||||
}
|
||||
break;
|
||||
@@ -689,8 +689,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
LibDir = "lib64";
|
||||
Loader =
|
||||
(tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
|
||||
- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
|
||||
LibDir = "lib";
|
||||
}
|
||||
break;
|
||||
@@ -698,8 +698,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
LibDir = "lib64";
|
||||
Loader =
|
||||
(tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
|
||||
- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
|
||||
LibDir = "lib";
|
||||
}
|
||||
break;
|
||||
@@ -719,8 +719,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
case llvm::Triple::sparcv9:
|
||||
LibDir = "lib64";
|
||||
Loader = "ld-linux.so.2";
|
||||
- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
|
||||
LibDir = "lib";
|
||||
}
|
||||
break;
|
||||
@@ -737,8 +737,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
|
||||
|
||||
LibDir = X32 ? "libx32" : "lib64";
|
||||
Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
|
||||
- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
|
||||
- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
|
||||
+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
|
||||
+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
|
||||
LibDir = "lib";
|
||||
}
|
||||
break;
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From 17e1af5e12a01296d2c032a768569d4d8b06505b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 14 Oct 2020 22:19:57 -0700
|
||||
Subject: [PATCH] clang: Use python3 in python scripts
|
||||
|
||||
Some scripts ask for python, but they work fine with python3
|
||||
and in OE python symlink is not exposed to build, only python3 is
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
.../find-all-symbols/tool/run-find-all-symbols.py | 2 +-
|
||||
clang/tools/scan-view/bin/scan-view | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py b/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
|
||||
index 49a1b1493264..6158876d15f7 100755
|
||||
--- a/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
|
||||
+++ b/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/env python3
|
||||
#
|
||||
# =- run-find-all-symbols.py - Parallel find-all-symbols runner -*- python -*-=#
|
||||
#
|
||||
diff --git a/clang/tools/scan-view/bin/scan-view b/clang/tools/scan-view/bin/scan-view
|
||||
index d01aebb4029a..f3375804654d 100755
|
||||
--- a/clang/tools/scan-view/bin/scan-view
|
||||
+++ b/clang/tools/scan-view/bin/scan-view
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
From 259d8eb2ed82c9248387a3cbb1befee358ecbb8e Mon Sep 17 00:00:00 2001
|
||||
From: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
Date: Mon, 25 Jan 2021 16:14:35 +0800
|
||||
Subject: [PATCH] llvm/clang: Insert anchor for adding OE distro vendor names
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This helps in making right detection for OE built gcc toolchains
|
||||
|
||||
The //CLANG_EXTRA_OE_VENDORS_CASES string is replaced with list of
|
||||
additional Ceses based on CLANG_EXTRA_OE_VENDORS variable in
|
||||
recipes-devtools/clang/llvm-project-source.inc:add_distro_vendor()
|
||||
|
||||
* For x86_64, set Yocto based GCC install search path
|
||||
|
||||
Under Yocto host, while using clang-native to build, it searches
|
||||
install host gcc failed which causing the include file not found
|
||||
[snip]
|
||||
|clang++ -target x86_64-linux -MMD -MF src/base/files/file_path_constants.o.d -I../../../tools/gn/src -I. \
|
||||
-isystem/tmp-glibc/work/x86_64-linux/gn-native/87.0.4280.141-r0/recipe-sysroot-native/usr/include -O2 -pipe \
|
||||
-std=c++17 -c ../../../tools/gn/src/base/files/file_path_constants.cc -o src/base/files/file_path_constants.o
|
||||
|../../../tools/gn/src/base/files/file_path_constants.cc:7:10: fatal error: 'iterator' file not found
|
||||
|#include <iterator>
|
||||
| ^~~~~~~~
|
||||
[snip]
|
||||
|
||||
* Set three Yocto based GCC triple: poky, oe-core and wind river
|
||||
|
||||
Before aplly the patch
|
||||
[snip]
|
||||
$ ../recipe-sysroot-native/usr/bin/clang++ -v
|
||||
clang version 11.0.1 (https://github.com/llvm/llvm-project 43ff75f2c3feef64f9d73328230d34dac8832a91)
|
||||
Target: x86_64-unknown-linux-gnu
|
||||
Thread model: posix
|
||||
InstalledDir:tmp-glibc/work/x86_64-linux/gn-native/87.0.4280.141-r0/chromium-87.0.4280.141/../recipe-sysroot-native/usr/bin
|
||||
[snip]
|
||||
|
||||
After this patch:
|
||||
[snip]
|
||||
$ ../recipe-sysroot-native/usr/bin/clang++ -v
|
||||
clang version 11.0.1 (https://github.com/llvm/llvm-project 22c3241ff9a6224261df48d0258957fd8acc3d64)
|
||||
Target: x86_64-unknown-linux-gnu
|
||||
Thread model: posix
|
||||
InstalledDir:tmp-glibc/work/x86_64-linux/gn-native/87.0.4280.141-r0/chromium-87.0.4280.141/../recipe-sysroot-native/usr/bin
|
||||
Found candidate GCC installation: /usr/lib//x86_64-wrs-linux/10.1.0
|
||||
Found candidate GCC installation: /usr/lib/gcc/x86_64-wrs-linux/10.1.0
|
||||
Selected GCC installation: /usr/lib//x86_64-wrs-linux/10.1.0
|
||||
Candidate multilib: .;@m64
|
||||
Selected multilib: .;@m64
|
||||
[snip]
|
||||
|
||||
BTW, it is hardly to insert a triple by the replacement of TARGET_SYS
|
||||
(=${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}), since TARGET_VENDOR
|
||||
is different between clang and clang-native
|
||||
|
||||
* The //CLANG_EXTRA_OE_VENDORS_TRIPLES string is replaced with list of
|
||||
additional triples based on CLANG_EXTRA_OE_VENDORS variable in
|
||||
recipes-devtools/clang/llvm-project-source.inc:add_distro_vendor()
|
||||
|
||||
* Correct library search path for OpenEmbedded Host
|
||||
|
||||
For OpenEmbedded Host, the gcc install path is
|
||||
/usr/lib/x86_64-[distroname]-linux/[gcc-version].
|
||||
So the library search path is not found with default triple
|
||||
'x86_64-linux-gnu' for x86_64. Causing following error:
|
||||
[snip]
|
||||
compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/clang
|
||||
-target x86_64-linux
|
||||
-isystem/path/to/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/include
|
||||
-O2 -pipe
|
||||
/path/to/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/share/cmake-3.21/Modules/CMakeCCompilerABI.c`
|
||||
| /build/tmp-glibc/hosttools/ld: cannot find -lgcc
|
||||
| /build/tmp-glibc/hosttools/ld: cannot find -lgcc
|
||||
| clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
|
||||
[snip]
|
||||
|
||||
before this patch:
|
||||
b59da142f2b0:$ /path/to/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/clang --print-search-dirs
|
||||
programs: =/build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin
|
||||
libraries: =/build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/lib/clang/13.0.1:/build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/../lib://lib://usr/lib
|
||||
|
||||
after this patch:
|
||||
b59da142f2b0:$ /path/to/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/clang --print-search-dirs
|
||||
programs: =/build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin
|
||||
libraries: =/build/tmp-glibc/work/x84_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/lib/clang/13.0.1:/usr/lib/x86_64-wrs-linux/10.2.0://lib/x86_64-wrs-linux://usr/lib/x86_64-wrs-linux:/build/tmp-glibc/work/x86_64-linux/compiler-rt-native/13.0.1-r0/recipe-sysroot-native/usr/bin/../lib://lib://usr/lib
|
||||
|
||||
[JM: add missing instance of Distro class in getMultiarchTriple(), at Linux.cpp]
|
||||
|
||||
Upstream-Status: Inappropriate [oe specific]
|
||||
|
||||
Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
|
||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
Signed-off-by: Changqing Li <changqing.li@windriver.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
|
||||
---
|
||||
clang/include/clang/Driver/Distro.h | 2 ++
|
||||
clang/lib/Driver/Distro.cpp | 1 +
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 1 +
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 2 ++
|
||||
llvm/lib/TargetParser/Triple.cpp | 2 +-
|
||||
5 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/include/clang/Driver/Distro.h b/clang/include/clang/Driver/Distro.h
|
||||
index 0e17b30eb..b449a62dc 100644
|
||||
--- a/clang/include/clang/Driver/Distro.h
|
||||
+++ b/clang/include/clang/Driver/Distro.h
|
||||
@@ -45,6 +45,7 @@ public:
|
||||
RHEL10,
|
||||
Fedora,
|
||||
Gentoo,
|
||||
+ //CLANG_EXTRA_OE_DISTRO_NAME
|
||||
OpenSUSE,
|
||||
UbuntuQuantal,
|
||||
UbuntuRaring,
|
||||
@@ -132,6 +133,7 @@ public:
|
||||
|
||||
bool IsGentoo() const { return DistroVal == Gentoo; }
|
||||
|
||||
+ //CLANG_EXTRA_OE_DISTRO_CHECK
|
||||
/// @}
|
||||
};
|
||||
|
||||
diff --git a/clang/lib/Driver/Distro.cpp b/clang/lib/Driver/Distro.cpp
|
||||
index df10458d0..61dc127a4 100644
|
||||
--- a/clang/lib/Driver/Distro.cpp
|
||||
+++ b/clang/lib/Driver/Distro.cpp
|
||||
@@ -43,6 +43,7 @@ static Distro::DistroType DetectOsRelease(llvm::vfs::FileSystem &VFS) {
|
||||
.Case("sles", Distro::OpenSUSE)
|
||||
.Case("opensuse", Distro::OpenSUSE)
|
||||
.Case("exherbo", Distro::Exherbo)
|
||||
+ //CLANG_EXTRA_OE_DISTRO_CASE
|
||||
.Default(Distro::UnknownDistro);
|
||||
return Version;
|
||||
}
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index c80980a7f..80fd8058b 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -2370,6 +2370,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
"x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
|
||||
"x86_64-redhat-linux", "x86_64-suse-linux",
|
||||
"x86_64-manbo-linux-gnu", "x86_64-slackware-linux",
|
||||
+ "x86_64-oe-linux",//CLANG_EXTRA_OE_VENDORS_TRIPLES
|
||||
"x86_64-unknown-linux", "x86_64-amazon-linux"};
|
||||
static const char *const X32Triples[] = {"x86_64-linux-gnux32",
|
||||
"x86_64-pc-linux-gnux32"};
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index 7b608a84a..585a86a2d 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -45,6 +45,7 @@ std::string Linux::getMultiarchTriple(const Driver &D,
|
||||
bool IsAndroid = TargetTriple.isAndroid();
|
||||
bool IsMipsR6 = TargetTriple.getSubArch() == llvm::Triple::MipsSubArch_r6;
|
||||
bool IsMipsN32Abi = TargetTriple.getEnvironment() == llvm::Triple::GNUABIN32;
|
||||
+ Distro Distro(D.getVFS(), TargetTriple);
|
||||
|
||||
// For most architectures, just use whatever we have rather than trying to be
|
||||
// clever.
|
||||
@@ -81,6 +82,7 @@ std::string Linux::getMultiarchTriple(const Driver &D,
|
||||
return "x86_64-linux-android";
|
||||
if (TargetEnvironment == llvm::Triple::GNUX32)
|
||||
return "x86_64-linux-gnux32";
|
||||
+ //CLANG_EXTRA_OE_DISTRO_TRIPLE
|
||||
return "x86_64-linux-gnu";
|
||||
case llvm::Triple::aarch64:
|
||||
if (IsAndroid)
|
||||
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
|
||||
index a4f9dd42c..86b74451e 100644
|
||||
--- a/llvm/lib/TargetParser/Triple.cpp
|
||||
+++ b/llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -702,7 +702,7 @@ static Triple::VendorType parseVendor(StringRef VendorName) {
|
||||
.Case("suse", Triple::SUSE)
|
||||
.Case("oe", Triple::OpenEmbedded)
|
||||
.Case("intel", Triple::Intel)
|
||||
- .Case("meta", Triple::Meta)
|
||||
+ .Case("meta", Triple::Meta) //CLANG_EXTRA_OE_VENDORS_CASES
|
||||
.Default(Triple::UnknownVendor);
|
||||
}
|
||||
|
||||
--
|
||||
2.39.5
|
||||
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
From bc8371eb77cca413ccb4ebf8239c597f7be40006 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 19 May 2021 17:32:13 -0700
|
||||
Subject: [PATCH] compiler-rt: Do not use backtrace APIs on non-glibc linux
|
||||
|
||||
musl e.g. does not provide backtrace APIs
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
.../lib/gwp_asan/optional/backtrace_linux_libc.cpp | 13 ++++++++++++-
|
||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/compiler-rt/lib/gwp_asan/optional/backtrace_linux_libc.cpp b/compiler-rt/lib/gwp_asan/optional/backtrace_linux_libc.cpp
|
||||
index ea8e72be287d..0344074dd254 100644
|
||||
--- a/compiler-rt/lib/gwp_asan/optional/backtrace_linux_libc.cpp
|
||||
+++ b/compiler-rt/lib/gwp_asan/optional/backtrace_linux_libc.cpp
|
||||
@@ -7,7 +7,9 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <assert.h>
|
||||
+#ifdef __GLIBC__
|
||||
#include <execinfo.h>
|
||||
+#endif
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
@@ -21,8 +23,11 @@
|
||||
namespace {
|
||||
size_t Backtrace(uintptr_t *TraceBuffer, size_t Size) {
|
||||
static_assert(sizeof(uintptr_t) == sizeof(void *), "uintptr_t is not void*");
|
||||
-
|
||||
+#ifdef __GLIBC__
|
||||
return backtrace(reinterpret_cast<void **>(TraceBuffer), Size);
|
||||
+#else
|
||||
+ return -1;
|
||||
+#endif
|
||||
}
|
||||
|
||||
// We don't need any custom handling for the Segv backtrace - the libc unwinder
|
||||
@@ -30,7 +35,11 @@ size_t Backtrace(uintptr_t *TraceBuffer, size_t Size) {
|
||||
// to avoid the additional frame.
|
||||
GWP_ASAN_ALWAYS_INLINE size_t SegvBacktrace(uintptr_t *TraceBuffer, size_t Size,
|
||||
void * /*Context*/) {
|
||||
+#ifdef __GLIBC__
|
||||
return Backtrace(TraceBuffer, Size);
|
||||
+#else
|
||||
+ return -1;
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void PrintBacktrace(uintptr_t *Trace, size_t TraceLength,
|
||||
@@ -40,6 +49,7 @@ static void PrintBacktrace(uintptr_t *Trace, size_t TraceLength,
|
||||
return;
|
||||
}
|
||||
|
||||
+#ifdef __GLIBC__
|
||||
char **BacktraceSymbols =
|
||||
backtrace_symbols(reinterpret_cast<void **>(Trace), TraceLength);
|
||||
|
||||
@@ -53,6 +63,7 @@ static void PrintBacktrace(uintptr_t *Trace, size_t TraceLength,
|
||||
Printf("\n");
|
||||
if (BacktraceSymbols)
|
||||
free(BacktraceSymbols);
|
||||
+#endif
|
||||
}
|
||||
} // anonymous namespace
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
From 6839ba1413cf09eb14a24eeda44fb02c1c6809e1 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 19 May 2021 17:56:03 -0700
|
||||
Subject: [PATCH] clang: Fix x86 triple for non-debian multiarch linux distros
|
||||
|
||||
OpenEmbedded does not hardcode mutli-arch like debian therefore ensure
|
||||
that it still uses the proper tuple
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index 4a0adedce09a..9fed904c05c2 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -227,8 +227,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
|
||||
: Generic_ELF(D, Triple, Args) {
|
||||
GCCInstallation.TripleToDebianMultiarch = [](const llvm::Triple &T) {
|
||||
StringRef TripleStr = T.str();
|
||||
+ // OpenEmbedded does not hardcode the triple to i386-linux-gnu like debian
|
||||
StringRef DebianMultiarch =
|
||||
- T.getArch() == llvm::Triple::x86 ? "i386-linux-gnu" : TripleStr;
|
||||
+ T.getArch() == llvm::Triple::x86 && T.getVendor() != llvm::Triple::OpenEmbedded ? "i386-linux-gnu" : TripleStr;
|
||||
return DebianMultiarch;
|
||||
};
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
From bf7c0933d65eb811c993ff32fdc6b65f6befc5af Mon Sep 17 00:00:00 2001
|
||||
From: Maksim Kita <maksim-kita@yandex-team.ru>
|
||||
Date: Sun, 23 May 2021 10:27:29 +0000
|
||||
Subject: [PATCH] libunwind: Added unw_backtrace method
|
||||
|
||||
Source: https://github.com/ClickHouse-Extras/libunwind/commit/52f0f7861926cbfaef7e6c97d8a6d7ba2a1f6747#diff-a82fc885e2e4facf4b92d26171c13aa4aa5db296f77e1158ba2f8664e3bd1f5c
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
libunwind/include/libunwind.h | 1 +
|
||||
libunwind/src/libunwind.cpp | 20 ++++++++++++++++++++
|
||||
2 files changed, 21 insertions(+)
|
||||
|
||||
diff --git a/libunwind/include/libunwind.h b/libunwind/include/libunwind.h
|
||||
index 56ca7110274a..60a27f28100b 100644
|
||||
--- a/libunwind/include/libunwind.h
|
||||
+++ b/libunwind/include/libunwind.h
|
||||
@@ -235,6 +235,7 @@ extern int unw_is_signal_frame(unw_cursor_t *) LIBUNWIND_AVAIL;
|
||||
extern int unw_get_proc_name(unw_cursor_t *, char *, size_t, unw_word_t *) LIBUNWIND_AVAIL;
|
||||
//extern int unw_get_save_loc(unw_cursor_t*, int, unw_save_loc_t*);
|
||||
extern const char *unw_strerror(int) LIBUNWIND_AVAIL;
|
||||
+extern int unw_backtrace(void **, int) LIBUNWIND_AVAIL;
|
||||
|
||||
extern unw_addr_space_t unw_local_addr_space;
|
||||
|
||||
diff --git a/libunwind/src/libunwind.cpp b/libunwind/src/libunwind.cpp
|
||||
index 7ffffc2a30c0..ed0b394cb002 100644
|
||||
--- a/libunwind/src/libunwind.cpp
|
||||
+++ b/libunwind/src/libunwind.cpp
|
||||
@@ -531,6 +531,26 @@ int __unw_remove_find_dynamic_unwind_sections(
|
||||
|
||||
#endif // __APPLE__
|
||||
|
||||
+int unw_backtrace(void **buffer, int size) {
|
||||
+ unw_context_t context;
|
||||
+ unw_cursor_t cursor;
|
||||
+ if (unw_getcontext(&context) || unw_init_local(&cursor, &context)) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ unw_word_t ip;
|
||||
+ int current = 0;
|
||||
+ while (unw_step(&cursor) > 0) {
|
||||
+ if (current >= size || unw_get_reg(&cursor, UNW_REG_IP, &ip)) {
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ buffer[current++] = reinterpret_cast<void *>(static_cast<uintptr_t>(ip));
|
||||
+ }
|
||||
+
|
||||
+ return current;
|
||||
+}
|
||||
+
|
||||
// Add logging hooks in Debug builds only
|
||||
#ifndef NDEBUG
|
||||
#include <stdlib.h>
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
From 94c6e940ddc44922ee505993549477a0fa7ac50d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 8 Feb 2022 01:31:26 -0800
|
||||
Subject: [PATCH] lldb: Link with libatomic on x86
|
||||
|
||||
cmake atomic check is not sufficient for i686 target where clang14 still
|
||||
generates __atomic_store calls but the check does not entail this
|
||||
function and happily thinks that compiler can resolve all atomic via intrinsics
|
||||
on i686, but thats not the case, ideally the check for determining
|
||||
atomic operation should be make more robust but until then lets ask to
|
||||
link with libatomic on i686/linux
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lldb/source/Utility/CMakeLists.txt | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/lldb/source/Utility/CMakeLists.txt b/lldb/source/Utility/CMakeLists.txt
|
||||
index 04f1692e53b3..da0a48d9da54 100644
|
||||
--- a/lldb/source/Utility/CMakeLists.txt
|
||||
+++ b/lldb/source/Utility/CMakeLists.txt
|
||||
@@ -19,6 +19,10 @@ if (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
list(APPEND LLDB_SYSTEM_LIBS ws2_32 rpcrt4)
|
||||
endif ()
|
||||
|
||||
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "i686" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
+ list(APPEND LLDB_SYSTEM_LIBS atomic)
|
||||
+endif()
|
||||
+
|
||||
if (NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB )
|
||||
list(APPEND LLDB_SYSTEM_LIBS atomic)
|
||||
endif()
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
From 968515d7aa2d7e4af5f318618c307dbe21538650 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 9 Mar 2022 16:28:16 -0800
|
||||
Subject: [PATCH] compiler-rt: Enable __int128 for ppc32
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
compiler-rt/lib/builtins/CMakeLists.txt | 13 ++++++-------
|
||||
compiler-rt/lib/builtins/int_types.h | 2 +-
|
||||
2 files changed, 7 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
|
||||
index c3dbd65998f1..b3a44ea3c3b3 100644
|
||||
--- a/compiler-rt/lib/builtins/CMakeLists.txt
|
||||
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
|
||||
@@ -813,11 +813,9 @@ set(mips64el_SOURCES ${GENERIC_TF_SOURCES}
|
||||
|
||||
set(nvptx64_SOURCES ${GENERIC_SOURCES})
|
||||
|
||||
-set(powerpc_SOURCES ${GENERIC_SOURCES})
|
||||
-
|
||||
set(powerpcspe_SOURCES ${GENERIC_SOURCES})
|
||||
|
||||
-set(powerpc64_SOURCES
|
||||
+set(powerpc_SOURCES
|
||||
ppc/divtc3.c
|
||||
ppc/fixtfdi.c
|
||||
ppc/fixunstfdi.c
|
||||
@@ -832,14 +830,15 @@ set(powerpc64_SOURCES
|
||||
)
|
||||
# These routines require __int128, which isn't supported on AIX.
|
||||
if (NOT OS_NAME MATCHES "AIX")
|
||||
- set(powerpc64_SOURCES
|
||||
+ set(powerpc_SOURCES
|
||||
ppc/floattitf.c
|
||||
ppc/fixtfti.c
|
||||
ppc/fixunstfti.c
|
||||
- ${powerpc64_SOURCES}
|
||||
+ ${powerpc_SOURCES}
|
||||
)
|
||||
endif()
|
||||
-set(powerpc64le_SOURCES ${powerpc64_SOURCES})
|
||||
+set(powerpc64le_SOURCES ${powerpc_SOURCES})
|
||||
+set(powerpc64_SOURCES ${powerpc_SOURCES})
|
||||
|
||||
set(riscv_SOURCES
|
||||
cpu_model/riscv.c
|
||||
@@ -1014,7 +1013,7 @@ else ()
|
||||
|
||||
# For RISCV32 and 32-bit SPARC, we must force enable int128 for compiling long
|
||||
# double routines.
|
||||
- if (COMPILER_RT_ENABLE_SOFTWARE_INT128 OR ("${arch}" MATCHES "riscv32|sparc$"
|
||||
+ if (COMPILER_RT_ENABLE_SOFTWARE_INT128 OR ("${arch}" MATCHES "riscv32|powerpc|sparc$"
|
||||
AND NOT CMAKE_COMPILER_IS_GNUCC))
|
||||
list(APPEND BUILTIN_CFLAGS_${arch} -fforce-enable-int128)
|
||||
endif()
|
||||
diff --git a/compiler-rt/lib/builtins/int_types.h b/compiler-rt/lib/builtins/int_types.h
|
||||
index 7c7f8cb64aa9..81386f1b99b0 100644
|
||||
--- a/compiler-rt/lib/builtins/int_types.h
|
||||
+++ b/compiler-rt/lib/builtins/int_types.h
|
||||
@@ -64,7 +64,7 @@ typedef union {
|
||||
} udwords;
|
||||
|
||||
#if defined(__LP64__) || defined(__wasm__) || defined(__mips64) || \
|
||||
- defined(__SIZEOF_INT128__) || defined(_WIN64)
|
||||
+ defined(__SIZEOF_INT128__) || defined(_WIN64) || defined(__powerpc__)
|
||||
#define CRT_HAS_128BIT
|
||||
#endif
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
From 8c5fc285de0051107aa9b7e2e269aa2667fd16f4 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 12 Aug 2022 11:50:57 -0700
|
||||
Subject: [PATCH] llvm: Do not use cmake infra to detect libzstd
|
||||
|
||||
OE's version is build using plain make not cmake as a result we do not
|
||||
have the cmake support files and this probing method can get this info
|
||||
from build host and force linking with libzstd from /usr/lib which is
|
||||
not what we want when cross building.
|
||||
|
||||
Fixes errors building llvm-config like
|
||||
/usr/lib/libzstd.so.1.5.2: error adding symbols: file in wrong
|
||||
format
|
||||
| clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
|
||||
| ninja: build stopped: subcommand failed.
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
llvm/lib/Support/CMakeLists.txt | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt
|
||||
index 099b0e55579b..8c35b8a31457 100644
|
||||
--- a/llvm/lib/Support/CMakeLists.txt
|
||||
+++ b/llvm/lib/Support/CMakeLists.txt
|
||||
@@ -22,7 +22,7 @@ if (HAS_WERROR_GLOBAL_CTORS)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
- list(APPEND imported_libs ZLIB::ZLIB)
|
||||
+ list(APPEND imported_libs z)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
@@ -34,7 +34,7 @@ if(LLVM_ENABLE_ZSTD)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
- list(APPEND imported_libs ${zstd_target})
|
||||
+ list(APPEND imported_libs zstd)
|
||||
endif()
|
||||
|
||||
if( WIN32 )
|
||||
@@ -351,7 +351,7 @@ if(LLVM_ENABLE_ZLIB)
|
||||
get_property(zlib_library TARGET ZLIB::ZLIB PROPERTY LOCATION)
|
||||
endif()
|
||||
get_library_name(${zlib_library} zlib_library)
|
||||
- set(llvm_system_libs ${llvm_system_libs} "${zlib_library}")
|
||||
+ set(llvm_system_libs ${llvm_system_libs} z)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
@@ -365,7 +365,7 @@ if(LLVM_ENABLE_ZSTD)
|
||||
endif()
|
||||
if (zstd_target STREQUAL zstd::libzstd_shared)
|
||||
get_library_name(${zstd_library} zstd_library)
|
||||
- set(llvm_system_libs ${llvm_system_libs} "${zstd_library}")
|
||||
+ set(llvm_system_libs ${llvm_system_libs} zstd)
|
||||
else()
|
||||
set(llvm_system_libs ${llvm_system_libs} "${zstd_STATIC_LIBRARY}")
|
||||
endif()
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
From 4a114f5fcd2ab8870b26ba3df4747fc066933f66 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 3 Jan 2023 18:44:34 -0800
|
||||
Subject: [PATCH] compiler-rt: Fix stat struct's size for O32 ABI
|
||||
|
||||
stat struct size differs on glibc based on ABI choices e.g. 64bit off_t
|
||||
and/or 64bit time_t will make this size different. Therefore separate
|
||||
out the O32 case out, makes it more readable.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
.../sanitizer_platform_limits_posix.h | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
index 05ebee49f2ab..89c4dcaf3e3d 100644
|
||||
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -100,6 +100,18 @@ const unsigned struct_kernel_stat64_sz = 104;
|
||||
const unsigned struct_kernel_stat_sz = 144;
|
||||
const unsigned struct_kernel_stat64_sz = 104;
|
||||
# elif defined(__mips__)
|
||||
+#if defined(__mips_o32) // O32 ABI
|
||||
+#if _TIME_BITS == 64
|
||||
+const unsigned struct_kernel_stat_sz = 112;
|
||||
+const unsigned struct_kernel_stat64_sz = 112;
|
||||
+#elif _FILE_OFFSET_BITS == 64
|
||||
+const unsigned struct_kernel_stat_sz = 160;
|
||||
+const unsigned struct_kernel_stat64_sz = 160;
|
||||
+#else
|
||||
+const unsigned struct_kernel_stat_sz = 144;
|
||||
+const unsigned struct_kernel_stat64_sz = 160;
|
||||
+#endif
|
||||
+#else //__mips_o32
|
||||
const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID
|
||||
? FIRST_32_SECOND_64(104, 128)
|
||||
# if defined(_ABIN32) && _MIPS_SIM == _ABIN32
|
||||
@@ -110,6 +122,7 @@ const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID
|
||||
: FIRST_32_SECOND_64(160, 216);
|
||||
# endif
|
||||
const unsigned struct_kernel_stat64_sz = 104;
|
||||
+#endif
|
||||
# elif defined(__s390__) && !defined(__s390x__)
|
||||
const unsigned struct_kernel_stat_sz = 64;
|
||||
const unsigned struct_kernel_stat64_sz = 104;
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
From 27e4b9755ddd3bec16a851cce0df48e909ae6438 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
Date: Thu, 31 Aug 2023 18:14:47 +0200
|
||||
Subject: [PATCH] ToolChains/Gnu.cpp: ARMLibDirs search also in lib32
|
||||
|
||||
* in some strange multilib configs we build lib32-image where
|
||||
32bit libs are in /usr/lib32 and 64bit in /usr/lib64 but in such
|
||||
setup the clang search for GCC candidate installation doesn't
|
||||
check lib32 directory in sysroot and fails to find the installation
|
||||
|
||||
X86LibDirs was already searching in lib32 for very long time:
|
||||
https://github.com/llvm/llvm-project/commit/621fed5f5a051a0333415aaed75b8f2ed2350dbd
|
||||
but ARMLibDirs didn't include it for some reason.
|
||||
|
||||
* if we don't add lib32 for arm in getOSLibDir(), then it will
|
||||
find -lgcc, crtbeginS.o, crtendS.o, but still fail to find
|
||||
-lgcc_s, -lc, Scrt1.o, crti.o, crtn.o
|
||||
|
||||
* fixes lib32-compiler-rt build failure:
|
||||
|
||||
-- Configuring incomplete, errors occurred!
|
||||
CMake Error at TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native/usr/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:67 (message):
|
||||
The C compiler
|
||||
|
||||
"TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/arm-oemllib32-linux-gnueabi-clang"
|
||||
|
||||
is not able to compile a simple test program.
|
||||
|
||||
It fails with the following output:
|
||||
|
||||
Change Dir: TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build/CMakeFiles/CMakeScratch/TryCompile-rWXyQZ
|
||||
|
||||
Run Build Command(s):ninja -v cmTC_84d18 && [1/2] TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/arm-oemllib32-linux-gnueabi-clang --target=arm-oemllib32-linux-gnueabi --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -target arm-oemllib32-linux-gnueabi -march=armv7ve -mthumb -mfpu=neon-vfpv4 -mfloat-abi=softfp -mlittle-endian --dyld-prefix=/usr -Qunused-arguments -funwind-tables -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -fPIE -MD -MT CMakeFiles/cmTC_84d18.dir/testCCompiler.c.o -MF CMakeFiles/cmTC_84d18.dir/testCCompiler.c.o.d -o CMakeFiles/cmTC_84d18.dir/testCCompiler.c.o -c TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build/CMakeFiles/CMakeScratch/TryCompile-rWXyQZ/testCCompiler.c
|
||||
[2/2] : && TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/arm-oemllib32-linux-gnueabi-clang --target=arm-oemllib32-linux-gnueabi --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -target arm-oemllib32-linux-gnueabi -march=armv7ve -mthumb -mfpu=neon-vfpv4 -mfloat-abi=softfp -mlittle-endian --dyld-prefix=/usr -Qunused-arguments -funwind-tables -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -target arm-oemllib32-linux-gnueabi -march=armv7ve -mthumb -mfpu=neon-vfpv4 -mfloat-abi=softfp -mlittle-endian --dyld-prefix=/usr -Qunused-arguments -funwind-tables -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -Wl,-z,relro,-z,now -unwindlib=libgcc -rtlib=libgcc -stdlib=libstdc++ -fuse-ld=lld -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -Wl,-z,relro,-z,now -unwindlib=libgcc -rtlib=libgcc -stdlib=libstdc++ -fuse-ld=lld CMakeFiles/cmTC_84d18.dir/testCCompiler.c.o -o cmTC_84d18 && :
|
||||
FAILED: cmTC_84d18
|
||||
: && TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/arm-oemllib32-linux-gnueabi-clang --target=arm-oemllib32-linux-gnueabi --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -target arm-oemllib32-linux-gnueabi -march=armv7ve -mthumb -mfpu=neon-vfpv4 -mfloat-abi=softfp -mlittle-endian --dyld-prefix=/usr -Qunused-arguments -funwind-tables -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -target arm-oemllib32-linux-gnueabi -march=armv7ve -mthumb -mfpu=neon-vfpv4 -mfloat-abi=softfp -mlittle-endian --dyld-prefix=/usr -Qunused-arguments -funwind-tables -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 --sysroot=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -Wl,-z,relro,-z,now -unwindlib=libgcc -rtlib=libgcc -stdlib=libstdc++ -fuse-ld=lld -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fmacro-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work-shared/llvm-project-source-16.0.6-r0/git=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/build=/usr/src/debug/lib32-compiler-rt/16.0.6-r0 -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fmacro-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/lib32-recipe-sysroot= -fdebug-prefix-map=TOPDIR/BUILD/work/raspberrypi4_64-oemllib32-linux-gnueabi/lib32-compiler-rt/16.0.6/recipe-sysroot-native= -Wl,-z,relro,-z,now -unwindlib=libgcc -rtlib=libgcc -stdlib=libstdc++ -fuse-ld=lld CMakeFiles/cmTC_84d18.dir/testCCompiler.c.o -o cmTC_84d18 && :
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: cannot open Scrt1.o: No such file or directory
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: cannot open crti.o: No such file or directory
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: cannot open crtbeginS.o: No such file or directory
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: unable to find library -lgcc
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: unable to find library -lgcc_s
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: unable to find library -lc
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: unable to find library -lgcc
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: unable to find library -lgcc_s
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: cannot open crtendS.o: No such file or directory
|
||||
arm-oemllib32-linux-gnueabi-ld.lld: error: cannot open crtn.o: No such file or directory
|
||||
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
|
||||
ninja: build stopped: subcommand failed.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 2 +-
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index 80fd8058bd98..37cb6cfdf2da 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -2346,7 +2346,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
static const char *const AArch64beLibDirs[] = {"/lib"};
|
||||
static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu"};
|
||||
|
||||
- static const char *const ARMLibDirs[] = {"/lib"};
|
||||
+ static const char *const ARMLibDirs[] = {"/lib", "/lib32"};
|
||||
static const char *const ARMTriples[] = {"arm-linux-gnueabi"};
|
||||
static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
|
||||
"armv7hl-redhat-linux-gnueabi",
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index 9fed904c05c2..5bb66c9faa1f 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -198,6 +198,7 @@ static StringRef getOSLibDir(const llvm::Triple &Triple, const ArgList &Args) {
|
||||
// reasoning about oslibdir spellings with the lib dir spellings in the
|
||||
// GCCInstallationDetector, but that is a more significant refactoring.
|
||||
if (Triple.getArch() == llvm::Triple::x86 || Triple.isPPC32() ||
|
||||
+ Triple.getArch() == llvm::Triple::arm || Triple.getArch() == llvm::Triple::thumb ||
|
||||
Triple.getArch() == llvm::Triple::sparc)
|
||||
return "lib32";
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
From 7023d17f81a472e72a5739e007b9e7148d105137 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 3 Feb 2024 16:47:10 -0800
|
||||
Subject: [PATCH] clang/llvm: Add OE specific ABI triple for N32 ABI
|
||||
|
||||
Its gnun32 when using OE
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChains/Gnu.cpp | 1 +
|
||||
clang/lib/Driver/ToolChains/Linux.cpp | 4 ++--
|
||||
llvm/lib/TargetParser/Triple.cpp | 4 +++-
|
||||
3 files changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
index 37cb6cfdf2da..bcd7d345c25a 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
|
||||
@@ -2415,6 +2415,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
|
||||
|
||||
static const char *const MIPSN32LibDirs[] = {"/lib32"};
|
||||
static const char *const MIPSN32Triples[] = {"mips64-linux-gnuabin32",
|
||||
+ "mips64-linux-gnun32",
|
||||
"mipsisa64r6-linux-gnuabin32"};
|
||||
static const char *const MIPSN32ELLibDirs[] = {"/lib32"};
|
||||
static const char *const MIPSN32ELTriples[] = {
|
||||
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
index 5bb66c9faa1f..c6d6e20dbc4d 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
|
||||
@@ -138,7 +138,7 @@ std::string Linux::getMultiarchTriple(const Driver &D,
|
||||
return IsMipsR6 ? "mipsisa32r6el-linux-gnu" : "mipsel-linux-gnu";
|
||||
case llvm::Triple::mips64: {
|
||||
std::string MT = std::string(IsMipsR6 ? "mipsisa64r6" : "mips64") +
|
||||
- "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64");
|
||||
+ "-linux-" + (IsMipsN32Abi ? "gnun32" : "gnu");
|
||||
if (D.getVFS().exists(concat(SysRoot, "/lib", MT)))
|
||||
return MT;
|
||||
if (D.getVFS().exists(concat(SysRoot, "/lib/mips64-linux-gnu")))
|
||||
@@ -147,7 +147,7 @@ std::string Linux::getMultiarchTriple(const Driver &D,
|
||||
}
|
||||
case llvm::Triple::mips64el: {
|
||||
std::string MT = std::string(IsMipsR6 ? "mipsisa64r6el" : "mips64el") +
|
||||
- "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64");
|
||||
+ "-linux-" + (IsMipsN32Abi ? "gnun32" : "gnu");
|
||||
if (D.getVFS().exists(concat(SysRoot, "/lib", MT)))
|
||||
return MT;
|
||||
if (D.getVFS().exists(concat(SysRoot, "/lib/mips64el-linux-gnu")))
|
||||
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
|
||||
index 86b74451ec0d..d94b7d44d11a 100644
|
||||
--- a/llvm/lib/TargetParser/Triple.cpp
|
||||
+++ b/llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -358,7 +358,7 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {
|
||||
case GNU: return "gnu";
|
||||
case GNUT64: return "gnut64";
|
||||
case GNUABI64: return "gnuabi64";
|
||||
- case GNUABIN32: return "gnuabin32";
|
||||
+ case GNUABIN32: return "gnun32";
|
||||
case GNUEABI: return "gnueabi";
|
||||
case GNUEABIT64: return "gnueabit64";
|
||||
case GNUEABIHF: return "gnueabihf";
|
||||
@@ -762,6 +762,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
|
||||
.StartsWith("eabihf", Triple::EABIHF)
|
||||
.StartsWith("eabi", Triple::EABI)
|
||||
.StartsWith("gnuabin32", Triple::GNUABIN32)
|
||||
+ .StartsWith("gnun32", Triple::GNUABIN32)
|
||||
.StartsWith("gnuabi64", Triple::GNUABI64)
|
||||
.StartsWith("gnueabihft64", Triple::GNUEABIHFT64)
|
||||
.StartsWith("gnueabihf", Triple::GNUEABIHF)
|
||||
@@ -1087,6 +1088,7 @@ Triple::Triple(std::string &&Str) : Data(std::move(Str)) {
|
||||
Environment =
|
||||
StringSwitch<Triple::EnvironmentType>(Components[0])
|
||||
.StartsWith("mipsn32", Triple::GNUABIN32)
|
||||
+ .StartsWith("mips64-n32", Triple::GNUABIN32)
|
||||
.StartsWith("mips64", Triple::GNUABI64)
|
||||
.StartsWith("mipsisa64", Triple::GNUABI64)
|
||||
.StartsWith("mipsisa32", Triple::GNU)
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
From 17a1a4919c0ff554fc30bbb85a63b9d2a1164324 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 14 May 2024 22:04:43 -0700
|
||||
Subject: [PATCH] llvm: Add libunwind.pc.in and llvm-config scripts
|
||||
|
||||
These are added by OE project
|
||||
|
||||
Upstream-Status: Inappropriate [ OE-Specific ]
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
|
||||
---
|
||||
libunwind/libunwind.pc.in | 9 ++++++
|
||||
llvm/tools/llvm-config/llvm-config | 52 ++++++++++++++++++++++++++++++
|
||||
2 files changed, 61 insertions(+)
|
||||
create mode 100644 libunwind/libunwind.pc.in
|
||||
create mode 100644 llvm/tools/llvm-config/llvm-config
|
||||
|
||||
diff --git a/libunwind/libunwind.pc.in b/libunwind/libunwind.pc.in
|
||||
new file mode 100644
|
||||
index 000000000000..a93d676604f9
|
||||
--- /dev/null
|
||||
+++ b/libunwind/libunwind.pc.in
|
||||
@@ -0,0 +1,9 @@
|
||||
+prefix=/usr
|
||||
+exec_prefix=/usr
|
||||
+libdir=@LIBDIR@
|
||||
+includedir=/usr/include
|
||||
+
|
||||
+Name: libunwind
|
||||
+Description: libunwind base library
|
||||
+Version: @VERSION@
|
||||
+Libs: -lunwind
|
||||
diff --git a/llvm/tools/llvm-config/llvm-config b/llvm/tools/llvm-config/llvm-config
|
||||
new file mode 100644
|
||||
index 000000000000..6a0dd54b8eab
|
||||
--- /dev/null
|
||||
+++ b/llvm/tools/llvm-config/llvm-config
|
||||
@@ -0,0 +1,15 @@
|
||||
+#!/bin/bash
|
||||
+#
|
||||
+# The llvm-config wrapper will act as a pure pass-through to the native llvm-config
|
||||
+# while preserving Yocto-specific environment variables used for alternate executable
|
||||
+# and library path resolution.
|
||||
+#
|
||||
+SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
||||
+NEXT_LLVM_CONFIG="@LLVM_CONFIG_PATH@"
|
||||
+export YOCTO_ALTERNATE_EXE_PATH="${YOCTO_ALTERNATE_EXE_PATH:="$(readlink -f "$SCRIPT_DIR/../llvm-config")"}"
|
||||
+if [ -d "$(readlink -f "$SCRIPT_DIR/../../lib64")" ]; then
|
||||
+ export YOCTO_ALTERNATE_LIBDIR="${YOCTO_ALTERNATE_LIBDIR:="/lib64"}"
|
||||
+else
|
||||
+ export YOCTO_ALTERNATE_LIBDIR="${YOCTO_ALTERNATE_LIBDIR:="/lib"}"
|
||||
+fi
|
||||
+exec "$NEXT_LLVM_CONFIG" "$@"
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
From a2171be64a181e0b263fc8ec31a760193651203c Mon Sep 17 00:00:00 2001
|
||||
From: Martin Jansa <martin.jansa@gmail.com>
|
||||
Date: Fri, 13 Sep 2024 13:38:08 +0200
|
||||
Subject: [PATCH] scan-build-py: respect LLVM_LIBDIR_SUFFIX like other tools do
|
||||
|
||||
* other libraries are installed in 'lib64' or 'lib32' based on
|
||||
LLVM_LIBDIR_SUFFIX value, but libscanbuild files were always
|
||||
installed in 'lib'
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/108549]
|
||||
|
||||
Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
|
||||
---
|
||||
clang/tools/scan-build-py/CMakeLists.txt | 26 ++++++++++++------------
|
||||
1 file changed, 13 insertions(+), 13 deletions(-)
|
||||
|
||||
Index: llvm-project-22.1.2.src/clang/tools/scan-build-py/CMakeLists.txt
|
||||
===================================================================
|
||||
--- llvm-project-22.1.2.src.orig/clang/tools/scan-build-py/CMakeLists.txt
|
||||
+++ llvm-project-22.1.2.src/clang/tools/scan-build-py/CMakeLists.txt
|
||||
@@ -80,52 +80,52 @@ if(CLANG_INSTALL_SCANBUILDPY)
|
||||
endforeach()
|
||||
|
||||
foreach(lib ${LibScanbuild})
|
||||
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}
|
||||
+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/${lib}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
${CMAKE_BINARY_DIR}/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
- ${CMAKE_BINARY_DIR}/lib/libscanbuild
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}
|
||||
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
|
||||
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
|
||||
+ list(APPEND Depends ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/${lib})
|
||||
install(FILES lib/libscanbuild/${lib}
|
||||
- DESTINATION lib/libscanbuild
|
||||
+ DESTINATION lib${LLVM_LIBDIR_SUFFIX}/libscanbuild
|
||||
COMPONENT scan-build-py)
|
||||
endforeach()
|
||||
|
||||
foreach(resource ${LibScanbuildResources})
|
||||
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}
|
||||
+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/resources/${resource}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
${CMAKE_BINARY_DIR}/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
- ${CMAKE_BINARY_DIR}/lib/libscanbuild
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/resources
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}
|
||||
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/resources
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
|
||||
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
|
||||
+ list(APPEND Depends ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/resources/${resource})
|
||||
install(FILES lib/libscanbuild/resources/${resource}
|
||||
- DESTINATION lib/libscanbuild/resources
|
||||
+ DESTINATION lib${LLVM_LIBDIR_SUFFIX}/libscanbuild/resources
|
||||
COMPONENT scan-build-py)
|
||||
endforeach()
|
||||
|
||||
foreach(lib ${LibEar})
|
||||
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libear/${lib}
|
||||
+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libear/${lib}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
${CMAKE_BINARY_DIR}/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
- ${CMAKE_BINARY_DIR}/lib/libear
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libear
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}
|
||||
- ${CMAKE_BINARY_DIR}/lib/libear/
|
||||
+ ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libear/
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
|
||||
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
|
||||
+ list(APPEND Depends ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/libear/${lib})
|
||||
install(FILES lib/libear/${lib}
|
||||
- DESTINATION lib/libear
|
||||
+ DESTINATION lib${LLVM_LIBDIR_SUFFIX}/libear
|
||||
COMPONENT scan-build-py)
|
||||
endforeach()
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
From 6b1f360c66b60c4bb639057590a8b2162d3bcf6b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 13 Mar 2025 00:30:38 -0700
|
||||
Subject: [PATCH] compiler-rt: Do not pass --target to clang compiler
|
||||
|
||||
In OE we use <tuple>-clang and <tuple>-clang++ which
|
||||
should resolve the --target correctly.
|
||||
|
||||
Upstream-Status: Inappropriate [ OE-Specific ]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
compiler-rt/lib/fuzzer/CMakeLists.txt | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/compiler-rt/lib/fuzzer/CMakeLists.txt b/compiler-rt/lib/fuzzer/CMakeLists.txt
|
||||
index a57e2fe46245..2928ed2ab6d5 100644
|
||||
--- a/compiler-rt/lib/fuzzer/CMakeLists.txt
|
||||
+++ b/compiler-rt/lib/fuzzer/CMakeLists.txt
|
||||
@@ -140,10 +140,6 @@ if(OS_NAME MATCHES "Android|Linux|Fuchsia" AND
|
||||
COMPILER_RT_LIBCXXABI_PATH)
|
||||
macro(partially_link_libcxx name dir arch)
|
||||
get_target_flags_for_arch(${arch} target_cflags)
|
||||
- if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
||||
- get_compiler_rt_target(${arch} target)
|
||||
- set(target_cflags --target=${target} ${target_cflags})
|
||||
- endif()
|
||||
set(cxx_${arch}_merge_dir "${CMAKE_CURRENT_BINARY_DIR}/cxx_${arch}_merge.dir")
|
||||
file(MAKE_DIRECTORY ${cxx_${arch}_merge_dir})
|
||||
add_custom_command(TARGET clang_rt.${name}-${arch} POST_BUILD
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
From 281cd05306cbfa5744e4a1f3ebf5c745324efe7a Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Kanavin <alex.kanavin@gmail.com>
|
||||
Date: Fri, 27 Nov 2020 10:11:08 +0000
|
||||
Subject: [PATCH] AsmMatcherEmitter: sort ClassInfo lists by name as well
|
||||
|
||||
Otherwise, there are instances which are identical in
|
||||
every other field and therefore sort non-reproducibly
|
||||
(which breaks binary and source reproducibiliy).
|
||||
|
||||
Upstream-Status: Submitted [https://reviews.llvm.org/D97477]
|
||||
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
|
||||
---
|
||||
llvm/utils/TableGen/AsmMatcherEmitter.cpp | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
|
||||
index e6085af5aa91..b0180638c754 100644
|
||||
--- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp
|
||||
+++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
|
||||
@@ -384,7 +384,10 @@ public:
|
||||
// name of a class shouldn't be significant. However, some of the backends
|
||||
// accidentally rely on this behaviour, so it will have to stay like this
|
||||
// until they are fixed.
|
||||
- return ValueName < RHS.ValueName;
|
||||
+ if (ValueName != RHS.ValueName)
|
||||
+ return ValueName < RHS.ValueName;
|
||||
+ // All else being equal, we should sort by name, for source and binary reproducibility
|
||||
+ return Name < RHS.Name;
|
||||
}
|
||||
};
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
From cbc2595eed96fa7de77162e4c7b99681579d01ef Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
|
||||
Date: Wed, 2 Apr 2025 17:05:17 +0300
|
||||
Subject: [PATCH] llvm-config: remove LLVM_LDFLAGS from --ldflags output
|
||||
|
||||
On native OE builds the LLVM_LDFLAGS gets a lot of extra flags which may
|
||||
depend on exact build dir and as such be inappropriate to binaries
|
||||
shared through sstate-cache. It is not possible to override this
|
||||
behaviour in llvm-config since crossscripts are not being used for
|
||||
native builds. As a OE-specific modification ignore LLVM_LDFLAGS for
|
||||
native builds.
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
llvm/tools/llvm-config/llvm-config.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
|
||||
index 0a3f51ae2b83..5c95a1f3ff24 100644
|
||||
--- a/llvm/tools/llvm-config/llvm-config.cpp
|
||||
+++ b/llvm/tools/llvm-config/llvm-config.cpp
|
||||
@@ -576,7 +576,7 @@ int main(int argc, char **argv) {
|
||||
HostTriple.isWindowsMSVCEnvironment() ? "-LIBPATH:" : "-L";
|
||||
LDFlags += ActiveLibDir;
|
||||
MaybePrintQuoted(LDFlags);
|
||||
- OS << ' ' << LLVM_LDFLAGS << '\n';
|
||||
+ OS << '\n';
|
||||
} else if (Arg == "--system-libs") {
|
||||
PrintSystemLibs = true;
|
||||
} else if (Arg == "--libs") {
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
From 3a486a17b697c65cdc7d2c17d9e14f2bfc2be911 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 10 May 2025 14:03:12 -0700
|
||||
Subject: [PATCH] compiler-rt: Exclude sync_fetch_and_* for any pre-ARMv6
|
||||
targets
|
||||
|
||||
Sometimes builds may happen where ABI is not indidated by host_triple
|
||||
e.g. on Yocto the compiler used is called arm-poky-linux-gnueabi-clang
|
||||
for all arm32 cross compilers, it passed the ABI flags on cmdline in
|
||||
addition. e.g.
|
||||
|
||||
-march=armv5te -mfloat-abi=soft
|
||||
or
|
||||
-march=armv7-a -mfloat-abi=hard
|
||||
|
||||
compiler-rt's makery tries to add arm to COMPILER_RT_SUPPORTED_ARCH
|
||||
deducing it from triple name.
|
||||
|
||||
which ends up choosing `arm` as one of compiler-rt arch to build for.
|
||||
This arch is however using armv7+ defaults and then tried to build sync
|
||||
builtins using
|
||||
|
||||
arm-poky-linux-gnueabi-clang -march=armv5te -mfloat-abi=soft ...
|
||||
|
||||
Which does not compile correctly, in such cases it should simply
|
||||
remove the sync builtins from list of things to build similar to what
|
||||
is done when we use armv4t or armv5t
|
||||
|
||||
set(armv4t_SOURCES ${arm_min_SOURCES})
|
||||
set(armv5te_SOURCES ${arm_min_SOURCES})
|
||||
|
||||
This lets compiler-rt build for arm architectures without depending
|
||||
upong compiler triple, but instead of poking the compiler for what
|
||||
it is building for
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/139411]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
compiler-rt/lib/builtins/CMakeLists.txt | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
|
||||
index b3a44ea3c3b3..4a328ab0ca26 100644
|
||||
--- a/compiler-rt/lib/builtins/CMakeLists.txt
|
||||
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
|
||||
@@ -975,6 +975,18 @@ else ()
|
||||
${TARGET_${arch}_CFLAGS})
|
||||
list(JOIN CMAKE_REQUIRED_FLAGS " " CMAKE_REQUIRED_FLAGS)
|
||||
message(STATUS "Performing additional configure checks with target flags: ${CMAKE_REQUIRED_FLAGS}")
|
||||
+ # For ARM archs, exclude any sync builtins if dmb or mcr p15, #0, r0, c7, c10, #5
|
||||
+ # is not supported
|
||||
+ if (${arch} MATCHES "^(arm|armhf)$")
|
||||
+ try_compile_only(COMPILER_RT_HAS_${arch}_SYNC
|
||||
+ SOURCE "#if __ARM_ARCH < 6
|
||||
+ #error DMB is only supported on ARMv6+ !
|
||||
+ #endif
|
||||
+ int main(void) { return 0; }")
|
||||
+ if(NOT COMPILER_RT_HAS_${arch}_SYNC)
|
||||
+ list(REMOVE_ITEM ${arch}_SOURCES ${arm_sync_SOURCES})
|
||||
+ endif()
|
||||
+ endif()
|
||||
# For ARM archs, exclude any VFP builtins if VFP is not supported
|
||||
if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em|armv8m.main|armv8.1m.main)$")
|
||||
check_compile_definition(__ARM_FP "${CMAKE_C_FLAGS}" COMPILER_RT_HAS_${arch}_VFP)
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From b71c398a1b10b29886c2db2a920f476fec6f7de2 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Thu, 22 May 2025 21:50:45 -0700
|
||||
Subject: [PATCH] [compiler-rt] Hardcode uptr/sptr typedefs on Mips/Linux
|
||||
|
||||
Sanitizer build on Mips/Linux faills to build due to assertion errors
|
||||
mismatched definitions. This is due to inconsistent definitions of
|
||||
`uptr` of either `unsigned long` or `unsigned int` in compiler-rt. This
|
||||
is caused by clang defining
|
||||
|
||||
__UINTPTR_TYPE__ long unsigned int where as gcc defines it as
|
||||
unsigned int
|
||||
|
||||
As a workaround, this hardcodes `uptr`/`sptr` in compiler-rt to
|
||||
`unsigned int`/`int` on Linux Mips, matching gcc.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/141201]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
|
||||
index c719e2a8ef60..60b997e653c4 100644
|
||||
--- a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
|
||||
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
|
||||
@@ -139,7 +139,7 @@
|
||||
namespace __sanitizer {
|
||||
|
||||
#if defined(__UINTPTR_TYPE__)
|
||||
-# if defined(__arm__) && defined(__linux__)
|
||||
+# if (defined(__arm__) || _ABIO32 == 1) && defined(__linux__)
|
||||
// Linux Arm headers redefine __UINTPTR_TYPE__ and disagree with clang/gcc.
|
||||
typedef unsigned int uptr;
|
||||
typedef int sptr;
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
From 9ace97c0c2df52d823c9d5345cca0251bf2ccf16 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sun, 27 Jul 2025 19:12:13 -0700
|
||||
Subject: [PATCH] Revert "[libc++] Remap headers in the debug info when
|
||||
building the library (#143004)"
|
||||
|
||||
This reverts commit 4d50b405f1585ce172f87cb5f8daf3c1b4145215.
|
||||
|
||||
There is a discussion on this issue on [1]
|
||||
I have discussed this on PR and also with developer on IRC, I am
|
||||
hoping that our position will be considered by 22.x release
|
||||
|
||||
[1] https://github.com/llvm/llvm-project/pull/143004/
|
||||
|
||||
Upstream-Status: Inappropriate [ OE-Specific ]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
libcxx/include/CMakeLists.txt | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
|
||||
index 787cfffa5019..d73bcd852a1e 100644
|
||||
--- a/libcxx/include/CMakeLists.txt
|
||||
+++ b/libcxx/include/CMakeLists.txt
|
||||
@@ -1718,11 +1718,6 @@ add_dependencies(cxx-headers generate-cxx-headers)
|
||||
target_include_directories(cxx-headers INTERFACE ${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}
|
||||
${LIBCXX_GENERATED_INCLUDE_DIR})
|
||||
|
||||
-# Make sure to map the generated include directory back to libc++'s actual source directory when generating
|
||||
-# debug information. Otherwise, the debug information will refer to generated headers which are created during
|
||||
-# the build and generally not persistent.
|
||||
-target_add_compile_flags_if_supported(cxx-headers INTERFACE "-fdebug-prefix-map=${LIBCXX_GENERATED_INCLUDE_DIR}=${LIBCXX_SOURCE_DIR}/include")
|
||||
-
|
||||
if (LIBCXX_INSTALL_HEADERS)
|
||||
foreach(file ${files})
|
||||
get_filename_component(dir ${file} DIRECTORY)
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
From 051b3bfa1e0e5cfed4a02318e330b38b0090cc49 Mon Sep 17 00:00:00 2001
|
||||
From: Serge Pavlov <sepavloff@gmail.com>
|
||||
Date: Fri, 25 Jul 2025 13:35:19 +0700
|
||||
Subject: [PATCH] Prevent revisiting block when searching for noreturn vars
|
||||
|
||||
When searching for noreturn variable initializations, do not visit CFG
|
||||
blocks that are already visited, it prevents hanging the analysis.
|
||||
|
||||
It must fix https://github.com/llvm/llvm-project/issues/150336.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/150582]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/test/SemaCXX/noreturn-vars.cpp | 17 +++++++++++++++++
|
||||
1 file changed, 17 insertions(+)
|
||||
|
||||
diff --git a/clang/test/SemaCXX/noreturn-vars.cpp b/clang/test/SemaCXX/noreturn-vars.cpp
|
||||
index ca65fcf5ca31..1bf074149f04 100644
|
||||
--- a/clang/test/SemaCXX/noreturn-vars.cpp
|
||||
+++ b/clang/test/SemaCXX/noreturn-vars.cpp
|
||||
@@ -225,3 +225,20 @@ extern void abc_02(func_type *);
|
||||
abc_02(&func_ptr);
|
||||
func_ptr();
|
||||
} // expected-warning {{function declared 'noreturn' should not return}}
|
||||
+
|
||||
+namespace Issue150336 {
|
||||
+void free(void *);
|
||||
+typedef void (*sel_freefunc)(void *);
|
||||
+struct gmx_ana_selmethod_t {
|
||||
+ sel_freefunc free;
|
||||
+ int nparams;
|
||||
+ int *param;
|
||||
+};
|
||||
+void gmx_selelem_free_method(struct gmx_ana_selmethod_t* method, void* mdata) {
|
||||
+ sel_freefunc free_func = 0;
|
||||
+ for (int i = 0; i < method->nparams; ++i)
|
||||
+ free(&method->param[i]);
|
||||
+ if (mdata && free_func)
|
||||
+ free_func(mdata);
|
||||
+}
|
||||
+}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
From 53da129f7986c5bd310f4f4a8236987df7e073c6 Mon Sep 17 00:00:00 2001
|
||||
From: Ross Burton <ross.burton@arm.com>
|
||||
Date: Mon, 29 Sep 2025 14:44:05 +0100
|
||||
Subject: [PATCH] Don't expose LLVM_HAVE_OPT_VIEWER_MODULES externally
|
||||
|
||||
This variable states whether at build-time some python modules were present,
|
||||
which is meaningless and simply introduces non-deterministic behaviour.
|
||||
|
||||
Upstream-Status: Pending [https://github.com/llvm/llvm-project/issues/161199]
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
llvm/cmake/modules/LLVMConfig.cmake.in | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/llvm/cmake/modules/LLVMConfig.cmake.in b/llvm/cmake/modules/LLVMConfig.cmake.in
|
||||
index 70c807abea98..5603c9215332 100644
|
||||
--- a/llvm/cmake/modules/LLVMConfig.cmake.in
|
||||
+++ b/llvm/cmake/modules/LLVMConfig.cmake.in
|
||||
@@ -137,7 +137,6 @@ set(LLVM_DEFINITIONS "@LLVM_DEFINITIONS@")
|
||||
set(LLVM_BINARY_DIR "@LLVM_CONFIG_BINARY_DIR@")
|
||||
set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@")
|
||||
set(LLVM_TOOLS_BINARY_DIR "@LLVM_CONFIG_TOOLS_BINARY_DIR@")
|
||||
-set(LLVM_HAVE_OPT_VIEWER_MODULES @LLVM_HAVE_OPT_VIEWER_MODULES@)
|
||||
set(LLVM_CONFIGURATION_TYPES @CMAKE_CONFIGURATION_TYPES@)
|
||||
set(LLVM_ENABLE_SHARED_LIBS @BUILD_SHARED_LIBS@)
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
From de58b9bbc8c52299ff22c4f0ab21e3878d411669 Mon Sep 17 00:00:00 2001
|
||||
From: Ross Burton <ross.burton@arm.com>
|
||||
Date: Sat, 11 Oct 2025 16:01:50 -0700
|
||||
Subject: [PATCH] [clang] Only build clang-tblgen if it is actually needed
|
||||
|
||||
It's possible to build clang with an existing clang-tblgen (common when
|
||||
cross-compiling, for instance) by setting CLANG_TABLEGEN_EXE. If this
|
||||
is the case there's no need to build it, as it won't be used.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/161952]
|
||||
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
clang/CMakeLists.txt | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
|
||||
index e4cb1a359620..b650b3b986f4 100644
|
||||
--- a/clang/CMakeLists.txt
|
||||
+++ b/clang/CMakeLists.txt
|
||||
@@ -479,7 +479,9 @@ option(CLANG_ENABLE_HLSL "Include HLSL build products" Off)
|
||||
# While HLSL support is experimental this should stay hidden.
|
||||
mark_as_advanced(CLANG_ENABLE_HLSL)
|
||||
|
||||
-add_subdirectory(utils/TableGen)
|
||||
+if (NOT DEFINED CLANG_TABLEGEN_EXE OR CLANG_INCLUDE_TESTS)
|
||||
+ add_subdirectory(utils/TableGen)
|
||||
+endif()
|
||||
|
||||
# Export CLANG_TABLEGEN_EXE for use by flang docs.
|
||||
set(CLANG_TABLEGEN_EXE "${CLANG_TABLEGEN_EXE}" CACHE INTERNAL "")
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
From bca77d818187e68989dfa9e386b38632b76a477e Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 28 Oct 2025 15:44:49 -0700
|
||||
Subject: [PATCH] llvm-libgcc: Fix symlink path for libcc when
|
||||
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR is unset
|
||||
|
||||
current logic fails when LLVM_ENABLE_PER_TARGET_RUNTIME_DIR = OFF
|
||||
and it ends up with symlinks e.g.
|
||||
|
||||
libgcc.a -> ..//usr/lib/clang/21.1.4/lib/linux/libclang_rt.builtins.a
|
||||
|
||||
the real library is at
|
||||
../lib/clang/21.1.4/lib/linux/libclang_rt.builtins-aarch64.a
|
||||
|
||||
The relative path is incorrect and its missing to add -arch suffix
|
||||
as well.
|
||||
|
||||
So we make checks a bit more explicit to cover this case.
|
||||
|
||||
The symlink for libgcc_so.1.0 is made to point to libunwind.so
|
||||
which is functionally correct but it fails some linux distro packaging
|
||||
complain because libunwind.so is made part of -dev package but
|
||||
libgcc_so.1.0 ends up in the real package, and creates an unneeded
|
||||
package -> dev dependency
|
||||
|
||||
create the symlink to point to libunwind.so.1 instead then the boundaries
|
||||
of packaging are not crossed and all is well.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/165487]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
llvm-libgcc/CMakeLists.txt | 16 +++++++++++++---
|
||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/llvm-libgcc/CMakeLists.txt b/llvm-libgcc/CMakeLists.txt
|
||||
index 47208fc19869..54009c1104c3 100644
|
||||
--- a/llvm-libgcc/CMakeLists.txt
|
||||
+++ b/llvm-libgcc/CMakeLists.txt
|
||||
@@ -124,11 +124,21 @@ target_link_libraries(unwind_shared PUBLIC
|
||||
#===============================================================================
|
||||
|
||||
get_compiler_rt_install_dir(${COMPILER_RT_DEFAULT_TARGET_ARCH} install_dir_builtins)
|
||||
+
|
||||
+# Drop a leading "lib/" if present so we don't duplicate lib/lib
|
||||
string(REGEX REPLACE "^lib/" "" install_dir_builtins "${install_dir_builtins}")
|
||||
-string(FIND "${install_dir_builtins}" "clang" install_path_contains_triple)
|
||||
-if(install_path_contains_triple EQUAL -1)
|
||||
+
|
||||
+# Decide based on the actual CMake option, not on guessing from the path.
|
||||
+if (NOT LLVM_ENABLE_PER_TARGET_RUNTIME_DIR)
|
||||
+ # Flat-ish layout, e.g. usr/lib/clang/21.1.4/lib/linux/
|
||||
+ # Libraries are named libclang_rt.builtins-<arch>.a
|
||||
set(builtins_suffix "-${COMPILER_RT_DEFAULT_TARGET_ARCH}")
|
||||
+ # Do NOT prepend "../"
|
||||
else()
|
||||
+ # Per-target layout, e.g.
|
||||
+ # usr/lib/clang/21.1.4/lib/aarch64-unknown-linux-gnu/
|
||||
+ # Libraries are just libclang_rt.builtins.a
|
||||
+ set(builtins_suffix "")
|
||||
string(PREPEND install_dir_builtins "../")
|
||||
endif()
|
||||
set(LLVM_LIBGCC_COMPILER_RT ${install_dir_builtins}/libclang_rt.builtins${builtins_suffix}.a)
|
||||
@@ -137,7 +147,7 @@ add_custom_target(llvm-libgcc ALL
|
||||
DEPENDS unwind_shared unwind_static clang_rt.builtins-${COMPILER_RT_DEFAULT_TARGET_ARCH}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${LLVM_LIBGCC_COMPILER_RT} libgcc.a
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink libunwind.a libgcc_eh.a
|
||||
- COMMAND ${CMAKE_COMMAND} -E create_symlink libunwind.so libgcc_s.so.1.0
|
||||
+ COMMAND ${CMAKE_COMMAND} -E create_symlink libunwind.so.1 libgcc_s.so.1.0
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink libgcc_s.so.1.0 libgcc_s.so.1
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink libgcc_s.so.1 libgcc_s.so
|
||||
)
|
||||
+274
@@ -0,0 +1,274 @@
|
||||
From 82f18b02d9fec1bcc225a92251466ffee82f56b5 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Mar 2026 14:22:17 -0700
|
||||
Subject: [PATCH] [Clang] Rename UNUSED and UNKNOWN elements of OffloadArch enum to avoid
|
||||
macro collisions
|
||||
|
||||
OffloadArch uses enumerator named `UNUSED` `UNKNOWN`, which are common macro name
|
||||
in external codebases (e.g. Mesa defines UNUSED as an attribute helper). If such
|
||||
a macro is visible when including clang/Basic/OffloadArch.h, the preprocessor
|
||||
expands the token inside the enum and breaks compilation of the installed Clang
|
||||
headers.
|
||||
|
||||
Rename the enumerator to `Unused` and `Unknown` and update all in-tree references. This is a
|
||||
spelling-only change (no behavioral impact) and mirrors the existing approach
|
||||
used for SM_32_ to avoid macro clashes.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/5bc3d1966b2d0b300c338d85bb38e356f0d12a8c]
|
||||
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
|
||||
|
||||
diff --git a/clang/include/clang/Basic/OffloadArch.h b/clang/include/clang/Basic/OffloadArch.h
|
||||
index ea665b1..970487c 100644
|
||||
--- a/clang/include/clang/Basic/OffloadArch.h
|
||||
+++ b/clang/include/clang/Basic/OffloadArch.h
|
||||
@@ -16,8 +16,8 @@ class StringRef;
|
||||
namespace clang {
|
||||
|
||||
enum class OffloadArch {
|
||||
- UNUSED,
|
||||
- UNKNOWN,
|
||||
+ Unused,
|
||||
+ Unknown,
|
||||
// TODO: Deprecate and remove GPU architectures older than sm_52.
|
||||
SM_20,
|
||||
SM_21,
|
||||
@@ -145,7 +145,7 @@ const char *OffloadArchToString(OffloadArch A);
|
||||
const char *OffloadArchToVirtualArchString(OffloadArch A);
|
||||
|
||||
// Convert a string to an OffloadArch enum value. Returns
|
||||
-// OffloadArch::UNKNOWN if the string is not recognized.
|
||||
+// OffloadArch::Unknown if the string is not recognized.
|
||||
OffloadArch StringToOffloadArch(llvm::StringRef S);
|
||||
|
||||
} // namespace clang
|
||||
diff --git a/clang/lib/Basic/Cuda.cpp b/clang/lib/Basic/Cuda.cpp
|
||||
index 514fa2f..7884910 100644
|
||||
--- a/clang/lib/Basic/Cuda.cpp
|
||||
+++ b/clang/lib/Basic/Cuda.cpp
|
||||
@@ -75,7 +75,7 @@ CudaVersion ToCudaVersion(llvm::VersionTuple Version) {
|
||||
}
|
||||
|
||||
CudaVersion MinVersionForOffloadArch(OffloadArch A) {
|
||||
- if (A == OffloadArch::UNKNOWN)
|
||||
+ if (A == OffloadArch::Unknown)
|
||||
return CudaVersion::UNKNOWN;
|
||||
|
||||
// AMD GPUs do not depend on CUDA versions.
|
||||
@@ -141,7 +141,7 @@ CudaVersion MaxVersionForOffloadArch(OffloadArch A) {
|
||||
return CudaVersion::NEW;
|
||||
|
||||
switch (A) {
|
||||
- case OffloadArch::UNKNOWN:
|
||||
+ case OffloadArch::Unknown:
|
||||
return CudaVersion::UNKNOWN;
|
||||
case OffloadArch::SM_20:
|
||||
case OffloadArch::SM_21:
|
||||
diff --git a/clang/lib/Basic/OffloadArch.cpp b/clang/lib/Basic/OffloadArch.cpp
|
||||
index 05177f1..f3bbe64 100644
|
||||
--- a/clang/lib/Basic/OffloadArch.cpp
|
||||
+++ b/clang/lib/Basic/OffloadArch.cpp
|
||||
@@ -17,7 +17,7 @@ struct OffloadArchToStringMap {
|
||||
#define GFX(gpu) {OffloadArch::GFX##gpu, "gfx" #gpu, "compute_amdgcn"}
|
||||
static const OffloadArchToStringMap ArchNames[] = {
|
||||
// clang-format off
|
||||
- {OffloadArch::UNUSED, "", ""},
|
||||
+ {OffloadArch::Unused, "", ""},
|
||||
SM(20), {OffloadArch::SM_21, "sm_21", "compute_20"}, // Fermi
|
||||
SM(30), {OffloadArch::SM_32_, "sm_32", "compute_32"}, SM(35), SM(37), // Kepler
|
||||
SM(50), SM(52), SM(53), // Maxwell
|
||||
@@ -132,7 +132,7 @@ OffloadArch StringToOffloadArch(llvm::StringRef S) {
|
||||
return S == Map.ArchName;
|
||||
});
|
||||
if (Result == std::end(ArchNames))
|
||||
- return OffloadArch::UNKNOWN;
|
||||
+ return OffloadArch::Unknown;
|
||||
return Result->Arch;
|
||||
}
|
||||
|
||||
diff --git a/clang/lib/Basic/Targets/NVPTX.cpp b/clang/lib/Basic/Targets/NVPTX.cpp
|
||||
index 6526eef..9584f8a 100644
|
||||
--- a/clang/lib/Basic/Targets/NVPTX.cpp
|
||||
+++ b/clang/lib/Basic/Targets/NVPTX.cpp
|
||||
@@ -64,7 +64,7 @@ NVPTXTargetInfo::NVPTXTargetInfo(const llvm::Triple &Triple,
|
||||
// Define available target features
|
||||
// These must be defined in sorted order!
|
||||
NoAsmVariants = true;
|
||||
- GPU = OffloadArch::UNUSED;
|
||||
+ GPU = OffloadArch::Unused;
|
||||
|
||||
// PTX supports f16 as a fundamental type.
|
||||
HasFastHalfType = true;
|
||||
diff --git a/clang/lib/Basic/Targets/NVPTX.h b/clang/lib/Basic/Targets/NVPTX.h
|
||||
index 9bd0cc3..eeffb0e 100644
|
||||
--- a/clang/lib/Basic/Targets/NVPTX.h
|
||||
+++ b/clang/lib/Basic/Targets/NVPTX.h
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
initFeatureMap(llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags,
|
||||
StringRef CPU,
|
||||
const std::vector<std::string> &FeaturesVec) const override {
|
||||
- if (GPU != OffloadArch::UNUSED)
|
||||
+ if (GPU != OffloadArch::Unused)
|
||||
Features[OffloadArchToString(GPU)] = true;
|
||||
// Only add PTX feature if explicitly requested. Otherwise, let the backend
|
||||
// use the minimum required PTX version for the target SM.
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
}
|
||||
|
||||
bool isValidCPUName(StringRef Name) const override {
|
||||
- return StringToOffloadArch(Name) != OffloadArch::UNKNOWN;
|
||||
+ return StringToOffloadArch(Name) != OffloadArch::Unknown;
|
||||
}
|
||||
|
||||
void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override {
|
||||
@@ -157,7 +157,7 @@ public:
|
||||
|
||||
bool setCPU(const std::string &Name) override {
|
||||
GPU = StringToOffloadArch(Name);
|
||||
- return GPU != OffloadArch::UNKNOWN;
|
||||
+ return GPU != OffloadArch::Unknown;
|
||||
}
|
||||
|
||||
void setSupportedOpenCLOpts() override {
|
||||
diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
|
||||
index db0d56d..f78047d 100644
|
||||
--- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
|
||||
+++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
|
||||
@@ -2266,15 +2266,15 @@ bool CGOpenMPRuntimeGPU::hasAllocateAttributeForGlobalVar(const VarDecl *VD,
|
||||
// Get current OffloadArch and ignore any unknown values
|
||||
static OffloadArch getOffloadArch(CodeGenModule &CGM) {
|
||||
if (!CGM.getTarget().hasFeature("ptx"))
|
||||
- return OffloadArch::UNKNOWN;
|
||||
+ return OffloadArch::Unknown;
|
||||
for (const auto &Feature : CGM.getTarget().getTargetOpts().FeatureMap) {
|
||||
if (Feature.getValue()) {
|
||||
OffloadArch Arch = StringToOffloadArch(Feature.getKey());
|
||||
- if (Arch != OffloadArch::UNKNOWN)
|
||||
+ if (Arch != OffloadArch::Unknown)
|
||||
return Arch;
|
||||
}
|
||||
}
|
||||
- return OffloadArch::UNKNOWN;
|
||||
+ return OffloadArch::Unknown;
|
||||
}
|
||||
|
||||
/// Check to see if target architecture supports unified addressing which is
|
||||
@@ -2382,8 +2382,8 @@ void CGOpenMPRuntimeGPU::processRequiresDirective(const OMPRequiresDecl *D) {
|
||||
case OffloadArch::Generic:
|
||||
case OffloadArch::GRANITERAPIDS:
|
||||
case OffloadArch::BMG_G21:
|
||||
- case OffloadArch::UNUSED:
|
||||
- case OffloadArch::UNKNOWN:
|
||||
+ case OffloadArch::Unused:
|
||||
+ case OffloadArch::Unknown:
|
||||
break;
|
||||
case OffloadArch::LAST:
|
||||
llvm_unreachable("Unexpected GPU arch.");
|
||||
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
|
||||
index eb3f9cb..c8894a1 100644
|
||||
--- a/clang/lib/Driver/Driver.cpp
|
||||
+++ b/clang/lib/Driver/Driver.cpp
|
||||
@@ -946,7 +946,7 @@ inferOffloadToolchains(Compilation &C, Action::OffloadKind Kind) {
|
||||
llvm::DenseSet<llvm::StringRef> Triples;
|
||||
for (llvm::StringRef Arch : Archs) {
|
||||
OffloadArch ID = StringToOffloadArch(Arch);
|
||||
- if (ID == OffloadArch::UNKNOWN)
|
||||
+ if (ID == OffloadArch::Unknown)
|
||||
ID = StringToOffloadArch(
|
||||
getProcessorFromTargetID(llvm::Triple("amdgcn-amd-amdhsa"), Arch));
|
||||
|
||||
@@ -961,12 +961,12 @@ inferOffloadToolchains(Compilation &C, Action::OffloadKind Kind) {
|
||||
return llvm::DenseSet<llvm::StringRef>();
|
||||
}
|
||||
if (Kind == Action::OFK_OpenMP &&
|
||||
- (ID == OffloadArch::UNKNOWN || ID == OffloadArch::UNUSED)) {
|
||||
+ (ID == OffloadArch::Unknown || ID == OffloadArch::Unused)) {
|
||||
C.getDriver().Diag(clang::diag::err_drv_failed_to_deduce_target_from_arch)
|
||||
<< Arch;
|
||||
return llvm::DenseSet<llvm::StringRef>();
|
||||
}
|
||||
- if (ID == OffloadArch::UNKNOWN || ID == OffloadArch::UNUSED) {
|
||||
+ if (ID == OffloadArch::Unknown || ID == OffloadArch::Unused) {
|
||||
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
|
||||
<< "offload" << Arch;
|
||||
return llvm::DenseSet<llvm::StringRef>();
|
||||
@@ -3305,7 +3305,7 @@ class OffloadingActionBuilder final {
|
||||
bool Relocatable = false;
|
||||
|
||||
/// Default GPU architecture if there's no one specified.
|
||||
- OffloadArch DefaultOffloadArch = OffloadArch::UNKNOWN;
|
||||
+ OffloadArch DefaultOffloadArch = OffloadArch::Unknown;
|
||||
|
||||
/// Compilation unit ID specified by option '-fuse-cuid=' or'-cuid='.
|
||||
const CUIDOptions &CUIDOpts;
|
||||
@@ -3407,7 +3407,7 @@ class OffloadingActionBuilder final {
|
||||
|
||||
// If we have a fat binary, add it to the list.
|
||||
if (CudaFatBinary) {
|
||||
- AddTopLevel(CudaFatBinary, OffloadArch::UNUSED);
|
||||
+ AddTopLevel(CudaFatBinary, OffloadArch::Unused);
|
||||
CudaDeviceActions.clear();
|
||||
CudaFatBinary = nullptr;
|
||||
return;
|
||||
@@ -4669,12 +4669,12 @@ static StringRef getCanonicalArchString(Compilation &C,
|
||||
OffloadArch Arch =
|
||||
StringToOffloadArch(getProcessorFromTargetID(Triple, ArchStr));
|
||||
if (Triple.isNVPTX() &&
|
||||
- (Arch == OffloadArch::UNKNOWN || !IsNVIDIAOffloadArch(Arch))) {
|
||||
+ (Arch == OffloadArch::Unknown || !IsNVIDIAOffloadArch(Arch))) {
|
||||
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
|
||||
<< "CUDA" << ArchStr;
|
||||
return StringRef();
|
||||
} else if (Triple.isAMDGPU() &&
|
||||
- (Arch == OffloadArch::UNKNOWN || !IsAMDOffloadArch(Arch))) {
|
||||
+ (Arch == OffloadArch::Unknown || !IsAMDOffloadArch(Arch))) {
|
||||
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
|
||||
<< "HIP" << ArchStr;
|
||||
return StringRef();
|
||||
diff --git a/clang/lib/Driver/OffloadBundler.cpp b/clang/lib/Driver/OffloadBundler.cpp
|
||||
index f69ac41..6d446f2 100644
|
||||
--- a/clang/lib/Driver/OffloadBundler.cpp
|
||||
+++ b/clang/lib/Driver/OffloadBundler.cpp
|
||||
@@ -95,7 +95,7 @@ OffloadTargetInfo::OffloadTargetInfo(const StringRef Target,
|
||||
Components.size() == 6 ? Components.back() : "";
|
||||
StringRef TargetId = TargetIdWithFeature.split(':').first;
|
||||
if (!TargetId.empty() &&
|
||||
- clang::StringToOffloadArch(TargetId) != clang::OffloadArch::UNKNOWN)
|
||||
+ clang::StringToOffloadArch(TargetId) != clang::OffloadArch::Unknown)
|
||||
this->TargetID = TargetIdWithFeature;
|
||||
else
|
||||
this->TargetID = "";
|
||||
diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp
|
||||
index 6cc73ff..d97b926 100644
|
||||
--- a/clang/lib/Driver/ToolChains/Cuda.cpp
|
||||
+++ b/clang/lib/Driver/ToolChains/Cuda.cpp
|
||||
@@ -319,7 +319,7 @@ void CudaInstallationDetector::AddCudaIncludeArgs(
|
||||
|
||||
void CudaInstallationDetector::CheckCudaVersionSupportsArch(
|
||||
OffloadArch Arch) const {
|
||||
- if (Arch == OffloadArch::UNKNOWN || Version == CudaVersion::UNKNOWN ||
|
||||
+ if (Arch == OffloadArch::Unknown || Version == CudaVersion::UNKNOWN ||
|
||||
ArchsWithBadVersion[(int)Arch])
|
||||
return;
|
||||
|
||||
@@ -408,7 +408,7 @@ void NVPTX::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
|
||||
// Obtain architecture from the action.
|
||||
OffloadArch gpu_arch = StringToOffloadArch(GPUArchName);
|
||||
- assert(gpu_arch != OffloadArch::UNKNOWN &&
|
||||
+ assert(gpu_arch != OffloadArch::Unknown &&
|
||||
"Device action expected to have an architecture.");
|
||||
|
||||
// Check that our installation's ptxas supports gpu_arch.
|
||||
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
|
||||
index 3f0ea5c..e6d3516 100644
|
||||
--- a/clang/lib/Sema/SemaDeclAttr.cpp
|
||||
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
|
||||
@@ -5732,7 +5732,7 @@ Sema::CreateLaunchBoundsAttr(const AttributeCommonInfo &CI, Expr *MaxThreads,
|
||||
if (MaxBlocks) {
|
||||
// '.maxclusterrank' ptx directive requires .target sm_90 or higher.
|
||||
auto SM = getOffloadArch(Context.getTargetInfo());
|
||||
- if (SM == OffloadArch::UNKNOWN || SM < OffloadArch::SM_90) {
|
||||
+ if (SM == OffloadArch::Unknown || SM < OffloadArch::SM_90) {
|
||||
Diag(MaxBlocks->getBeginLoc(), diag::warn_cuda_maxclusterrank_sm_90)
|
||||
<< OffloadArchToString(SM) << CI << MaxBlocks->getSourceRange();
|
||||
// Ignore it by setting MaxBlocks to null;
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
From 5dbd0a05f64a43849a7edde95a0e5f2323cd1f9d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <khem.raj@oss.qualcomm.com>
|
||||
Date: Tue, 31 Mar 2026 19:33:29 -0700
|
||||
Subject: [PATCH] libcxxabi: declare __gnu_unwind_frame in cxa_personality
|
||||
|
||||
ARM EHABI builds of libcxxabi fail with clang-22+ because
|
||||
cxa_personality.cpp calls __gnu_unwind_frame without a visible
|
||||
declaration, triggering:
|
||||
|
||||
error: use of undeclared identifier '__gnu_unwind_frame'
|
||||
|
||||
Add an extern "C" forward declaration before the EHABI unwind helper
|
||||
so the source compiles correctly.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/189787]
|
||||
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
|
||||
---
|
||||
libcxxabi/src/cxa_personality.cpp | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/libcxxabi/src/cxa_personality.cpp b/libcxxabi/src/cxa_personality.cpp
|
||||
index 35f4e3807724..ddff277cc7b8 100644
|
||||
--- a/libcxxabi/src/cxa_personality.cpp
|
||||
+++ b/libcxxabi/src/cxa_personality.cpp
|
||||
@@ -1116,6 +1116,8 @@ __gxx_personality_seh0(PEXCEPTION_RECORD ms_exc, void *this_frame,
|
||||
|
||||
#else
|
||||
|
||||
+extern "C" _Unwind_Reason_Code __gnu_unwind_frame(_Unwind_Exception*,
|
||||
+ _Unwind_Context*);
|
||||
// Helper function to unwind one frame.
|
||||
// ARM EHABI 7.3 and 7.4: If the personality function returns _URC_CONTINUE_UNWIND, the
|
||||
// personality routine should update the virtual register set (VRS) according to the
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
From b818a92ac171e80e39ad9e99d1f862d23f2bb5b3 Mon Sep 17 00:00:00 2001
|
||||
From: "mark.yang" <mark.yang@lge.com>
|
||||
Date: Tue, 14 Apr 2026 16:17:01 +0900
|
||||
Subject: [PATCH] Consolidate and fix sysroot-based compiler-rt search paths
|
||||
|
||||
Consolidate patches 0008 and 0033 into a single patch with a fix for
|
||||
native builds.
|
||||
|
||||
Background:
|
||||
In Yocto/OE, compiler-rt and libc++ are built as separate recipes and
|
||||
installed into the target sysroot, not into clang's resource directory
|
||||
(which is relative to the clang driver installation).
|
||||
Patches 0008 (getCompilerRTPath, Khem Raj, 2017) and 0033 (getRuntimePath and
|
||||
getArchSpecificLibPaths, Khem Raj, 2025) addressed this by changing the
|
||||
runtime library search base from ResourceDir to SysRoot-based paths.
|
||||
|
||||
Problem:
|
||||
The patches unconditionally replaced ResourceDir with a SysRoot-based
|
||||
path using CLANG_VERSION_STRING. In native/standalone builds where
|
||||
SysRoot is empty, this produces invalid absolute paths like
|
||||
"/usr/lib/clang/<full-version>/" pointing to the host filesystem instead of the
|
||||
build tree's resource directory. This breaks PGO bootstrap and any other
|
||||
native workflow that depends on compiler-rt runtime libraries
|
||||
(e.g., -fprofile-generate cannot find libclang_rt.profile.a).
|
||||
|
||||
Fix:
|
||||
Use SysRoot-based paths only when SysRoot is actually set (i.e., during
|
||||
cross-compilation). When SysRoot is empty (native/standalone builds),
|
||||
fall back to the upstream default ResourceDir, which correctly resolves
|
||||
to the build tree's resource directory.
|
||||
|
||||
The following functions are updated with this conditional logic:
|
||||
- getCompilerRTPath()
|
||||
- getRuntimePath()
|
||||
- getArchSpecificLibPaths()
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: mark.yang <mark.yang@lge.com>
|
||||
---
|
||||
clang/lib/Driver/ToolChain.cpp | 31 ++++++++++++++++++++++++++++---
|
||||
1 file changed, 28 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
|
||||
index 77a2c73f0..ac28b51c4 100644
|
||||
--- a/clang/lib/Driver/ToolChain.cpp
|
||||
+++ b/clang/lib/Driver/ToolChain.cpp
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "ToolChains/InterfaceStubs.h"
|
||||
#include "clang/Basic/ObjCRuntime.h"
|
||||
#include "clang/Basic/Sanitizers.h"
|
||||
+#include "clang/Basic/Version.h"
|
||||
#include "clang/Config/config.h"
|
||||
#include "clang/Driver/Action.h"
|
||||
#include "clang/Driver/CommonArgs.h"
|
||||
@@ -723,7 +724,15 @@ StringRef ToolChain::getOSLibName() const {
|
||||
}
|
||||
|
||||
std::string ToolChain::getCompilerRTPath() const {
|
||||
- SmallString<128> Path(getDriver().ResourceDir);
|
||||
+ SmallString<128> Path;
|
||||
+ if (!getDriver().SysRoot.empty()) {
|
||||
+ Path = getDriver().SysRoot;
|
||||
+ StringRef ClangLibdirBasename(CLANG_INSTALL_LIBDIR_BASENAME);
|
||||
+ llvm::sys::path::append(Path, "/usr/", ClangLibdirBasename, "clang",
|
||||
+ CLANG_VERSION_STRING);
|
||||
+ } else {
|
||||
+ Path = getDriver().ResourceDir;
|
||||
+ }
|
||||
if (isBareMetal()) {
|
||||
llvm::sys::path::append(Path, "lib", getOSLibName());
|
||||
if (!SelectedMultilibs.empty()) {
|
||||
@@ -1021,7 +1030,15 @@ ToolChain::getTargetSubDirPath(StringRef BaseDir) const {
|
||||
}
|
||||
|
||||
std::optional<std::string> ToolChain::getRuntimePath() const {
|
||||
- SmallString<128> P(D.ResourceDir);
|
||||
+ SmallString<128> P;
|
||||
+ if (!D.SysRoot.empty()) {
|
||||
+ P = D.SysRoot;
|
||||
+ StringRef ClangLibdirBasename(CLANG_INSTALL_LIBDIR_BASENAME);
|
||||
+ llvm::sys::path::append(P, "/usr/", ClangLibdirBasename, "clang",
|
||||
+ CLANG_VERSION_STRING);
|
||||
+ } else {
|
||||
+ P = D.ResourceDir;
|
||||
+ }
|
||||
llvm::sys::path::append(P, "lib");
|
||||
if (auto Ret = getTargetSubDirPath(P))
|
||||
return Ret;
|
||||
@@ -1049,7 +1066,15 @@ ToolChain::path_list ToolChain::getArchSpecificLibPaths() const {
|
||||
path_list Paths;
|
||||
|
||||
auto AddPath = [&](const ArrayRef<StringRef> &SS) {
|
||||
- SmallString<128> Path(getDriver().ResourceDir);
|
||||
+ SmallString<128> Path;
|
||||
+ if (!getDriver().SysRoot.empty()) {
|
||||
+ Path = getDriver().SysRoot;
|
||||
+ StringRef ClangLibdirBasename(CLANG_INSTALL_LIBDIR_BASENAME);
|
||||
+ llvm::sys::path::append(Path, "/usr/", ClangLibdirBasename, "clang",
|
||||
+ CLANG_VERSION_STRING);
|
||||
+ } else {
|
||||
+ Path = getDriver().ResourceDir;
|
||||
+ }
|
||||
llvm::sys::path::append(Path, "lib");
|
||||
for (auto &S : SS)
|
||||
llvm::sys::path::append(Path, S);
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
clang-tools-extra tests depend on the llvm-bcanalyzer CMake target, which
|
||||
exists in LLVM's CMake project but is not visible when Clang is built
|
||||
separately. To run clang tests, disable clang-tools-extra tests for now.
|
||||
|
||||
Without this patch when CLANG_INCLUDE_TESTS is ON got the following error
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
| CMake Error at ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2113 (add_dependencies):
|
||||
| The dependency target "llvm-bcanalyzer" of target
|
||||
| "check-clang-extra-clang-tidy-infrastructure-header-filter-from-config-file-simple"
|
||||
| does not exist.
|
||||
| Call Stack (most recent call first):
|
||||
| ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2221 (add_lit_target)
|
||||
| tools/extra/test/CMakeLists.txt:87 (add_lit_testsuites)
|
||||
|
|
||||
| CMake Error at ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2113 (add_dependencies):
|
||||
| The dependency target "llvm-bcanalyzer" of target
|
||||
| "check-clang-extra-modularize" does not exist.
|
||||
| Call Stack (most recent call first):
|
||||
| ../clang/21.1.8/recipe-sysroot/usr/lib/cmake/llvm/AddLLVM.cmake:2221 (add_lit_target)
|
||||
| tools/extra/test/CMakeLists.txt:87 (add_lit_testsuites)
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
|
||||
|
||||
diff --git a/clang-tools-extra/CMakeLists.txt b/clang-tools-extra/CMakeLists.txt
|
||||
index 6b6f2b1..26e4c10 100644
|
||||
--- a/clang-tools-extra/CMakeLists.txt
|
||||
+++ b/clang-tools-extra/CMakeLists.txt
|
||||
@@ -8,7 +8,7 @@ include(GNUInstallDirs)
|
||||
option(CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
|
||||
"Enable query-based custom checks in clang-tidy" ON)
|
||||
|
||||
-if(CLANG_INCLUDE_TESTS)
|
||||
+if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS)
|
||||
umbrella_lit_testsuite_begin(check-clang-tools)
|
||||
|
||||
option(CLANG_TOOLS_TEST_USE_VG "Run Clang tools' tests under Valgrind" OFF)
|
||||
@@ -45,7 +45,7 @@ if (CLANG_ENABLE_CLANGD)
|
||||
endif()
|
||||
|
||||
# Add the common testsuite after all the tools.
|
||||
-if(CLANG_INCLUDE_TESTS)
|
||||
+if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS)
|
||||
add_subdirectory(test)
|
||||
add_subdirectory(unittests)
|
||||
umbrella_lit_testsuite_end(check-clang-tools)
|
||||
diff --git a/clang-tools-extra/include-cleaner/CMakeLists.txt b/clang-tools-extra/include-cleaner/CMakeLists.txt
|
||||
index dc147f9..4855577 100644
|
||||
--- a/clang-tools-extra/include-cleaner/CMakeLists.txt
|
||||
+++ b/clang-tools-extra/include-cleaner/CMakeLists.txt
|
||||
@@ -1,7 +1,7 @@
|
||||
include_directories(include)
|
||||
add_subdirectory(lib)
|
||||
add_subdirectory(tool)
|
||||
-if(CLANG_INCLUDE_TESTS)
|
||||
+if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS)
|
||||
add_subdirectory(test)
|
||||
add_subdirectory(unittests)
|
||||
endif()
|
||||
diff --git a/clang-tools-extra/clangd/CMakeLists.txt b/clang-tools-extra/clangd/CMakeLists.txt
|
||||
index a1e9da4..94dcb96 100644
|
||||
--- a/clang-tools-extra/clangd/CMakeLists.txt
|
||||
+++ b/clang-tools-extra/clangd/CMakeLists.txt
|
||||
@@ -215,7 +215,7 @@ endif()
|
||||
option(CLANGD_BUILD_DEXP "Build the dexp tool as part of Clangd" ON)
|
||||
llvm_canonicalize_cmake_booleans(CLANGD_BUILD_DEXP)
|
||||
|
||||
-if(CLANG_INCLUDE_TESTS)
|
||||
+if(CLANG_TOOLS_EXTRA_INCLUDE_TESTS)
|
||||
add_subdirectory(test)
|
||||
add_subdirectory(unittests)
|
||||
endif()
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
From 965f9d87adb0a7376454374fbc140ab69bd796a9 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Hahn <flo@fhahn.com>
|
||||
Date: Fri, 27 Mar 2026 13:02:51 +0000
|
||||
Subject: [PATCH] [LoopUnroll] Use MapVector for deterministic iteration order.
|
||||
(#188821)
|
||||
|
||||
NonLoopBlocksIDom determines the order we adjust the DT, impacting DRT
|
||||
child ordering.
|
||||
|
||||
Similarly, ExitInfos order impacts the order of SetDest, which applies
|
||||
DT updates.
|
||||
|
||||
The order impacts collectChildrenInLoop, which in turn impacts the we
|
||||
process BBs in LICM. And this in turn impacts the order in which we
|
||||
perform alias queries.
|
||||
|
||||
If the order is not deterministic, we sometimes get different NumNoAlias
|
||||
statistic counts, and possibly also different IR, although I have not
|
||||
confirmed the latter.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/965f9d87adb0a7376454374fbc140ab69bd796a9]
|
||||
Signed-off-by: Sunilkumar Dora <sunilkumar.dora@windriver.com>
|
||||
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
|
||||
|
||||
---
|
||||
llvm/lib/Transforms/Utils/LoopPeel.cpp | 3 ++-
|
||||
llvm/lib/Transforms/Utils/LoopUnroll.cpp | 3 ++-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/llvm/lib/Transforms/Utils/LoopPeel.cpp b/llvm/lib/Transforms/Utils/LoopPeel.cpp
|
||||
index 91737b5c30533..4c67d5a9ae680 100644
|
||||
--- a/llvm/lib/Transforms/Utils/LoopPeel.cpp
|
||||
+++ b/llvm/lib/Transforms/Utils/LoopPeel.cpp
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "llvm/Transforms/Utils/LoopPeel.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
+#include "llvm/ADT/MapVector.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/Analysis/Loads.h"
|
||||
@@ -1121,7 +1122,7 @@ void llvm::peelLoop(Loop *L, unsigned PeelCount, bool PeelLast, LoopInfo *LI,
|
||||
// later. Immediate dominator of such block might change, because we add more
|
||||
// routes which can lead to the exit: we can reach it from the peeled
|
||||
// iterations too.
|
||||
- DenseMap<BasicBlock *, BasicBlock *> NonLoopBlocksIDom;
|
||||
+ MapVector<BasicBlock *, BasicBlock *> NonLoopBlocksIDom;
|
||||
for (auto *BB : L->blocks()) {
|
||||
auto *BBDomNode = DT.getNode(BB);
|
||||
SmallVector<BasicBlock *, 16> ChildrenToUpdate;
|
||||
diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
|
||||
index 6a2ccbea996bf..ab35d217f0d93 100644
|
||||
--- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp
|
||||
+++ b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
+#include "llvm/ADT/MapVector.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/ScopedHashTable.h"
|
||||
#include "llvm/ADT/SetVector.h"
|
||||
@@ -515,7 +516,7 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
|
||||
BasicBlock *FirstExitingBlock = nullptr;
|
||||
SmallVector<BasicBlock *> ExitingBlocks;
|
||||
};
|
||||
- DenseMap<BasicBlock *, ExitInfo> ExitInfos;
|
||||
+ MapVector<BasicBlock *, ExitInfo> ExitInfos;
|
||||
SmallVector<BasicBlock *, 4> ExitingBlocks;
|
||||
L->getExitingBlocks(ExitingBlocks);
|
||||
for (auto *ExitingBlock : ExitingBlocks) {
|
||||
@@ -0,0 +1,149 @@
|
||||
SUMMARY = "Implementation of the library requirements of the OpenCL C programming language."
|
||||
HOMEPAGE = "https://libclc.llvm.org"
|
||||
SECTION = "devel"
|
||||
|
||||
FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:"
|
||||
|
||||
LLVM_RELEASE = ""
|
||||
LLVM_DIR = "llvm${LLVM_RELEASE}"
|
||||
|
||||
LLVM_HTTP ?= "https://github.com/llvm"
|
||||
|
||||
MAJOR_VER = "22"
|
||||
MINOR_VER = "1"
|
||||
PATCH_VER = "8"
|
||||
# could be 'rcX' or 'git' or empty ( for release )
|
||||
VER_SUFFIX = ""
|
||||
|
||||
PV = "${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}"
|
||||
|
||||
LLVMMD5SUM = "8a15a0759ef07f2682d2ba4b893c9afe"
|
||||
CLANGMD5SUM = "ff42885ed2ab98f1ecb8c1fc41205343"
|
||||
LLDMD5SUM = "ae7dc7c027b1fa89b5b013d391d3ee2b"
|
||||
LLDBMD5SUM = "2e0d44968471fcde980034dbb826bea9"
|
||||
|
||||
LLVM_LIBDIR_SUFFIX = "${@d.getVar('baselib').replace('lib', '')}"
|
||||
|
||||
# set the default pigz thread
|
||||
export PIGZ = "-p ${@oe.utils.cpu_count(at_least=2)}"
|
||||
|
||||
def get_clang_arch(bb, d, arch_var):
|
||||
import re
|
||||
a = d.getVar(arch_var)
|
||||
if re.match('(i.86|athlon|x86.64)$', a): return 'X86'
|
||||
elif re.match('arm$', a): return 'ARM'
|
||||
elif re.match('armeb$', a): return 'ARM'
|
||||
elif re.match('aarch64$', a): return 'AArch64'
|
||||
elif re.match('aarch64_be$', a): return 'AArch64'
|
||||
elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips'
|
||||
elif re.match('riscv32$', a): return 'RISCV'
|
||||
elif re.match('riscv64$', a): return 'RISCV'
|
||||
elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC'
|
||||
elif re.match('loongarch64$', a): return 'LoongArch'
|
||||
else:
|
||||
bb.fatal("Unhandled architecture %s" % arch_var)
|
||||
return ""
|
||||
|
||||
def get_clang_host_arch(bb, d):
|
||||
return get_clang_arch(bb, d, 'HOST_ARCH')
|
||||
|
||||
def get_clang_target_arch(bb, d):
|
||||
return get_clang_arch(bb, d, 'TARGET_ARCH')
|
||||
|
||||
# Don't put build-time RPATHs in the binaries, whilst they'll be stripped on
|
||||
# install they cause non-deterministic binaries.
|
||||
EXTRA_OECMAKE += "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
|
||||
|
||||
# Don't embed found git information into the version string as this
|
||||
# will include the git server URL.
|
||||
EXTRA_OECMAKE += "-DLLVM_APPEND_VC_REV=OFF"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://llvm/LICENSE.TXT;md5=${LLVMMD5SUM} \
|
||||
file://clang/LICENSE.TXT;md5=${CLANGMD5SUM} \
|
||||
"
|
||||
LICENSE = "Apache-2.0 WITH LLVM-exception"
|
||||
|
||||
# Snapshot
|
||||
#RELEASE ?= "108df0694cc12fa496f63faa3a8762e7cc1a3b37"
|
||||
#BASEURI ?= "https://api.github.com/repos/llvm/llvm-project/tarball/${RELEASE};downloadfilename=llvm-${PV}-${RELEASE}.tar.gz"
|
||||
#SOURCEDIR ?= "llvm-llvm-project-${@'${RELEASE}'[0:7]}"
|
||||
#SRC_URI[sha256sum] = "f19bc6ed902e30413a8a034a024fae228ca57339b450d3682fd7437fb2573378"
|
||||
|
||||
# GA Release
|
||||
RELEASE ?= "${PV}"
|
||||
BASEURI ?= "${LLVM_HTTP}/llvm-project/releases/download/llvmorg-${PV}${VER_SUFFIX}/llvm-project-${PV}${VER_SUFFIX}.src.tar.xz"
|
||||
UPSTREAM_CHECK_URI = "${LLVM_HTTP}/llvm-project/releases/"
|
||||
UPSTREAM_CHECK_REGEX = "releases/tag/llvmorg-?(?P<pver>\d+(\.\d+)+)"
|
||||
SOURCEDIR ?= "llvm-project-${PV}${VER_SUFFIX}.src"
|
||||
SRC_URI[sha256sum] = "ab1f0e3ec52448c33e8782eaf0422504b87c7b016b22514653ee0d8fcee479ff"
|
||||
|
||||
SRC_URI = "\
|
||||
${BASEURI} \
|
||||
file://0001-libcxxabi-Find-libunwind-headers-when-LIBCXXABI_LIBU.patch \
|
||||
file://0002-compiler-rt-support-a-new-embedded-linux-target.patch \
|
||||
file://0003-compiler-rt-Simplify-cross-compilation.-Don-t-use-na.patch \
|
||||
file://0004-llvm-allow-env-override-of-exe-and-libdir-path.patch \
|
||||
file://0005-clang-driver-Check-sysroot-for-ldso-path.patch \
|
||||
file://0006-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch \
|
||||
file://0007-clang-Prepend-trailing-to-sysroot.patch \
|
||||
file://0009-clang-Define-releative-gcc-installation-dir.patch \
|
||||
file://0010-clang-Add-lpthread-and-ldl-along-with-lunwind-for-st.patch \
|
||||
file://0011-Check-for-atomic-double-intrinsics.patch \
|
||||
file://0012-cmake-Fix-configure-for-packages-using-find_package.patch \
|
||||
file://0013-clang-Fix-resource-dir-location-for-cross-toolchains.patch \
|
||||
file://0014-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch \
|
||||
file://0015-clang-Use-python3-in-python-scripts.patch \
|
||||
file://0016-llvm-clang-Insert-anchor-for-adding-OE-distro-vendor.patch \
|
||||
file://0017-compiler-rt-Do-not-use-backtrace-APIs-on-non-glibc-l.patch \
|
||||
file://0018-clang-Fix-x86-triple-for-non-debian-multiarch-linux-.patch \
|
||||
file://0019-libunwind-Added-unw_backtrace-method.patch \
|
||||
file://0020-lldb-Link-with-libatomic-on-x86.patch \
|
||||
file://0021-compiler-rt-Enable-__int128-for-ppc32.patch \
|
||||
file://0022-llvm-Do-not-use-cmake-infra-to-detect-libzstd.patch \
|
||||
file://0023-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch \
|
||||
file://0024-ToolChains-Gnu.cpp-ARMLibDirs-search-also-in-lib32.patch \
|
||||
file://0025-clang-llvm-Add-OE-specific-ABI-triple-for-N32-ABI.patch \
|
||||
file://0026-llvm-Add-libunwind.pc.in-and-llvm-config-scripts.patch \
|
||||
file://0027-scan-build-py-respect-LLVM_LIBDIR_SUFFIX-like-other-.patch \
|
||||
file://0028-compiler-rt-Do-not-pass-target-to-clang-compiler.patch \
|
||||
file://0029-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch \
|
||||
file://0030-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch \
|
||||
file://0031-compiler-rt-Exclude-sync_fetch_and_-for-any-pre-ARMv.patch \
|
||||
file://0032-compiler-rt-Hardcode-uptr-sptr-typedefs-on-Mips-Linu.patch \
|
||||
file://0034-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \
|
||||
file://0035-Prevent-revisiting-block-when-searching-for-noreturn.patch \
|
||||
file://0036-Don-t-expose-LLVM_HAVE_OPT_VIEWER_MODULES-externally.patch \
|
||||
file://0037-clang-Only-build-clang-tblgen-if-it-is-actually-need.patch \
|
||||
file://0038-llvm-libgcc-Fix-symlink-path-for-libcc-when-LLVM_ENA.patch \
|
||||
file://0039-Rename-UNUSED-and-UNKNOWN-elements-of-OffloadArch-enum.patch \
|
||||
file://0040-libcxxabi-declare-__gnu_unwind_frame-in-cxa_personal.patch \
|
||||
file://0041-Consolidate-and-fix-sysroot-based-compiler-rt-search.patch \
|
||||
file://0042-guard-clang-tools-extra-test.patch \
|
||||
file://0043-LoopUnroll-Iterate-exit-fold-candidates-in-determini.patch \
|
||||
"
|
||||
# Fallback to no-PIE if not set
|
||||
GCCPIE ??= ""
|
||||
|
||||
SRC_URI[sha256sum] = "922f1817a0df7b1489272d18134ee0087a8b068828f87ac63b9861b1a9965888"
|
||||
|
||||
S = "${UNPACKDIR}/llvm-project-${PV}.src"
|
||||
B ?= "${WORKDIR}/llvm-project-source-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
|
||||
|
||||
inherit cmake pkgconfig
|
||||
|
||||
# Depend explicitly on clang-native instead of using TOOLCHAIN as the build
|
||||
# objects from this recipe are build explicitly using clang for GPU targets.
|
||||
# We could INHIBIT_DEFAULT_DEPS to avoid any other toolchain but then we need
|
||||
# to wrestle CMake to configure without a toolchain.
|
||||
DEPENDS += "clang-native spirv-llvm-translator-native"
|
||||
|
||||
OECMAKE_SOURCEPATH = "${S}/libclc"
|
||||
|
||||
# Semicolon-separated list of targets to build
|
||||
LIBCLC_TARGETS ?= "all"
|
||||
|
||||
EXTRA_OECMAKE += "-DLIBCLC_TARGETS_TO_BUILD='${LIBCLC_TARGETS}'"
|
||||
|
||||
FILES:${PN} += "${datadir}/clc"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
@@ -1,27 +0,0 @@
|
||||
SUMMARY = "Implementation of the library requirements of the OpenCL C programming language."
|
||||
HOMEPAGE = "https://libclc.llvm.org"
|
||||
SECTION = "devel"
|
||||
|
||||
require recipes-devtools/clang/common-clang.inc
|
||||
require recipes-devtools/clang/common-source.inc
|
||||
|
||||
LIC_FILES_CHKSUM = "file://libclc/LICENSE.TXT;md5=7cc795f6cbb2d801d84336b83c8017db"
|
||||
|
||||
inherit cmake pkgconfig
|
||||
|
||||
# Depend explicitly on clang-native instead of using TOOLCHAIN as the build
|
||||
# objects from this recipe are build explicitly using clang for GPU targets.
|
||||
# We could INHIBIT_DEFAULT_DEPS to avoid any other toolchain but then we need
|
||||
# to wrestle CMake to configure without a toolchain.
|
||||
DEPENDS += "clang-native spirv-llvm-translator-native"
|
||||
|
||||
OECMAKE_SOURCEPATH = "${S}/libclc"
|
||||
|
||||
# Semicolon-separated list of targets to build
|
||||
LIBCLC_TARGETS ?= "all"
|
||||
|
||||
EXTRA_OECMAKE += "-DLIBCLC_TARGETS_TO_BUILD='${LIBCLC_TARGETS}'"
|
||||
|
||||
FILES:${PN} += "${datadir}/clc"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
Reference in new issue
Block a user