...by again using 'long double' instead of 'double' to "force worst-case alignment," just like Python 3.3 used to do. This fixes -fsanitize=alignment failures like > workdir/UnpackedTarball/python3/Modules/_ctypes/_ctypes.c:2923:10: runtime error: member access within misaligned address 0x6110007af498 for type 'CDataObject' (aka 'struct tagCDataObject'), which requires 16 byte alignment > 0x6110007af498: note: pointer points here > ff ff ff ff 01 00 00 00 00 00 00 00 98 98 17 00 90 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > ^ > GenericPyCData_new workdir/UnpackedTarball/python3/Modules/_ctypes/_ctypes.c:2923:10 > PyCFuncPtr_new workdir/UnpackedTarball/python3/Modules/_ctypes/_ctypes.c:3385:29 > type_call workdir/UnpackedTarball/python3/Objects/typeobject.c:908:11 > [...] during PythonTest_dbaccess_python. Change-Id: I8cc65823e1bc65807ec30c97a9099462e55c996d
33 lines
820 B
Plaintext
33 lines
820 B
Plaintext
--- Include/objimpl.h
|
|
+++ Include/objimpl.h
|
|
@@ -250,7 +250,7 @@
|
|
union _gc_head *gc_prev;
|
|
Py_ssize_t gc_refs;
|
|
} gc;
|
|
- double dummy; /* force worst-case alignment */
|
|
+ long double dummy; /* force worst-case alignment */
|
|
} PyGC_Head;
|
|
|
|
extern PyGC_Head *_PyGC_generation0;
|
|
--- Objects/obmalloc.c
|
|
+++ Objects/obmalloc.c
|
|
@@ -413,8 +413,8 @@
|
|
|
|
#ifdef WITH_PYMALLOC
|
|
|
|
+#define WITH_VALGRIND
|
|
#ifdef WITH_VALGRIND
|
|
-#include <valgrind/valgrind.h>
|
|
|
|
/* If we're using GCC, use __builtin_expect() to reduce overhead of
|
|
the valgrind checks */
|
|
@@ -1181,7 +1181,7 @@
|
|
|
|
#ifdef WITH_VALGRIND
|
|
if (UNLIKELY(running_on_valgrind == -1))
|
|
- running_on_valgrind = RUNNING_ON_VALGRIND;
|
|
+ running_on_valgrind = 1;
|
|
if (UNLIKELY(running_on_valgrind))
|
|
goto redirect;
|
|
#endif
|