From 91971721b75fcd6c83a36a72b0a8d7bb3ec1e91e Mon Sep 17 00:00:00 2001 From: Slava Barinov Date: Thu, 3 Aug 2017 16:14:59 +0300 Subject: [PATCH] [TTC-5] Forbid section anchors for ASan build (PR sanitizer/81697) gcc/ * varasm.c (use_object_blocks_p): Forbid section anchors for ASan gcc/testsuite/ * g++.dg/asan/global-alignment.C: New test to test global variables alignment. Change-Id: I3887e356397c599ec74793de6d60bc285a2c872b Signed-off-by: Slava Barinov --- gcc/testsuite/g++.dg/asan/global-alignment.C | 17 +++++++++++++++++ gcc/varasm.c | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/asan/global-alignment.C diff --git a/gcc/testsuite/g++.dg/asan/global-alignment.C b/gcc/testsuite/g++.dg/asan/global-alignment.C new file mode 100644 index 0000000..c011c70 --- /dev/null +++ b/gcc/testsuite/g++.dg/asan/global-alignment.C @@ -0,0 +1,17 @@ +/* { dg-options "-fmerge-all-constants" } */ +/* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */ + +#include +#include + +const char kRecoveryInstallString[] = "NEW"; +const char kRecoveryUpdateString[] = "UPDATE"; +const char kRecoveryUninstallationString[] = "UNINSTALL"; + +const std::map kStringToRequestMap = { + {kRecoveryInstallString, 0}, + {kRecoveryUpdateString, 0}, + {kRecoveryUninstallationString, 0}, +}; +/* { dg-final { scan-assembler-times {\.section\s+\.rodata\n(?:(?!\.section).)*\.(string|ascii|asciz)\s+"NEW} 1 } } */ diff --git a/gcc/varasm.c b/gcc/varasm.c index da88f5b..3220675 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -344,7 +344,8 @@ get_section (const char *name, unsigned int flags, tree decl) static bool use_object_blocks_p (void) { - return flag_section_anchors; + return (flag_section_anchors + && !(flag_sanitize & SANITIZE_ADDRESS)); } /* Return the object_block structure for section SECT. Create a new -- 2.7.4