[all-commits] [llvm/llvm-project] 80e326: [dfsan] Support passing non-i16 shadow values in T...
Z via All-commits
all-commits at lists.llvm.org
Thu Dec 3 18:51:30 PST 2020
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 80e326a8c4cfae770c10d7bb3d0ae291011bd91f
https://github.com/llvm/llvm-project/commit/80e326a8c4cfae770c10d7bb3d0ae291011bd91f
Author: Jianzhou Zhao <jianzhouzh at google.com>
Date: 2020-12-04 (Fri, 04 Dec 2020)
Changed paths:
M compiler-rt/lib/dfsan/dfsan.cpp
M llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
M llvm/test/Instrumentation/DataFlowSanitizer/arith.ll
M llvm/test/Instrumentation/DataFlowSanitizer/call.ll
M llvm/test/Instrumentation/DataFlowSanitizer/callback.ll
M llvm/test/Instrumentation/DataFlowSanitizer/fast16labels.ll
M llvm/test/Instrumentation/DataFlowSanitizer/load.ll
M llvm/test/Instrumentation/DataFlowSanitizer/phi.ll
M llvm/test/Instrumentation/DataFlowSanitizer/select.ll
Log Message:
-----------
[dfsan] Support passing non-i16 shadow values in TLS mode
This is a child diff of D92261.
It extended TLS arg/ret to work with aggregate types.
For a function
t foo(t1 a1, t2 a2, ... tn an)
Its arguments shadow are saved in TLS args like
a1_s, a2_s, ..., an_s
TLS ret simply includes r_s. By calculating the type size of each shadow
value, we can get their offset.
This is similar to what MSan does. See __msan_retval_tls and __msan_param_tls
from llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp.
Note that this change does not add test cases for overflowed TLS
arg/ret because this is hard to test w/o supporting aggregate shdow
types. We will be adding them after supporting that.
Reviewed-by: morehouse
Differential Revision: https://reviews.llvm.org/D92440
More information about the All-commits
mailing list