This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug sanitizer/81923] New: [ASAN] gcc emites wrong odr asan instrumentation for glibc
- From: "d.khalikov at partner dot samsung.com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 22 Aug 2017 10:38:58 +0000
- Subject: [Bug sanitizer/81923] New: [ASAN] gcc emites wrong odr asan instrumentation for glibc
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81923
Bug ID: 81923
Summary: [ASAN] gcc emites wrong odr asan instrumentation for
glibc
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: d.khalikov at partner dot samsung.com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at gcc dot gnu.org
Target Milestone: ---
Hello,
I'm currently working on enabling the build of glibc with ASan instrumentation
and facing this type of error:
/tmp/ccKWa1tS.s: Assembler messages:
/tmp/ccKWa1tS.s:20: Error: junk at end of line, first unrecognized character is
`*'
/tmp/ccKWa1tS.s:21: Error: junk at end of line, first unrecognized character is
`*'
/tmp/ccKWa1tS.s:23: Error: unrecognized symbol type ""
/tmp/ccKWa1tS.s:23: Error: junk at end of line, first unrecognized character is
`*'
/tmp/ccKWa1tS.s:24: Error: expected comma after name `__odr_asan.' in .size
directive
/tmp/ccKWa1tS.s:25: Error: invalid character '*' in mnemonic
/tmp/ccKWa1tS.s:53: Error: invalid operands (*UND* and .rodata sections) for
`*'
As far as I understood, the KASAN disables this type of instrumentation:
2567 static bool
2568 asan_needs_odr_indicator_p (tree decl)
2569 {
2570 /* Don't emit ODR indicators for kernel because:
2571 a) Kernel is written in C thus doesn't need ODR indicators.
2572 b) Some kernel code may have assumptions about symbols containing
specific
2573 patterns in their names. Since ODR indicators contain original
names
2574 of symbols they are emitted for, these assumptions would be broken
for
2575 ODR indicator symbols. */
2576 return (!(flag_sanitize & SANITIZE_KERNEL_ADDRESS)
2577 && !DECL_ARTIFICIAL (decl)
2578 && !DECL_WEAK (decl)
2579 && TREE_PUBLIC (decl));
2580 }
Could it be some solution for glibc ? Or may be "compile time" flag.
Thanks.