tree-optimization/111736 - avoid address sanitizing of __seg_gs
The following more thoroughly avoids address sanitizing accesses to non-generic address-spaces. PR tree-optimization/111736 * asan.cc (instrument_derefs): Do not instrument accesses to non-generic address-spaces. * gcc.target/i386/pr111736.c: New testcase.
This commit is contained in:
parent
9d6ff6f1ea
commit
134ef2a8ca
2 changed files with 27 additions and 0 deletions
|
@ -2755,6 +2755,10 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t,
|
|||
if (VAR_P (inner) && DECL_HARD_REGISTER (inner))
|
||||
return;
|
||||
|
||||
/* Accesses to non-generic address-spaces should not be instrumented. */
|
||||
if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (TREE_TYPE (inner))))
|
||||
return;
|
||||
|
||||
poly_int64 decl_size;
|
||||
if ((VAR_P (inner)
|
||||
|| (TREE_CODE (inner) == RESULT_DECL
|
||||
|
|
23
gcc/testsuite/gcc.target/i386/pr111736.c
Normal file
23
gcc/testsuite/gcc.target/i386/pr111736.c
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fsanitize=address" } */
|
||||
|
||||
int __seg_gs m;
|
||||
|
||||
int foo (void)
|
||||
{
|
||||
return m;
|
||||
}
|
||||
|
||||
extern int __seg_gs n;
|
||||
|
||||
int bar (void)
|
||||
{
|
||||
return n;
|
||||
}
|
||||
|
||||
int baz (int __seg_gs *o)
|
||||
{
|
||||
return *o;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-not "asan_report_load" } } */
|
Loading…
Add table
Reference in a new issue