Brings following bugfixes on top of 21.1.3
222fc11f2b8f Bump version to 21.1.4
480a90482e5b release/21.x: [clang-format] Fix a crash on BAS_BlockIndent (#164047)
3333dd88a493 Update clang/lib/Format/TokenAnnotator.cpp
54cdd973782e [clang-format] Annotate ::operator and Foo::operator correctly (#164048)
ceeb93096c79 [libclang/python] Return None instead of null cursors from Token.cursor (#163183)
7e153f5372ed [clang-format] Fix an assertion failure on comment-only config files (#163111)
faca424bc5f7 [clang-format] Correctly handle backward compatibility of C headers (#159908)
c5a3aa8934b0 [libc++] Properly implement array cookies in the ARM ABI (#160182)
0d819a9104b2 [libunwind] Fix aarch64 SEH unwinding with a debugger attached (#162867)
464d75ad5f26 [MachinePipeliner] Add test missed in #154940 (NFC) (#163350)
ffa6b0c365ec [MachinePipeliner] Limit the number of stores in BB (#154940)
570c4c944338 [clang] Fix catching pointers by reference on mingw targets (#162546)
c6af6be3cd1c [libc++][docs] Add missing entry for P3379R0 to `21.rst`
a2e93dce5f2b [Hexagon][llvm-objdump] Start a fresh packet at symbol boundaries. (#163466)
dfdee9a929aa [clang][modules] Derive mtime from PCM timestamps, not PCM files (#162965)
bd9bc536b4ac [LLD] [COFF] Fix aarch64 delayimport of sret arguments (#163096)
7b785dcb70f6 [LLD][COFF] Fix tailMergeARM64 delayload thunk 128 MB range limitation (#161844)
a847f1832857 [Hexagon] Support lowering of setuo & seto for vector types in Hexagon (#158740)
e14b5e82244e [clang-format] Fix a bug in wrapping { after else (#161048)
b54051ac74cb [clang-format] Correctly annotate RequiresExpressionLBrace (#155773)
c9fbd571b52c dfsan: Fix test with gcc 15.
68f118f265c9 Switch dtls_test.c from XFAIL to UNSUPPORTED on aarch64.
a86b1e397e90 compiler-rt: Make the tests pass on AArch64 and with page size != 4096.
c03b58bb091e [clangd] Fix code action kind for readability-identifier-naming fixes (#162808)
caef7619d5fd [clang-format] Fix a bug in OneLineFormatOffRegex (#162961)
5386abc82ab8 [libc++][ranges] Fix `ranges::join_view` segmented iterator trait (#158347)
18593ab316f6 workflows/release-binaries: Run tests on the same runner as the build (#162421)
13bee3a798b1 [Mips] Fix clang crashes when assembling invalid MIPS beql instructions with --arch=mips (#156413)
0d1b9249d189 [CI] Add dyung and c-rhodes to the Release Asset List (#162478)
c000f3226bdf [Mips] Fixed libunwind::Registers_mips_o32::jumpto to allow for load delay (#152942)
276050887539 [LLDB][ProcessWindows] Set exit status on instance rather than going through all targets (#159308)
(From OE-Core rev: 343b2e113322859c6c3021215acc498a94b69a0b)
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Fix following conflicts when enabling multilib.
Error: Transaction test error:
file /usr/include/llvm/Config/llvm-config.h conflicts between attempted installs of lib32-llvm-dev-21.1.3-r1.core2_32 and llvm-dev-21.1.3-r1.x86_64_v3
(From OE-Core rev: 886b0fb60a0b2ebbe3186c790db6e0a41eeb8741)
Signed-off-by: Liu Yiding <liuyd.fnst@fujitsu.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Updated the Rust build to depend on llvm instead.
*Summary of discussion with the rust upstream about using latest LLVM instead of Rust maintained LLVM fork.
https://internals.rust-lang.org/t/can-we-use-proper-clang-instead-of-llvm-fork-what-rust-uses/23489
*Upstream LLVM is generally compatible:
- Rust does support building with upstream (vanilla) LLVM, especially the latest
major release and the one or two preceding ones.
https://rustc-dev-guide.rust-lang.org/backend/updating-llvm.html#updating-llvm
*Impact on Yocto Rust upgrades:
- Rust upgrades shall always check for updates on rust forked llvm and backport
the relevant patches to llvm.
*Regarding the rust forked llvm local patches:
- There are no local patches on rust forked llvm other than the backported fixes
from llvm master.
*We are copying the natively built `llvm-config` binary into the target sysroot and running
it. However, this `llvm-config` has compile time dependencies on various other arch's LLVM
libraries because native-llvm is built for all oe-core supported targets.
Attempting to work around this by symlinking the missing libraries from the native sysroot
into the target sysroot leads to mixed architectures in the final `.rlib`. Specifically,
the object files extracted from those symlinked libraries within `librustc_llvm-<hash>.rlib`
are built for the host, while others are correctly built for the target This results in linker
failures due to file format not recognized.
To resolve this, we now build llvm-target also for all oe-core supported architectures in
addition to the native-llvm build. This ensures that `llvm-config` and all associated
libraries are built for the correct target, eliminating cross-architecture contamination
and linker issues.
*We are enabling -DLLVM_INSTALL_UTILS=ON to ensure essential LLVM utilities like FileCheck
are available, as they are required by the Rust build.
Without this, the build fails with an error as below:
| thread 'main' panicked at src/bootstrap/src/core/sanity.rs:315:21:
| FileCheck executable "poky/build/tmp/work/x86_64-linux/rust-native/1.90.0/recipe-sysroot
-native/usr/bin/FileCheck" does not exist
*We now add these flags "-Clink-arg=-lz -Clink-arg=-lzstd" because of this following
diff otherwise we will get errors during link time.
Setup in rust-llvm
-DLLVM_ENABLE_ZLIB=OFF \
-DLLVM_ENABLE_ZSTD=OFF \
-DLLVM_ENABLE_FFI=OFF \
Setup in llvm
-DLLVM_ENABLE_FFI=ON \
*When multilibs enabled:
llvm-config expects static libraries to be located in the lib directory rather than
lib64. However, since we are copying the natively built llvm-config to target sysroot
and running it and llvm-config doesn't know anything about lib64 existence. To accommodate
this without breaking multilib behavior, we are creating a symlink from 'lib' to 'lib64'
directory.
Previously, when we depended on rust-llvm, this worked because we specified:
-DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust
With this setup, llvm-config was installed inside ${libdir}/llvm-rust, which included
its own bin and lib directories. Thus, llvm-config located in bin would correctly find
the libraries in the adjacent lib directory.
Even when multilib was enabled or not, llvm-config would still look for libraries under
lib in this structure, so everything functioned as expected.
(From OE-Core rev: 9b0a3484626ecb5e58004572caac7a8e8f86980c)
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This musl-related fix to TargetLibraryInfo has been obsolete since LLVM
version 5.0 as it was fixed in a different way:
commit d21529fa0df71327aab230786e345b2071f4ac4f
Author: David L. Jones <dlj@google.com>
Date: Mon Jan 23 23:16:46 2017 +0000
[Analysis] Add LibFunc_ prefix to enums in TargetLibraryInfo. (NFC)
Summary:
The LibFunc::Func enum holds enumerators named for libc functions.
Unfortunately, there are real situations, including libc implementations, where
function names are actually macros (musl uses "#define fopen64 fopen", for
example; any other transitively visible macro would have similar effects).
Strictly speaking, a conforming C++ Standard Library should provide any such
macros as functions instead (via <cstdio>). However, there are some "library"
functions which are not part of the standard, and thus not subject to this
rule (fopen64, for example). So, in order to be both portable and consistent,
the enum should not use the bare function names.
The old enum naming used a namespace LibFunc and an enum Func, with bare
enumerators. This patch changes LibFunc to be an enum with enumerators prefixed
with "LibFFunc_". (Unfortunately, a scoped enum is not sufficient to override
macros.)
(From OE-Core rev: 426504625c67dd8235a72a1128452c1592462ff3)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Remove perlnative inherit, this recipe does not depend on non-standard
perl (or any perl, in fact).
Remove python3native inherit, this recipe does not depend on non-standard
Python modules. python3-native will still be pulled into the sysroot via
python3targetconfig however.
Remove PACKAGECONFIG:remove:powerpc, as powerpc is explicitly marked as
not compatible later in the recipe.
Remove LLVM_ENABLE_PER_TARGET_RUNTIME_DIR, this is only used during
monolithic builds of llvm.
Remove OPENMP_STANDALONE_BUILD, this is automatically detected when
building.
Remove CMAKE_POSITION_INDEPENDENT_CODE, this is the default value.
Remove all _TOOL, these are not used.
(From OE-Core rev: 87bb7e18e8a37803ec7c96c640347ac515d073d2)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
brings following fixes
* 450f52eec88f Bump version to 21.1.3.
* 05b5090e961f Port 5b4819e to release/21.x
* 2cb08dbb39b1 [compiler-rt][sanitizer] fix msghdr for musl (#136195)
* 6e687cbe0dd3 [SPARC] Prevent meta instructions from being inserted into delay slots (#161111)
* f8151a1d2c86 [clang] [Headers] Don't use unreserved names in avx10_2bf16intrin.h (#161824)
* 9ee4ac8a8359 [clang][SPARC] Pass 16-aligned structs with the correct alignment in CC (#155829)
* 220bac16a417 [Hexagon] Add opcode V6_vS32Ub_npred_ai for offset validity check (#161618)
* a867bd53e861 [clang][PAC] Don't try to diagnose use of pointer auth on dependent types #159505 (#159859)
* 41e817a1d1f4 release/21.x: [clang-format] Fix bugs in annotating arrows and square brackets (#160973)
* 559d966bcb54 [Mips] Fix atomic min/max generate mips4 instructions when compiling for mips2 (#159717)
* d1e2f8916128 [LLD] [COFF] Fix symbol names for import thunks (#160694)
* 0060034c6a0b [analyzer] Revert #115918, so empty base class optimization works again (#157480)
* 31e4363ba9c2 [NVPTX] Disable relative lookup tables (#159748)
* 74cb34a6f51a Bump version to 21.1.3
(From OE-Core rev: 4a590bdd8794c6873f9ff0dc6d988d62f5b2ca5c)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Whilst the change to add TMPDIR to GIT_CEILING_DIRECTORIES should stop
LLVM from embedding git information into the recipes, also disable this
behaviour explicitly.
We do this because it's not just the sha of the source tree but also
the full URL of the repository, which would be an information leak if
an internal git mirror was being used.
(From OE-Core rev: 9247e242bf0e2384142427b67e5f1f7b4018c45d)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Change this recipe to build just clang and clang-tools-extra, using the
LLVM provided by the llvm recipe.
This adds an 'extra-tools' PACKAGECONFIG (enabled by default) that
controls whether to build the clang-tools-extra project. This includes
clang-tidy and clangd, but the compile time and size for these
components is not insignificant.
Add a patch from upstream to support using native prebuilt tools (such
as clang-tblgen) when building standalone.
Add a patch that is being worked on with upstream to not rebuild clang-
tblgen if it has already been provided. This saves a little build time,
but more importantly for us resolves a static linking/uninative problem.
Remove the dependency on clang-cross in non-native builds by just
depending on llvm-native and using the un-prefixed tools directly.
(From OE-Core rev: d76dc362c8e18779cc4ddc6a778fb423c0e66a65)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Whilst it's convenient to build all of the LLVM project in one big
recipe, that's not ideal when we may just need LLVM on target and not
the rest.
Bring back a LLVM recipe that can be used by both clang (shortly) and
Rust (in the future)
Set the build type to MinSizeRel and DEBUG_LEVELFLAG to -g1 (instead of
the default, -g): the LLVM debug symbols are very large (several
gigabytes) and this reduces them to hundreds of megabytes.
(From OE-Core rev: 448f4a84cb22c380d97e069d0b98ddbe1cb8de18)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Various bits of the LLVM project set the build RPATH in a way that means
we have non-deterministic binaries even though we should always be using
relative paths.
This clearly is not working as some of the binaries get rewritten on
install and have large string paddings that correlate with erased build
paths.
So that we don't have to disable RPATHs in every recipe, just do it once
in the common include file and remove the existing recipe-specific
assignments that are now not needed.
(From OE-Core rev: acc8c5c89c0f1bff3413d2301a65afd89bd0d9ff)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Brings following bugfixes on top of 21.1.1
b708aea0bc71 [SCEV] Don't perform implication checks with many predicates (#158652)
77a3b0eda361 [RISCV] Refactor RVV builtin code generation for reduce compilation time [NFC] (#154906)
f14551dbc4e8 [RISCV] Reduce ManualCodeGen for RVV intrinsics with rounding mode. NFC
dcc2c1c933be [RISCV] Reduce ManualCodeGen for segment load/store intrinsics. NFC
e625a781211e [LLVM] Update CUDA ELF flags for their new ABI (#149534)
3e93017936b5 MC: Better handle backslash-escaped symbols (#158780)
bc5e9a5e2009 [MC] Add parseSymbol() helper (NFC) (#158106)
e2e5eb2f1cd9 [Loads] Check for overflow when adding MaxPtrDiff + Offset.
661c387fc2f1 release/21.x: [VPlan] Don't narrow op multiple times in narrowInterleaveGroups.
f5c1b5206cbe [PowerPC] Avoid working on deleted node in ext bool trunc combine (#160050)
db70369f400e [Clang] Fix an error-recovery crash after d1a80dea (#159976)
9c8736f348e0 [ELF] -r/--emit-relocs: Fix crash when processing .rela.text before .text (#156354)
15a31832eab7 [RISCV] Re-work how VWADD_W_VL and similar _W_VL nodes are handled in combineOp_VLToVWOp_VL. (#159205)
f089fb21fffa [LoongArch] Fix MergeBaseOffset for constant pool index operand (#159336)
9eedaf5b1001 [VectorCombine] Fix scalarizeExtExtract for big-endian (#157962)
5af5cfb60d9e [clang-format] Handle C digit separators (#158418)
0174263ac214 Bump version to 21.1.2
ff039a98523f [RISCV] Support PreserveMost calling convention (#148214)
1a644bc50948 [X86] Fix assertion in AVX512 setcc combine due to invalid APInt mask width (#155775)
2c8cb316b5d2 [lldb][test] Only assert function name is in user-code on Darwin platforms
f5ba88341e7c [lldb][test] TestTsanBasic.py: fix function name assertion
faedeb1a2420 [lldb][Instrumentation] Set selected frame to outside sanitizer libraries (#133079)
54896838ca5e [lldb][Target] Clear selected frame index after a StopInfo::PerformAction (#133078)
f4907049285c [Clang][Cygwin] Use correct mangling rule (#158404)
(From OE-Core rev: bf15536de8fe99849eef0696455b5679b0f7a9d5)
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This is the recommended build configuration upstream unless speed is the
ultimate goal. They say it's almost as fast as Release (-O3) but a lot
smaller on disk:
clang-libclang-cpp: PKGSIZE changed from 71729568 to 49368816 (-31%)
clang-libllvm: PKGSIZE changed from 83015559 to 56662823 (-32%)
clang-tidy: PKGSIZE changed from 15861679 to 9956175 (-37%)
clang-tools: PKGSIZE changed from 6865635 to 5374691 (-22%)
clang: PKGSIZE changed from 29693308 to 22697548 (-24%)
libclang: PKGSIZE changed from 40087018 to 26966218 (-33%)
(From OE-Core rev: ea9b33f7c12f773830ec860ae817a3ed1368612b)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The LLVMConfig.cmake file is mostly LLVM configuration, but it also
specifies if some Python modules (needed by the opt-viewer tool) were
present on the build host.
This is host contamination and a source of non-determinism, so remove it
from the installed file.
A ticket has been filed upstream to resolve this:
https://github.com/llvm/llvm-project/issues/161199
(From OE-Core rev: 916c074a136e8e07f388c2c41d197a15a4c50022)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
These are only needed if cross-compiling clang, and if someone is
cross-compiling clang in a SDK they should build their own binaries as
these ones might not match the version of clang they're building.
(From OE-Core rev: c79837a11ccf0f3e5a8ccab4ffb379cdefe482e8)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If we pass CROSS_TOOLCHAIN_FLAGS_NATIVE to all the builds, instead of
just nativesdk, then clang can correctly build its own native tools as
needed.
This means we can stop manually installing clang-tidy-confusable-chars-gen
as clang-tidy will build it. We (currently) still build the tblgen
binaries once as they're used in several recipes so there's likely value
in building those once.
Also consolidate the LLVM_TABLEGEN variables as they're not specific to
a particular class.
(From OE-Core rev: 36b42975b975b4a5e3904e555e5ee00aba9c2f2b)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Backport a patch from upstream to install lldb-tblgen, and change the
llvm-tblgen-native recipe to use `cmake --install` instead of copying
the binaries.
This ensures that CMake does any post-install steps that are needed, and
we don't install binaries that have eg RPATHs pointing at the build tree.
(From OE-Core rev: 93051e8730263cfc23e1230015a4789dac4914de)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
clang-pseudo and clang-rename have both been removed from upstream, so
don't try to install them anymore:
llvm 40c45b6b4318 ("Remove clang-rename (#108988)")
llvm ed8f78827895 ("Remove clang-pseudo (#109154)")
(From OE-Core rev: ac2a625c9a28a692b87a073aca95197e9d08842b)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Quoting from the README:
llvm-exegesis is a benchmarking tool that accepts or generates
snippets and can measure characteristics of those snippets by
executing it while keeping track of performance counters.
Potentially useful but not essential. This reduces the size of llvm-bin
by ~30MB and llvm-dbg by ~1100MB.
(From OE-Core rev: ed688027468237f4dd258089d4c3ee5f8a9159bb)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
We don't install the tests, or run them in the build tree, so tell cmake
not to generate the targets at all. This removes internal dependencies
which means we can turn off more components that we don't want.
(From OE-Core rev: ba358a03c97cb904248b743c483a7b3f4b9159a9)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Instead of patching the python module detection, we can use the hidden
option LLVM_TOOL_OPT_VIEWER_BUILD.
(From OE-Core rev: ddbbd49c15bad1b2a550188581ffebd752b9b20e)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Splitting llvm, tblgen into their own recipes means we
have to ensure nativesdk clang build can find these tools
in native sysroot, which is would previously build and use
on its own.
(From OE-Core rev: d5fa7bc2dfa7f618a742c76d20fba4437f2cdecf)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Clang gates enabling of several backends (AMDGPU, NVPTX and SPIR-V) by
the GPU-related distro features (opengl, vulkan). Now as we got a
separate feature for OpenCL, enable those backends for the OpenCL-only
configurations.
(From OE-Core rev: f230b16eac089d2d06574a0593076478afc7455e)
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Brings following bugfixes on top of 21.1.0
* 5a86dc996c26 [Xtensa] Fix lowering FP compare operations.
* bb383adfafca [SCEVExp] Fix early exit in ComputeEndCheck. (#156910)
* 2daad319889d [LV] Don't run instcombine for interleaved-accesses test.
* 2d726485a4a3 [LV] Add more tests for interleave groups requiring predicates.
* 81d3b6ee82bf [X86] Only fold AND/ANDNP back to VSELECT if we know the predicated mask select is legal (#156663)
* 41df6d5e08b0 [CMake][AIX] Enable CMP0182: Create shared library archives by default (#155686)
* 35f812f23263 compiler-rt: Use OpenBSD's elf_aux_info to detect AArch64 HW features (#155768)
* c75a0754d358 [builtins] Rename freebsd to elf_aux_info to reflect the function called. NFCI (#155749)
* 0bbb93672952 [libc++] Fix broken precondition of __bit_log2 (#155476)
* 677a8a2d3c5a [compiler-rt] Remove leftovers of FreeBSD md5/sha2 interceptors (#153351)
* fa462a66e418 [lldb][DataFormatter] Allow std::string formatters to match against custom allocators (#156050)
* 12fbb344a1e8 [Coroutines] Restore accidentally dropped intrinsic IDs
* 160ad51687cc [clang][docs] Fix implicit-int-conversion-on-negation typos
* e0d94d9626e4 [lldb][DWARFASTParserClang] Don't complete conflicting Objective-C++ types (#156681)
* b4274c3bc8ee [DebugInfo] When referencing structured bindings use the reference's location, not the binding's declaration's location (#153637)
* 7a077a1b312b [libc++][AIX] Fixup problems with ABI list checking (#155643)
* 85e3f8ec7ff6 Remove EH_LABEL comments from tests
* 3751e53c3e89 [AArch64][BTI] Add BTI at EH entries. (#155308)
* f8a0ecfc6108 [compiler-rt] Avoid depending on the libnvmm header for NetBSD (#153534)
* 113916ccf75f [lldb][ClangASTImporter] Don't ASTImport LambdaExpr nodes (#154962)
* 362b99f60ef5 [libcxx][fstream][NFC] Make __failed helper lambda a member function (#149390)
* b7c18c1e7ac0 [libc++] Ensure that we restore invariants in basic_filebuf::overflow (#147389)
* b63daf6312ab [RISCV] Cost casts with illegal types that can't be legalized (#153030)
* ca11cf3afa42 [clang-format] Use proper flags for git diff-tree (#155247)
* 27f0e6e579b7 [clang][PAC] Fix builtins that claim address discriminated types are bitwise compatible (#154490)
* e35cb1a59b3e [clang] Make sure EvalInfo pointer isn't null (#155563)
* acabba4f6d30 [NVPTX] don't erase CopyToRegs when folding movs into loads (#149393)
* 0e5c3f9b58b9 [mlir][cmake] Fix mlir target export (#153341)
* 1f1a20bcb03d [AArch64][PAC] Do not execute AUT instructions speculatively (#155372)
* d69907d99beb [AArch64][PAC] Fix clobbering registers by BLRA and AUTH_TCRETURN (#155373)
* 9f3f813c94f5 Add pointer auth documentation to contents (#155763)
* 7dbfe40cb318 [libc++] Disable cv-qualified arithmetic hash specializations (#155786)
* ef3a6bd37c15 [Clang][CMake] Use IRPGO instead of FE PGO for Cmake Caches (#155957)
* 35215b6412b4 [SLP]Do not to try to revectorize previously vectorized phis in loops
* 64dd5399f7a1 [sanitizer_common] Older Haiku needs _GNU_SOURCE (#156291)
* 95608643573a [LoongArch] Fix broadcast load with extension. (#155960)
* 0d6736704f38 [X86] getScalarMaskingNode - if the mask is zero just return the blended passthrough and preserved source value (#153575)
* 1db648d1016d [release] Correct download links for Windows on Arm packages (#156459)
* 562605cef22a ThinLTOBitcodeWriter: Emit __cfi_check to full LTO part of bitcode file.
* 33e18acf4a03 [Analyzer] No longer crash with VLA operands to unary type traits (#151719)
* 8b6caff342c3 Bump version to 21.1.1
(From OE-Core rev: 98a1ef53e6f3d10b3cc65ea3dd107300cf2cb722)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Currently CVE_PRODUCT is set to llvm:llvm from common.inc.
There is historical entry for openmp in the DB.
This entry is ignored, but it shows that there can also be future ones.
(From OE-Core rev: ba94d5f1756647ce9d4ddd664bdf6fc975f952cd)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
cross-unwinding can pass exception across runtimes e.g.
Multi-language applications ( nodejs native modules, python C extensions )
However, cross-unwinding is not default in libcxx for sometime [1]
it requires special handling at runtime by apps who use it
Switch recipe defaults to upstream defaults, which is to turn it off
This means native unwinding ( with in same runtime )
is build by default which is the most common case.
This also fixes libcxx/libunwind build errors
when enabling TC_CXX_RUNTIME = "llvm" on aarch64 particularly
[1] 85624c5de3
(From OE-Core rev: 88e1214e01c48b174aa9516c60e15a0dfb69e10f)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The optimization viewer is a web-based tool that helps developers visualize
and analyze LLVM's optimization passes. It generates reports showing
Which optimizations were applied to specific functions.
Why certain optimizations were or weren't performed.
Performance remarks and missed optimization opportunities
Interactive views of the optimization pipeline.
Its a nice add-on, keep it disabled by default.
(From OE-Core rev: 70c43e35fb7ce0b71f28a91a1864f02338545522)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The environment has variables like LDFLAGS set which CMake will try and
use, so until our cmake class is comprehensive enough to nuke those in
the native toolchain file (if that is possible) do a build inside a
clean (apart from PATH) environment to avoid cross-contamination.
As noticed by Khem Raj, this can fail in nativesdk builds as the target
flags will be passed to the native link resulting in failures like:
Requesting program interpreter: /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-yoesdk-linux/lib/ld-linux-x86-64.so.2
(From OE-Core rev: 0013f501d1de01606b812d930ef6ca842633f551)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
'cross' dependencies are hard, the code currently handles adding MLPREFIX
in these cases but may not in future depending upon implementation.
Add the correct value explictly.
(From OE-Core rev: 8393be1792cee0fbe76d75fd20a97dda41134880)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The lld linker is a standalone project under the LLVM umbrella that just
depends on libLLVM and nothing else, such as clang.
To reduce the build time of clang if lld is not being used, split it out
into a separate recipe.
To ensure that lld is present if needed, the clang-cross recipe will
depend on lld-native if ld-is-lld is enable.
(From OE-Core rev: 5212b69f892af8c9b080fee2c21533a2bbdd2755)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
LLDB Uses SWIG to generate python bindings, however
LLDB is no longer part of clang anymore, its a
separate recipe.
(From OE-Core rev: deda1e227dbdcb04c7bfb0ad0afef6ff05674c4f)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
None of these recipes need a native build of Python as they don't depend
on native Python modules, nor build Python modules against the target.
(From OE-Core rev: e0da53fca5ec30d883216bfb0be7d96ad597aa69)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Now that lldb has been split out of the clang recipe, there's no need
for the clang recipe to have Python integration beyond the current
Python major version for installing the libclang bindings, which can be
done by simply inheriting python3-dir.
The installation of six.py was done by lldb, and was removed in LLVM 16.
(From OE-Core rev: 5cbe58c604233a0d367e1bb1e3fce0492ae0e836)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Specifically, c-index-test is a 35MB binary which isn't needed if we're
not running the tests.
(From OE-Core rev: a61c3ab08039d382ec2216b8a5deaf256d7bf9c5)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This was added by a certain Mr Burton back in 2016[1] to avoid needing
to depend on perl-native or python3-native, and use the host perl and
python.
However, perl is no longer needed and python3-native is depended on
because the Python bindings are build, so this is now redundant.
[1] meta-clang: 2e003cc ("clang: don't depend on native perl or python")
(From OE-Core rev: 540b02e0fb168fade2afc1d657463c7e0248ae94)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
As a single clang-native build is a cross-compiler for all targets, this
recipe should simply create target-prefixed symlinks.
As such, it doesn't need to pull in the common clang include files, or
set TOOLCHAIN.
Unsetting PACKAGES isn't needed as cross inherits nopackages.
The sysroot preprocessing is used to stage bindir, but cross recipes
already stage this directory.
There doesn't appear to be a need to copy clang, so these are now linked
too.
SSTATE_SCAN_FILES only works on actual files not symlinks, so setting it
is pointless.
(From OE-Core rev: 5d96ed55acf7b9a908241222097ad809355de7cf)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Provide libunwind based on TC_CXX_RUNTIME
When TC_CXX_RUNTIME is set to be 'llvm' distro wants
to use llvm provided runtime elements therefore provide
libunwind when TC_CXX_RUNTIME = "llvm"
(From OE-Core rev: 61cf402d5bf95094a02d4ea3b1a60cecc04aa0f4)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
These functions are useful outside of just the clang recipe, so move
them to a common .inc file so they can be used by other clang-related
recipes.
Also make the function fail if it doesn't recognise the architecture,
instead of returning the empty string and causing mysterious fails later.
(From OE-Core rev: 1d5298533e97dab7636f885ddd740352782395b0)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
LLDB defaults to adding rpaths into the binaries which are then stripped
by CMake on install.
However, this rpath removal is implemented by editing the binary instead
of relinking at install time, so the final binary will have an entry in
the dynstr section which is all nulls but is as long as the build path.
Obviously this breaks reproducibility, so disable the use of rpaths in
LLDB to remove this problem.
(From OE-Core rev: d96e0458b696a7359d310cbe112c5dc2fc60f97d)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
LLDB links to clang libraries, so it really does need clang and not just
LLVM.
(From OE-Core rev: 1a37bb2f0bbdbd599e1d5967eae1ecde4eff6a80)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Set LLVM_HEADERS_TBLGEN so that we don't build another copy of tblgen.
Also remove LLVM_OPTIMIZED_TABLEGEN, this is redundant as we're not
building a tablegen binary in this recipe anymore.
(From OE-Core rev: 259a3e9a8281c4e9ab73dee82738f359f029b78d)
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>