On 04/19/2015 07:48 PM, Martin Sebor wrote:
The attached patch resolves the failures in a number of address
sanitizer tests on powerpc64*-*-*-* discussed in bug 65479 (the
failures in c-c++-common/asan/swapcontext-test-1.c reported in
pr65643 remain unresolved).
The patch has been tested on powerpc64*-*-*-* and x86_64 with
no regressions.
Is this okay for trunk? For 5.1?
Martin
gcc-65479.patch
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b4052ef..18eede3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2015-04-19 Martin Sebor<mse...@redhat.com>
+
+ PR sanitizer/65479
+ * gcc/testsuite/c-c++-common/asan/misalign-1.c [powerpc*-*-*-*]:
+ Use -fno-omit-frame-pointer. Adjust line numbers and expect exact
+ matches.
+ * gcc/testsuite/c-c++-common/asan/misalign-2.c: Ditto.
+ * gcc/testsuite/c-c++-common/asan/null-deref-1.c: Ditto.
So the ChangeLog doesn't match the patch. The changelog references
"-fno-omit-frame-pointer", but in the patch you actually add
"-fasynchronous-unwind-tables".
I also wonder if other targets need -fasynchronous-unwind-tables and
whether or not we should just add it unconditionally.
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index e385d8f..9348321 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,11 @@
+2015-04-19 Martin Sebor<mse...@redhat.com>
+
+ PR sanitizer/65479
+ * libbacktrace/dwarf.c (struct line): Add idx data member.
+ (line_compare): Use struct line idx member.
+ (add_line): Set ln->idx.
+ (read_line_info): Clear ln->idx.
Seems OK.
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 6f44dcf..7b82378 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,15 @@
+2015-04-19 Martin Sebor<mse...@redhat.com>
+
+ PR sanitizer/65479
+ * libsanitizer/sanitizer_common/sanitizer_stacktrace.h
+ (StackTrace::signaled, StackTrace::min_insn_bytes): New data members.
+ (StackTrace::StackTrace): Initialize signaled.
+ * libsanitizer/sanitizer_common/sanitizer_stacktrace.cc
+ (StackTrace::GetPreviousInstructionPc): Rewrite.
+ * libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cc
+ (StackTrace::Print): Use min_insn_bytes to adjust PC value.
+ (BufferedStackTrace::Unwind): Set signaled.
Is libsanitizer maintained in LLVM? If so, we want to minimize
divergence, so it may be better to get this approved in LLVM then pick
it up via a merge.
Given this hits 3 distinct pieces of code, do any of them make sense in
isolation or do they have to land together as a unit?
Jeff