summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-11-07 04:56:24 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-11-07 04:56:24 +0000
commit9722ed0e52aba80177960458d7d3deb3dde59c53 (patch)
treed3294b4331d992da288ee2878af19faad5cf56ed
parent234ffbce0e17464b0c174e3567ffe34917277229 (diff)
suppress GCC warning about unknown sanitizers
See also: https://travis-ci.org/ruby/ruby/jobs/451710726#L1941 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--gc.c4
-rw-r--r--internal.h10
2 files changed, 11 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index b386469..fe778aa 100644
--- a/gc.c
+++ b/gc.c
@@ -4164,11 +4164,9 @@ ruby_stack_check(void)
return stack_check(GET_EC(), STACKFRAME_FOR_CALL_CFUNC);
}
-ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
-(
+ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(static void mark_locations_array(rb_objspace_t *objspace, register const VALUE *x, register long n));
static void
mark_locations_array(rb_objspace_t *objspace, register const VALUE *x, register long n)
-)
{
VALUE v;
while (n--) {
diff --git a/internal.h b/internal.h
index 2f3124f..1a03056 100644
--- a/internal.h
+++ b/internal.h
@@ -68,6 +68,16 @@ extern "C" {
# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) x
#endif
+#if defined(NO_SANITIZE) && defined(__GNUC__) &&! defined(__clang__)
+/* GCC warns about unknown sanitizer, which is annoying. */
+#undef NO_SANITIZE
+#define NO_SANITIZE(x, y) \
+ COMPILER_WARNING_PUSH; \
+ COMPILER_WARNING_IGNORED(-Wattributes); \
+ __attribute__((__no_sanitize__(x))) y; \
+ COMPILER_WARNING_POP
+#endif
+
#ifndef NO_SANITIZE
# define NO_SANITIZE(x, y) y
#endif