[all-commits] [llvm/llvm-project] 36b52c: [sanitizer] Compare against the alignment of the l...
Xi Ruoyao via All-commits
all-commits at lists.llvm.org
Sun Jul 17 00:45:28 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 36b52c38aaffa3cd1936b7992fffd0cfa6d67f7b
https://github.com/llvm/llvm-project/commit/36b52c38aaffa3cd1936b7992fffd0cfa6d67f7b
Author: Xi Ruoyao <xry111 at mengyan1223.wang>
Date: 2022-07-17 (Sun, 17 Jul 2022)
Changed paths:
M compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
Log Message:
-----------
[sanitizer] Compare against the alignment of the latter range trying to find consecutive TLS blocks in GetStaticTlsBoundary
On a mips64el-linux-gnu system, the dynamic linker arranges TLS blocks
like:
[0] 0xfff7fe9680..0xfff7fe9684, align = 0x4
[1] 0xfff7fe9688..0xfff7fe96a8, align = 0x8
[2] 0xfff7fe96c0..0xfff7fe9e60, align = 0x40
[3] 0xfff7fe9e60..0xfff7fe9ef8, align = 0x8
Note that the dynamic linker can only put [1] at 0xfff7fe9688, not
0xfff7fe9684 or it will be misaligned. But we were comparing the
distance between two blocks with the alignment of the previous range,
causing GetStaticTlsBoundary fail to merge the consecutive blocks.
Compare against the alignment of the latter range to fix the issue.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D129112
More information about the All-commits
mailing list