[PATCH] D17129: [Compiler-rt][MSan] fix param_tls_limit test

Daniel Sanders via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 15 07:21:01 PST 2016


dsanders added a subscriber: dsanders.
dsanders added a comment.

In http://reviews.llvm.org/D17129#350594, @eugenis wrote:

> If an argument does not fit in param-tls, it becomes completely unpoisoned - not just the overflow part, but the entire argument.
>  I suspect that on non-x86 targets the large struct may be passed as several smaller arguments, and then the ones that fit (completely!) will be poisoned.


I can confirm that we slice large aggregates into a series of smaller arguments (i32 on o32, i64 on n32/n64) in clang.


================
Comment at: test/msan/param_tls_limit.cc:37
@@ -36,23 +36,3 @@
 void f801(S<801> s) {
-  OVERFLOW(s);
-}
-
-void f1000(S<1000> s) {
-  OVERFLOW(s);
-}
-
-void f_many(int a, double b, S<800> s, int c, double d) {
-  NO_OVERFLOW(a);
-  NO_OVERFLOW(b);
-  OVERFLOW(s);
-  OVERFLOW(c);
-  OVERFLOW(d);
-}
-
-// -8 bytes for "int a", aligned by 8
-// -2 to make "int c" a partial fit
-void f_many2(int a, S<800 - 8 - 2> s, int c, double d) {
-  NO_OVERFLOW(a);
-  NO_OVERFLOW(s);
-  OVERFLOW(c);
-  OVERFLOW(d);
+  // poision only till the size of ParamTLS will get detected
+  NO_POISON(s);
----------------
Typo: poision


Repository:
  rL LLVM

http://reviews.llvm.org/D17129





More information about the llvm-commits mailing list