2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-15 13:01:06 +08:00

re PR sanitizer/78887 (Failure to build aarch64 allmodconfig Linux kernel 4.9)

PR sanitizer/78887
	* asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
	if -fsanitize=kernel-address is present.

From-SVN: r244402
This commit is contained in:
Maxim Ostapenko 2017-01-13 10:08:50 +00:00 committed by Maxim Ostapenko
parent 582dbb53ac
commit 0acd830b7e
2 changed files with 16 additions and 1 deletions

@ -1,3 +1,9 @@
2017-01-13 Maxim Ostapenko <m.ostapenko@samsung.com>
PR sanitizer/78887
* asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
if -fsanitize=kernel-address is present.
2017-01-13 Richard Biener <rguenther@suse.de>
* tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs

@ -2360,7 +2360,16 @@ create_odr_indicator (tree decl, tree type)
static bool
asan_needs_odr_indicator_p (tree decl)
{
return !DECL_ARTIFICIAL (decl) && !DECL_WEAK (decl) && TREE_PUBLIC (decl);
/* Don't emit ODR indicators for kernel because:
a) Kernel is written in C thus doesn't need ODR indicators.
b) Some kernel code may have assumptions about symbols containing specific
patterns in their names. Since ODR indicators contain original names
of symbols they are emitted for, these assumptions would be broken for
ODR indicator symbols. */
return (!(flag_sanitize & SANITIZE_KERNEL_ADDRESS)
&& !DECL_ARTIFICIAL (decl)
&& !DECL_WEAK (decl)
&& TREE_PUBLIC (decl));
}
/* Append description of a single global DECL into vector V.