[PATCH] Test failures in GCC ASan testsuite on ARM Linux due to FP format mismatch between libsanitizer and GCC.

Alexey Samsonov vonosmas at gmail.com
Tue Jul 29 16:41:45 PDT 2014


================
Comment at: lib/sanitizer_common/sanitizer_stacktrace.cc:40
@@ +39,3 @@
+// Check if given pointer points into allocated stack area.
+static inline int IsValidFrame(uptr frame, uptr stack_top, uptr stack_bottom) {
+  return frame > stack_bottom && frame < stack_top - 2;
----------------
this function returns bool

================
Comment at: lib/sanitizer_common/sanitizer_stacktrace.cc:65
@@ -44,3 +64,3 @@
   size = 1;
-  uhwptr *frame = (uhwptr *)bp;
-  uhwptr *prev_frame = frame - 1;
+  stack_bottom = Max(stack_bottom, (uptr)&size);
+  uhwptr *frame = GetCanonicFrame(bp, stack_top, stack_bottom);
----------------
This line is wrong. It assumes that FastUnwindStack() is called in the same thread for which we provide stack_top/stack_bottom. I believe this function describes a generic unwinding algorithm, and there's no place for hack like this here.

Why do you need it?

http://reviews.llvm.org/D4692






More information about the llvm-commits mailing list