#define DESTRUCTOR_ATTRIBUTE
#endif /* HAVE_DESTRUCTOR_ATTRIBUTE */
+#ifdef HAVE_ADDRESS_SANITIZER_ATTRIBUTE
+#define DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE __attribute__((no_sanitize_address))
+#else /* DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE */
+#define DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE
+#endif /* DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE */
+
/* GCC have printf type attribute check. */
#ifdef HAVE_FUNCTION_ATTRIBUTE_FORMAT
#define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b)))
}
#ifdef HAVE_SYSCALL
+DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE
static long int libc_vsyscall(long int sysno, va_list va)
{
long int args[8];
#!/usr/bin/env python
+import Options
import os
VERSION="1.0.1"
addmain=False,
msg='Checking for library destructor support')
+ if Options.options.address_sanitizer:
+ # check HAVE_ADDRESS_SANITIZER_ATTRIBUTE
+ conf.CHECK_CODE('''
+ void test_address_sanitizer_attribute(void) __attribute__((no_sanitize_address));
+
+ void test_address_sanitizer_attribute(void)
+ {
+ return;
+ }
+
+ int main(void) {
+ return 0;
+ }
+ ''',
+ 'HAVE_ADDRESS_SANITIZER_ATTRIBUTE',
+ addmain=False,
+ cflags='-Wall -Wextra -Werror',
+ msg='Checking for address sanitizer attribute')
+
# check HAVE_FUNCTION_ATTRIBUTE_FORMAT
conf.CHECK_CODE('''
void log_fn(const char *format, ...) __attribute__ ((format (printf, 1, 2)));