summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp
diff options
context:
space:
mode:
authorPeter Smith <peter.smith@linaro.org>2019-12-10 08:29:23 +0000
committerPeter Smith <peter.smith@linaro.org>2019-12-11 14:09:15 +0000
commit86d24193a9eb45d7bf3745fc2de96cd4e197b08a (patch)
tree89a8604433f054a3f8cbce3b2059602beff788d1 /lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp
parent247b2ce11cf0b9efeb3c1b0394dcc87ccab7be41 (diff)
downloadbcm5719-llvm-86d24193a9eb45d7bf3745fc2de96cd4e197b08a.tar.gz
bcm5719-llvm-86d24193a9eb45d7bf3745fc2de96cd4e197b08a.zip
[LLD][ELF][AArch64][ARM] When errata patching, round thunk size to 4KiB.
On some edge cases such as Chromium compiled with full instrumentation we have a .text section over twice the size of the maximum branch range and the instrumented code generation containing many examples of the erratum sequence. The combination of Thunks and many erratum sequences causes finalizeAddressDependentContent() to not converge. We end up with: start - Thunk Creation (disturbs addresses after thunks, creating more patches) - Patch Creation (disturbs addresses after patches, creating more thunks) - goto start In most images with few thunks and patches the mutual disturbance does not cause convergence problems. As the .text size and number of patches go up the risk increases. A way to prevent the thunk creation from interfering with patch creation is to round up the size of the thunks to a 4KiB boundary when the erratum patch is enabled. As the erratum sequence only triggers when an instruction sequence starts at 0xff8 or 0xffc modulo (4 KiB) by making the thunks not affect addresses modulo (4 KiB) we prevent thunks from interfering with the patch. The patches themselves could be aggregated in the same way that Thunks are within ThunkSections and we could round up the size in the same way. This would reduce the number of patches created in a .text section size > 128 MiB but would not likely help convergence problems. Differential Revision: https://reviews.llvm.org/D71281 fixes (remaining part of) pr44071, other part in D71242
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud