Kaydet (Commit) 67466a19 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Fix Python 3.5 sizeof(PyGC_Head) for UBSan

...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
üst 644487a1
--- 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 @@
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment