Commit
61f25daa8d1b69dd5138facd5d57a8e3dfa0c5cc
by alexandros.lamprineas[ARM][CMSE] Clear the secure fp-registers when using softfp abi.
When expanding the non-secure call instruction we are emiting code to clear the secure floating-point registers only if the targeted architecture has floating-point support. The potential problem is when the source code containing non-secure calls are built with -mfloat-abi=soft but some other part of the system has been built with -mfloat-abi=softfp (soft and softfp are compatible as they use the same procedure calling standard). In this case floating-point registers could leak to non-secure state as the non-secure won't have cleared them assuming no floating point has been used.
Differential Revision: https://reviews.llvm.org/D109153
|
 | llvm/test/CodeGen/ARM/cmse-clear.ll |
 | llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp |
 | llvm/test/CodeGen/ARM/cmse.ll |
Commit
1bd5ea968e9262a09512a64bca1624818640bc5b
by alexandros.lamprineas[ARM] Mitigate the cve-2021-35465 security vulnurability.
Recently a vulnerability issue is found in the implementation of VLLDM instruction in the Arm Cortex-M33, Cortex-M35P and Cortex-M55. If the VLLDM instruction is abandoned due to an exception when it is partially completed, it is possible for subsequent non-secure handler to access and modify the partial restored register values. This vulnerability is identified as CVE-2021-35465.
The mitigation sequence varies between v8-m and v8.1-m as follows:
v8-m.main --------- mrs r5, control tst r5, #8 /* CONTROL_S.SFPA */ it ne .inst.w 0xeeb00a40 /* vmovne s0, s0 */ 1: vlldm sp /* Lazy restore of d0-d16 and FPSCR. */
v8.1-m.main ----------- vscclrm {vpr} /* Clear VPR. */ vlldm sp /* Lazy restore of d0-d16 and FPSCR. */
More details on developer.arm.com/support/arm-security-updates/vlldm-instruction-security-vulnerability
Differential Revision: https://reviews.llvm.org/D109157
|
 | llvm/lib/Target/ARM/ARM.td |
 | clang/include/clang/Driver/Options.td |
 | llvm/test/CodeGen/ARM/cmse-cve-2021-35465.ll |
 | clang/docs/ClangCommandLineReference.rst |
 | llvm/lib/Target/ARM/ARMSubtarget.h |
 | llvm/test/CodeGen/ARM/cmse-cve-2021-35465-return.ll |
 | clang/lib/Driver/ToolChains/Arch/ARM.cpp |
 | llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp |
 | llvm/test/CodeGen/ARM/cmse-vlldm-no-reorder.mir |
 | clang/test/Driver/arm-cmse-cve-2021-35465.c |
Commit
95ba9f957aa9887c0c1d41948529cfe1fc74d889
by fmayer[hwasan] print globals in symbolizer-friendly format.
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D109698
|
 | compiler-rt/lib/hwasan/hwasan_report.cpp |
 | compiler-rt/test/hwasan/TestCases/global.c |
Commit
2f97ff8e7bcf35595682b53fce8ecb7b4aabee6d
by flo[SLP] Add additional memory versioning tests.
|
 | llvm/test/Transforms/SLPVectorizer/AArch64/memory-runtime-checks.ll |
 | llvm/test/Transforms/SLPVectorizer/AArch64/memory-runtime-checks-in-loops.ll |
Commit
05ea321f716390abda1632cca71dc9441662cf62
by thakis[clang-cl] Fix test after 951f362e256 on systems where default target isn't x86_64
|
 | clang/test/Driver/cl-sysroot.cpp |
Commit
ab41eef9aca3ad5e9321e045a57d36e288a75d17
by bjorn.a.pettersson[NewPM] Use a separate struct for ModuleMemorySanitizerPass
Split MemorySanitizerPass into MemorySanitizerPass (as a function pass) and ModuleMemorySanitizerPass (as a module pass). Main reason is to make sure that we have a unique mapping from ClassName to PassName in the new passmanager framework, making it possible to correctly identify the passes when dealing with options such as -print-after and -print-pipeline-passes.
This is a follow-up to D105006 and D105007.
|
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/test/Other/new-pm-print-pipeline.ll |
 | clang/lib/CodeGen/BackendUtil.cpp |
 | llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp |
 | llvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h |
Commit
8f8616655c4d643d73601c6bf4b492fb9d3b52c8
by bjorn.a.pettersson[NewPM] Use a separate struct for ModuleThreadSanitizerPass
Split ThreadSanitizerPass into ThreadSanitizerPass (as a function pass) and ModuleThreadSanitizerPass (as a module pass). Main reason is to make sure that we have a unique mapping from ClassName to PassName in the new passmanager framework, making it possible to correctly identify the passes when dealing with options such as -print-after and -print-pipeline-passes.
This is a follow-up to D105006 and D105007.
|
 | clang/lib/CodeGen/BackendUtil.cpp |
 | llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp |
 | llvm/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h |
 | llvm/lib/Passes/PassRegistry.def |
Commit
d9fc3d879e6da153f9b892642e2fe28bed6254a7
by bjorn.a.pettersson[NewPM] Replace 'kasan-module' by 'asan-module<kernel>'
Change the asan-module pass into a MODULE_PASS_WITH_PARAMS in the pass registry, and add a single parameter called 'kernel' that can be set instead of having a special pass name 'kasan-module' to trigger that special pass config.
Main reason is to make sure that we have a unique mapping from ClassName to PassName in the new passmanager framework, making it possible to correctly identify the passes when dealing with options such as -print-after and -print-pipeline-passes.
This is a follow-up to D105006 and D105007.
|
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h |
 | llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp |
 | llvm/lib/Passes/PassRegistry.def |
Commit
1b0a71c5fc052322a45a8cb9a9fcaa2c36105b89
by zarko[PowerPC][AIX] Add support for varargs for complex types on AIX
Remove the previous error and add support for special handling of small complex types as in PPC64 ELF ABI. As in, generate code to load from varargs location and pack it in a temp variable, then return a pointer to the struct.
Reviewed By: sfertile
Differential Revision: https://reviews.llvm.org/D106393
|
 | clang/lib/CodeGen/TargetInfo.cpp |
 | clang/test/CodeGen/ppc64-varargs-complex.c |
 | clang/test/CodeGen/aix32-complex-varargs.c |
Commit
baa18ee63e83ee534a5844e6219665ce42b57707
by zhijianAdd a new API seek for the Cursor class in the DataExtractor.cpp
Summary:
add a new API seek for the Cursor class in the DataExtractor.cpp
Reviewers: James Henderson, Fangrui Song
Differential Revision: https://reviews.llvm.org/D109603
|
 | llvm/include/llvm/Support/DataExtractor.h |
 | llvm/unittests/Support/DataExtractorTest.cpp |
Commit
a773db7d76222ccf4365979e01dd582fd2b5b3df
by aschwaighoferAdd a command-line flag to control the Swift extended async frame info.
Introduce a new command-line flag `-swift-async-fp={auto|always|never}` that controls how code generation sets the Swift extended async frame info bit. There are three possibilities:
* `auto`: which determines how to set the bit based on deployment target, either statically or dynamically via `swift_async_extendedFramePointerFlags`. * `always`: the default, always set the bit statically, regardless of deployment target. * `never`: never set the bit, regardless of deployment target.
Patch by Doug Gregor <dgregor@apple.com>
Reviewed By: doug.gregor
Differential Revision: https://reviews.llvm.org/D109392
|
 | llvm/lib/Target/AArch64/AArch64FrameLowering.cpp |
 | llvm/test/CodeGen/X86/swift-dynamic-async-frame.ll |
 | llvm/test/CodeGen/AArch64/swift-dynamic-async-frame.ll |
 | llvm/lib/CodeGen/CommandFlags.cpp |
 | llvm/lib/Target/X86/X86FrameLowering.cpp |
 | llvm/include/llvm/CodeGen/CommandFlags.h |
 | llvm/include/llvm/Target/TargetOptions.h |
Commit
45a738363ee39754a0e93d9f779bda2cad83fa18
by Jake.EganIncrease expected line number for ExtDebugInfo.cpp
This patch increases the expected line number for one of the checks so that it doesn't have to be updated for any added/removed lines in the RUN section.
This change is in preparation for the following patch: https://reviews.llvm.org/D109060
Reviewed By: jsji
Differential Revision: https://reviews.llvm.org/D109541
|
 | clang/test/Modules/ExtDebugInfo.cpp |
Commit
ea79b77da3eeba926e16c3dd8a4f6626c139e185
by kadircet[clangd] Dont work on diags if we are not going to emit
Don't install clang-tidy checks and IncludeFixer or process clang diags when they're going to be dropped. Also disables analysis for some warnings completely.
Differential Revision: https://reviews.llvm.org/D109884
|
 | clang-tools-extra/clangd/unittests/ParsedASTTests.cpp |
 | clang-tools-extra/clangd/ParsedAST.cpp |
Commit
abe8b354e37d8d6a163a6402d8e68ddcfc462dfc
by Yaxun.LiuFix vtbl field addr space
Storing the vtable field of an object should use the same address space as the this pointer. Currently it is assumed to be addr space 0 but this may not be true.
This assumption (added in 054cc3b1b469de4b0cb25d1dc3af43c679c5dc44) caused issues for the out-of-tree CHERI targets.
Reviewed by: John McCall, Alexander Richardson
Differential Revision: https://reviews.llvm.org/D109841
|
 | clang/lib/CodeGen/CGClass.cpp |
Commit
64fe0458866d7bcadacb776a1fa7d827ba8ab916
by kadircet[clangd] PreamblePatch should be no-op if includes arent patched
Don't create a useless functional patch with only filename in it when there is only include directives to be patched but they're not requested.
Differential Revision: https://reviews.llvm.org/D109880
|
 | clang-tools-extra/clangd/unittests/PreambleTests.cpp |
 | clang-tools-extra/clangd/Preamble.cpp |
Commit
720766a50cab7a143f0aa04e3ae344769072511d
by erich.keaneRemove trailing whitespace in ASTReaderDecl.cpp
|
 | clang/lib/Serialization/ASTReaderDecl.cpp |
Commit
ffa5c3a555a8d5d9931d1ae6d6c9e873ff8c5510
by michael.hliaoFix warning on `llvm-else-after-return`. NFC.
|
 | llvm/lib/Analysis/AliasAnalysis.cpp |