Define NO_SANITIZE with reference to ext/bigdecimal/missing.c

This commit is contained in:
jinroq 2023-06-29 11:44:54 +09:00 committed by Nobuyoshi Nakada
parent 174dbe33cc
commit a70320b8cd
2 changed files with 15 additions and 5 deletions

View File

@ -146,6 +146,16 @@ nonempty_memcpy(void *dest, const void *src, size_t n)
#undef st_locale_insensitive_strncasecmp
#define st_locale_insensitive_strncasecmp rb_parser_st_locale_insensitive_strncasecmp
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
/* GCC warns about unknown sanitizer, which is annoying. */
# undef NO_SANITIZE
# define NO_SANITIZE(x, y) \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wattributes\"") \
__attribute__((__no_sanitize__(x))) y; \
_Pragma("GCC diagnostic pop")
#endif
#ifndef NO_SANITIZE
# define NO_SANITIZE(x, y) y
#endif

10
st.c
View File

@ -1729,9 +1729,9 @@ st_values_check(st_table *tab, st_data_t *values, st_index_t size,
#define C1 BIG_CONSTANT(0x87c37b91,0x114253d5);
#define C2 BIG_CONSTANT(0x4cf5ad43,0x2745937f);
#endif
NO_SANITIZE("undefined", static inline st_index_t murmur_step(st_index_t h, st_index_t k));
NO_SANITIZE("undefined", static inline st_index_t murmur_finish(st_index_t h));
NO_SANITIZE("undefined", extern st_index_t st_hash(const void *ptr, size_t len, st_index_t h));
NO_SANITIZE("unsigned-integer-overflow", static inline st_index_t murmur_step(st_index_t h, st_index_t k));
NO_SANITIZE("unsigned-integer-overflow", static inline st_index_t murmur_finish(st_index_t h));
NO_SANITIZE("unsigned-integer-overflow", extern st_index_t st_hash(const void *ptr, size_t len, st_index_t h));
static inline st_index_t
murmur_step(st_index_t h, st_index_t k)
@ -1936,7 +1936,7 @@ st_hash_uint32(st_index_t h, uint32_t i)
return murmur_step(h, i);
}
NO_SANITIZE("undefined", extern st_index_t st_hash_uint(st_index_t h, st_index_t i));
NO_SANITIZE("unsigned-integer-overflow", extern st_index_t st_hash_uint(st_index_t h, st_index_t i));
st_index_t
st_hash_uint(st_index_t h, st_index_t i)
{
@ -2037,7 +2037,7 @@ st_locale_insensitive_strcasecmp_i(st_data_t lhs, st_data_t rhs)
return st_locale_insensitive_strcasecmp(s1, s2);
}
NO_SANITIZE("undefined", PUREFUNC(static st_index_t strcasehash(st_data_t)));
NO_SANITIZE("unsigned-integer-overflow", PUREFUNC(static st_index_t strcasehash(st_data_t)));
static st_index_t
strcasehash(st_data_t arg)
{