[all-commits] [llvm/llvm-project] 208f9a: [msan][s390x] Fix long double interceptors
Ulrich Weigand via All-commits
all-commits at lists.llvm.org
Sat Sep 2 03:40:24 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 208f9a2afcc9882c2eebe0c00d296bd1226de103
https://github.com/llvm/llvm-project/commit/208f9a2afcc9882c2eebe0c00d296bd1226de103
Author: Ulrich Weigand <ulrich.weigand at de.ibm.com>
Date: 2023-09-02 (Sat, 02 Sep 2023)
Changed paths:
M compiler-rt/lib/msan/msan_interceptors.cpp
Log Message:
-----------
[msan][s390x] Fix long double interceptors
s390x is one of the architectures where the "long double" type was changed
from a 64-bit IEEE to a 128-bit IEEE type back in the glibc 2.4 days.
This means that glibc still exports two versions of the long double functions
(those that already existed back then), and we have to intercept the correct
version. There is already an existing define SANITIZER_NLDBL_VERSION that
indicates this situation, we simply have to respect it when intercepting
strtold and wcstold.
In addition, on s390x a long double return value is passed in memory via
implicit reference. This means the interceptor for functions returning
long double has to unpoison that memory slot, or else we will get
false-positive uninitialized memory reference warnings when the caller
accesses that return value - similar to what is already done in the
mallinfo interceptor. Create a variant macro INTERCEPTOR_STRTO_SRET and
use it on s390x.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D159378
More information about the All-commits
mailing list