[PATCH, rs6000] pr65479 Add -fasynchronous-unwind-tables when the 
-fsanitize=address option is seen.

This patch adds the -fasynchronous-unwind-tables option to compilations when
the -fsanitize=address option is seen.  -fasynchronous-unwind-tables causes a
full strack trace to be produced when the sanitizer detects an error.  Without
the full trace several of the asan test cases fail on ppc64.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65479 for more information.

Bootstrapped and tested on powerpc64le-unknown-linux-gnu,
powerpc64be-unknown-linux-gnu, and x86_64-pc-linux-gnu with no regressions.
Is this ok for trunk?

[gcc]

2016-12-06  Bill Seurer  <seu...@linux.vnet.ibm.com>

        PR sanitizer/65479
        * gcc/config/rs6000/rs6000.c: Add -fasynchronous-unwind-tables option 
when
        -fsanitize=address is specified.

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c  (revision 243308)
+++ gcc/config/rs6000/rs6000.c  (working copy)
@@ -5204,6 +5204,11 @@ rs6000_option_override (void)
 {
   (void) rs6000_option_override_internal (true);
 
+  /* -fsanitize=address needs to turn on -fasynchronous-unwind-tables for
+     ppc64 in order for tracebacks to be complete.  */
+  if (global_options.x_flag_sanitize & SANITIZE_USER_ADDRESS)
+    global_options.x_flag_asynchronous_unwind_tables = 1;
+
   /* Register machine-specific passes.  This needs to be done at start-up.
      It's convenient to do it here (like i386 does).  */
   opt_pass *pass_analyze_swaps = make_pass_analyze_swaps (g);

Reply via email to