mirror of git://gcc.gnu.org/git/gcc.git
re PR sanitizer/56454 (need to rename attribute no_address_safety_analysis to no_sanitize_address)
PR sanitizer/56454 * asan.c (gate_asan): Lookup no_sanitize_address instead of no_address_safety_analysis attribute. * doc/extend.texi (no_address_safety_attribute): Rename to no_sanitize_address attribute, mention no_address_safety_analysis attribute as deprecated alias. * c-common.c (handle_no_sanitize_address_attribute): New function. (c_common_attribute_table): Add no_sanitize_address attribute. (handle_no_address_safety_analysis_attribute): Add no_sanitize_address attribute, not no_address_safety_analysis attribute. * g++.dg/asan/default-options-1.C (__asan_default_options): Use no_sanitize_address attribute rather than no_address_safety_analysis. * g++.dg/asan/sanitizer_test_utils.h (ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): Likewise. * c-c++-common/asan/attrib-1.c: Test no_sanitize_address attribute in addition to no_address_safety_analysis. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r196361
This commit is contained in:
parent
37b5ec8fcd
commit
e664c61c84
|
|
@ -1,3 +1,13 @@
|
||||||
|
2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com>
|
||||||
|
Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR sanitizer/56454
|
||||||
|
* asan.c (gate_asan): Lookup no_sanitize_address instead of
|
||||||
|
no_address_safety_analysis attribute.
|
||||||
|
* doc/extend.texi (no_address_safety_attribute): Rename to
|
||||||
|
no_sanitize_address attribute, mention no_address_safety_analysis
|
||||||
|
attribute as deprecated alias.
|
||||||
|
|
||||||
2013-02-28 Jakub Jelinek <jakub@redhat.com>
|
2013-02-28 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR middle-end/56461
|
PR middle-end/56461
|
||||||
|
|
|
||||||
|
|
@ -2277,7 +2277,7 @@ static bool
|
||||||
gate_asan (void)
|
gate_asan (void)
|
||||||
{
|
{
|
||||||
return flag_asan != 0
|
return flag_asan != 0
|
||||||
&& !lookup_attribute ("no_address_safety_analysis",
|
&& !lookup_attribute ("no_sanitize_address",
|
||||||
DECL_ATTRIBUTES (current_function_decl));
|
DECL_ATTRIBUTES (current_function_decl));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com>
|
||||||
|
Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR sanitizer/56454
|
||||||
|
* c-common.c (handle_no_sanitize_address_attribute): New function.
|
||||||
|
(c_common_attribute_table): Add no_sanitize_address attribute.
|
||||||
|
(handle_no_address_safety_analysis_attribute): Add
|
||||||
|
no_sanitize_address attribute, not no_address_safety_analysis
|
||||||
|
attribute.
|
||||||
|
|
||||||
2013-02-18 Aldy Hernandez <aldyh@redhat.com>
|
2013-02-18 Aldy Hernandez <aldyh@redhat.com>
|
||||||
|
|
||||||
PR target/52555
|
PR target/52555
|
||||||
|
|
|
||||||
|
|
@ -307,6 +307,8 @@ static tree handle_common_attribute (tree *, tree, tree, int, bool *);
|
||||||
static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
|
static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
|
||||||
static tree handle_hot_attribute (tree *, tree, tree, int, bool *);
|
static tree handle_hot_attribute (tree *, tree, tree, int, bool *);
|
||||||
static tree handle_cold_attribute (tree *, tree, tree, int, bool *);
|
static tree handle_cold_attribute (tree *, tree, tree, int, bool *);
|
||||||
|
static tree handle_no_sanitize_address_attribute (tree *, tree, tree,
|
||||||
|
int, bool *);
|
||||||
static tree handle_no_address_safety_analysis_attribute (tree *, tree, tree,
|
static tree handle_no_address_safety_analysis_attribute (tree *, tree, tree,
|
||||||
int, bool *);
|
int, bool *);
|
||||||
static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
|
static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
|
||||||
|
|
@ -715,6 +717,9 @@ const struct attribute_spec c_common_attribute_table[] =
|
||||||
0, 0, true, false, false,
|
0, 0, true, false, false,
|
||||||
handle_no_address_safety_analysis_attribute,
|
handle_no_address_safety_analysis_attribute,
|
||||||
false },
|
false },
|
||||||
|
{ "no_sanitize_address", 0, 0, true, false, false,
|
||||||
|
handle_no_sanitize_address_attribute,
|
||||||
|
false },
|
||||||
{ "warning", 1, 1, true, false, false,
|
{ "warning", 1, 1, true, false, false,
|
||||||
handle_error_attribute, false },
|
handle_error_attribute, false },
|
||||||
{ "error", 1, 1, true, false, false,
|
{ "error", 1, 1, true, false, false,
|
||||||
|
|
@ -6505,6 +6510,22 @@ handle_cold_attribute (tree *node, tree name, tree ARG_UNUSED (args),
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle a "no_sanitize_address" attribute; arguments as in
|
||||||
|
struct attribute_spec.handler. */
|
||||||
|
|
||||||
|
static tree
|
||||||
|
handle_no_sanitize_address_attribute (tree *node, tree name, tree, int,
|
||||||
|
bool *no_add_attrs)
|
||||||
|
{
|
||||||
|
if (TREE_CODE (*node) != FUNCTION_DECL)
|
||||||
|
{
|
||||||
|
warning (OPT_Wattributes, "%qE attribute ignored", name);
|
||||||
|
*no_add_attrs = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL_TREE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Handle a "no_address_safety_analysis" attribute; arguments as in
|
/* Handle a "no_address_safety_analysis" attribute; arguments as in
|
||||||
struct attribute_spec.handler. */
|
struct attribute_spec.handler. */
|
||||||
|
|
||||||
|
|
@ -6513,11 +6534,12 @@ handle_no_address_safety_analysis_attribute (tree *node, tree name, tree, int,
|
||||||
bool *no_add_attrs)
|
bool *no_add_attrs)
|
||||||
{
|
{
|
||||||
if (TREE_CODE (*node) != FUNCTION_DECL)
|
if (TREE_CODE (*node) != FUNCTION_DECL)
|
||||||
{
|
warning (OPT_Wattributes, "%qE attribute ignored", name);
|
||||||
warning (OPT_Wattributes, "%qE attribute ignored", name);
|
else if (!lookup_attribute ("no_sanitize_address", DECL_ATTRIBUTES (*node)))
|
||||||
*no_add_attrs = true;
|
DECL_ATTRIBUTES (*node)
|
||||||
}
|
= tree_cons (get_identifier ("no_sanitize_address"),
|
||||||
|
NULL_TREE, DECL_ATTRIBUTES (*node));
|
||||||
|
*no_add_attrs = true;
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2133,7 +2133,8 @@ attributes are currently defined for functions on all targets:
|
||||||
@code{weak}, @code{malloc}, @code{alias}, @code{ifunc},
|
@code{weak}, @code{malloc}, @code{alias}, @code{ifunc},
|
||||||
@code{warn_unused_result}, @code{nonnull}, @code{gnu_inline},
|
@code{warn_unused_result}, @code{nonnull}, @code{gnu_inline},
|
||||||
@code{externally_visible}, @code{hot}, @code{cold}, @code{artificial},
|
@code{externally_visible}, @code{hot}, @code{cold}, @code{artificial},
|
||||||
@code{no_address_safety_analysis}, @code{error} and @code{warning}.
|
@code{no_sanitize_address}, @code{no_address_safety_analysis},
|
||||||
|
@code{error} and @code{warning}.
|
||||||
Several other attributes are defined for functions on particular
|
Several other attributes are defined for functions on particular
|
||||||
target systems. Other attributes, including @code{section} are
|
target systems. Other attributes, including @code{section} are
|
||||||
supported for variables declarations (@pxref{Variable Attributes})
|
supported for variables declarations (@pxref{Variable Attributes})
|
||||||
|
|
@ -3432,11 +3433,15 @@ with computed goto or @code{asm goto}.
|
||||||
The @code{cold} attribute on labels is not implemented in GCC versions
|
The @code{cold} attribute on labels is not implemented in GCC versions
|
||||||
earlier than 4.8.
|
earlier than 4.8.
|
||||||
|
|
||||||
@item no_address_safety_analysis
|
@item no_sanitize_address
|
||||||
@cindex @code{no_address_safety_analysis} function attribute
|
@itemx no_address_safety_analysis
|
||||||
The @code{no_address_safety_analysis} attribute on functions is used
|
@cindex @code{no_sanitize_address} function attribute
|
||||||
|
The @code{no_sanitize_address} attribute on functions is used
|
||||||
to inform the compiler that it should not instrument memory accesses
|
to inform the compiler that it should not instrument memory accesses
|
||||||
in the function when compiling with the @option{-fsanitize=address} option.
|
in the function when compiling with the @option{-fsanitize=address} option.
|
||||||
|
The @code{no_address_safety_analysis} is a deprecated alias of the
|
||||||
|
@code{no_sanitize_address} attribute, new code should use
|
||||||
|
@code{no_sanitize_address}.
|
||||||
|
|
||||||
@item regparm (@var{number})
|
@item regparm (@var{number})
|
||||||
@cindex @code{regparm} attribute
|
@cindex @code{regparm} attribute
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,14 @@
|
||||||
|
2013-02-28 Konstantin Serebryany <konstantin.s.serebryany@gmail.com>
|
||||||
|
Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR sanitizer/56454
|
||||||
|
* g++.dg/asan/default-options-1.C (__asan_default_options): Use
|
||||||
|
no_sanitize_address attribute rather than no_address_safety_analysis.
|
||||||
|
* g++.dg/asan/sanitizer_test_utils.h
|
||||||
|
(ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS): Likewise.
|
||||||
|
* c-c++-common/asan/attrib-1.c: Test no_sanitize_address attribute
|
||||||
|
in addition to no_address_safety_analysis.
|
||||||
|
|
||||||
2013-02-28 Jason Merrill <jason@redhat.com>
|
2013-02-28 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/56481
|
PR c++/56481
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* PR sanitizer/55435 */
|
/* PR sanitizer/55435 */
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
|
|
||||||
__attribute__((no_address_safety_analysis)) int
|
__attribute__((no_sanitize_address)) int
|
||||||
f1 (int *p, int *q)
|
f1 (int *p, int *q)
|
||||||
{
|
{
|
||||||
*p = 42;
|
*p = 42;
|
||||||
|
|
@ -9,8 +9,8 @@ f1 (int *p, int *q)
|
||||||
}
|
}
|
||||||
|
|
||||||
void f2 (char *);
|
void f2 (char *);
|
||||||
void f2 (char *) __attribute__((no_address_safety_analysis));
|
void f2 (char *) __attribute__((no_sanitize_address));
|
||||||
void f2 (char *) __attribute__((no_address_safety_analysis));
|
void f2 (char *) __attribute__((no_sanitize_address));
|
||||||
void f2 (char *);
|
void f2 (char *);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -20,7 +20,7 @@ f2 (char *p)
|
||||||
}
|
}
|
||||||
|
|
||||||
void f3 (short *);
|
void f3 (short *);
|
||||||
__typeof (f3) f3 __attribute__((__no_address_safety_analysis__));
|
__typeof (f3) f3 __attribute__((__no_sanitize_address__));
|
||||||
|
|
||||||
void
|
void
|
||||||
f3 (short *p)
|
f3 (short *p)
|
||||||
|
|
@ -28,7 +28,35 @@ f3 (short *p)
|
||||||
*p = 42;
|
*p = 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
int v __attribute__((no_address_safety_analysis)); /* { dg-warning "attribute ignored" } */
|
__attribute__((no_sanitize_address)) int
|
||||||
|
f4 (int *p, int *q)
|
||||||
|
{
|
||||||
|
*p = 42;
|
||||||
|
return *q;
|
||||||
|
}
|
||||||
|
|
||||||
|
void f5 (char *);
|
||||||
|
void f5 (char *) __attribute__((no_sanitize_address));
|
||||||
|
void f5 (char *) __attribute__((no_sanitize_address));
|
||||||
|
void f5 (char *);
|
||||||
|
|
||||||
|
void
|
||||||
|
f5 (char *p)
|
||||||
|
{
|
||||||
|
*p = 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
void f6 (short *);
|
||||||
|
__typeof (f6) f6 __attribute__((__no_address_safety_analysis__));
|
||||||
|
|
||||||
|
void
|
||||||
|
f6 (short *p)
|
||||||
|
{
|
||||||
|
*p = 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
int v __attribute__((no_sanitize_address)); /* { dg-warning "attribute ignored" } */
|
||||||
|
int v2 __attribute__((no_address_safety_analysis)); /* { dg-warning "attribute ignored" } */
|
||||||
|
|
||||||
/* { dg-final { scan-assembler-not "__asan_report_store" } } */
|
/* { dg-final { scan-assembler-not "__asan_report_store" } } */
|
||||||
/* { dg-final { scan-assembler-not "__asan_report_load" } } */
|
/* { dg-final { scan-assembler-not "__asan_report_load" } } */
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
const char *kAsanDefaultOptions="verbosity=1 foo=bar";
|
const char *kAsanDefaultOptions="verbosity=1 foo=bar";
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
__attribute__((no_address_safety_analysis))
|
__attribute__((no_sanitize_address))
|
||||||
const char *__asan_default_options() {
|
const char *__asan_default_options() {
|
||||||
return kAsanDefaultOptions;
|
return kAsanDefaultOptions;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ typedef __int64 int64_t;
|
||||||
|
|
||||||
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
|
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
|
||||||
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \
|
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \
|
||||||
__attribute__((no_address_safety_analysis))
|
__attribute__((no_sanitize_address))
|
||||||
#else
|
#else
|
||||||
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
|
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue