mirror of
https://github.com/python/cpython.git
synced 2024-11-27 03:45:08 +08:00
bpo-46913: Fix test_faulthandler.test_read_null() on UBSan (GH31672)
Disable undefined behavior sanitizer (UBSan) on faulthandler._read_null().
This commit is contained in:
parent
32f0c82717
commit
65b92ccdec
@ -32,6 +32,23 @@
|
||||
|
||||
#define PUTS(fd, str) _Py_write_noraise(fd, str, strlen(str))
|
||||
|
||||
|
||||
// clang uses __attribute__((no_sanitize("undefined")))
|
||||
// GCC 4.9+ uses __attribute__((no_sanitize_undefined))
|
||||
#if defined(__has_feature) // Clang
|
||||
# if __has_feature(undefined_behavior_sanitizer)
|
||||
# define _Py_NO_SANITIZE_UNDEFINED __attribute__((no_sanitize("undefined")))
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__GNUC__) \
|
||||
&& ((__GNUC__ >= 5) || (__GNUC__ == 4) && (__GNUC_MINOR__ >= 9))
|
||||
# define _Py_NO_SANITIZE_UNDEFINED __attribute__((no_sanitize_undefined))
|
||||
#endif
|
||||
#ifndef _Py_NO_SANITIZE_UNDEFINED
|
||||
# define _Py_NO_SANITIZE_UNDEFINED
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_SIGACTION
|
||||
typedef struct sigaction _Py_sighandler_t;
|
||||
#else
|
||||
@ -1013,7 +1030,7 @@ faulthandler_suppress_crash_report(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
static PyObject* _Py_NO_SANITIZE_UNDEFINED
|
||||
faulthandler_read_null(PyObject *self, PyObject *args)
|
||||
{
|
||||
volatile int *x;
|
||||
@ -1102,21 +1119,6 @@ faulthandler_fatal_error_c_thread(PyObject *self, PyObject *args)
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
// clang uses __attribute__((no_sanitize("undefined")))
|
||||
// GCC 4.9+ uses __attribute__((no_sanitize_undefined))
|
||||
#if defined(__has_feature) // Clang
|
||||
# if __has_feature(undefined_behavior_sanitizer)
|
||||
# define _Py_NO_SANITIZE_UNDEFINED __attribute__((no_sanitize("undefined")))
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__GNUC__) \
|
||||
&& ((__GNUC__ >= 5) || (__GNUC__ == 4) && (__GNUC_MINOR__ >= 9))
|
||||
# define _Py_NO_SANITIZE_UNDEFINED __attribute__((no_sanitize_undefined))
|
||||
#endif
|
||||
#ifndef _Py_NO_SANITIZE_UNDEFINED
|
||||
# define _Py_NO_SANITIZE_UNDEFINED
|
||||
#endif
|
||||
|
||||
static PyObject* _Py_NO_SANITIZE_UNDEFINED
|
||||
faulthandler_sigfpe(PyObject *self, PyObject *args)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user