diff options
author | Lang Hames <lhames@gmail.com> | 2025-02-06 10:50:41 +1100 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2025-02-06 11:02:06 +1100 |
commit | 88f55d16c4c247a9eef326961a1445dee3f2e30c (patch) | |
tree | 867e62eea3bcec39b9f6a8f693e1d019592e54a3 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | aefa30e2301f155d4f4737d6f6c55c66eac58b2d (diff) | |
download | llvm-88f55d16c4c247a9eef326961a1445dee3f2e30c.zip llvm-88f55d16c4c247a9eef326961a1445dee3f2e30c.tar.gz llvm-88f55d16c4c247a9eef326961a1445dee3f2e30c.tar.bz2 |
[ORC] Fix buggy calculation of second-level-page offset in unwind-info.
SecondLevelPageOffset should be incremented by SecondLevelPageSize bytes, not
one byte.
Failure to calculate the offset correctly leads to corrupted unwind-info (and
consequently broken exceptions / unwinding) when more than one second level
page is needed. Since JITLink's unwind support only produces
UNWIND_SECOND_LEVEL_REGULAR-style pages this would trigger for any file
containing more than 511 functions with unwind info. The included test-case
contains 1022 functions (sufficient for both the current format and any
future implementation that supports UNWIND_SECOND_LEVEL_COMPRESSED pages).
Thanks to @edoardo on discord for spotting this bug!
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions