[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);