SuccessChanges

Summary

  1. [lldb][NFC] Resynchronize Init/Terminate calls in (details)
  2. [LLD][ELF][ARM][AArch64] Only round up ThunkSection Size when large OS. (details)
  3. [AArch64][SVE] Add ImmArg property to intrinsics with immediates (details)
Commit c3ab790c8f5d2946c3e4e4bf78cedf6be11a6f5a by Raphael Isemann
[lldb][NFC] Resynchronize Init/Terminate calls in
SystemInitializerFull/Test.cpp files.
These files should do the more or less the same initialize/terminate
calls in the same order. This just reverts all the differences that have
piled up over time in the SystemInitializerTest that people keep
forgetting about.
The file was modifiedlldb/tools/lldb-test/SystemInitializerTest.cpp
Commit 01ad4c838466bd5db180608050ed8ccb3b62d136 by peter.smith
[LLD][ELF][ARM][AArch64] Only round up ThunkSection Size when large OS.
In D71281 a fix was put in to round up the size of a ThunkSection to the
nearest 4KiB when performing errata patching. This fixed a problem with
a very large instrumented program that had thunks and patches mutually
trigger each other. Unfortunately it triggers an assertion failure in an
AArch64 allyesconfig build of the kernel. There is a specific assertion
preventing an InputSectionDescription being larger than 4KiB. This will
always trigger if there is at least one Thunk needed in that
InputSectionDescription, which is possible for an allyesconfig build.
Abstractly the problem case is:
.text : {
         *(.text) ;
         ...
         . = ALIGN(SZ_4K);
         __idmap_text_start = .;
         *(.idmap.text)
         __idmap_text_end = .;
         ...
       } The assertion checks that __idmap_text_end - __idmap_start is <
4 KiB. Note that there is more than one InputSectionDescription in the
OutputSection so we can't just restrict the fix to OutputSections
smaller than 4 KiB.
The fix presented here limits the D71281 to InputSectionDescriptions
that meet the following conditions: 1.) The OutputSection is bigger than
the thunkSectionSpacing so adding thunks will affect the addresses of
following code. 2.) The InputSectionDescription is larger than 4 KiB.
This will prevent any assertion failures that an InputSectionDescription
is < 4 KiB in size.
We do this at ThunkSection creation time as at this point we know that
the addresses are stable and up to date prior to adding the thunks as
assignAddresses() will have been called immediately prior to thunk
generation.
The fix reverts the two tests affected by D71281 to their original state
as they no longer need the 4KiB size roundup. I've added simpler tests
to check for D71281 when the OutputSection size is larger than the
ThunkSection spacing.
Fixes https://github.com/ClangBuiltLinux/linux/issues/812
Differential Revision: https://reviews.llvm.org/D72344
The file was modifiedlld/test/ELF/aarch64-cortex-a53-843419-thunk.s
The file was modifiedlld/test/ELF/arm-fix-cortex-a8-thunk.s
The file was modifiedlld/ELF/SyntheticSections.h
The file was addedlld/test/ELF/aarch64-cortex-a53-843419-thunk-align.s
The file was modifiedlld/ELF/SyntheticSections.cpp
The file was modifiedlld/ELF/Relocations.cpp
The file was addedlld/test/ELF/arm-fix-cortex-a8-thunk-align.s
Commit fe3bb8ec9683559fe839ef883e189e5dcf0c5af2 by kerry.mclaughlin
[AArch64][SVE] Add ImmArg property to intrinsics with immediates
Summary: Several SVE intrinsics with immediate arguments (including
those added by D70253 & D70437) do not use the ImmArg property. This
patch adds ImmArg<Op> where required and changes the appropriate
patterns which match the immediates.
Reviewers: efriedma, sdesmalen, andwar, rengolin
Reviewed By: efriedma
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl,
cfe-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D72612
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrFormats.td
The file was modifiedllvm/include/llvm/IR/IntrinsicsAArch64.td
The file was modifiedllvm/lib/Target/AArch64/SVEInstrFormats.td