summaryrefslogtreecommitdiffstats
path: root/external/python3
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-11-11 23:35:15 +0100
committerStephan Bergmann <sbergman@redhat.com>2016-12-16 07:46:40 +0100
commit9b92834fa4ee27b0dccdd52962edb3fdbee7a340 (patch)
tree5f6556ba08fd3ef51b2902d6a85c39ae4f79ae19 /external/python3
parentClean up patch (diff)
downloadcore-9b92834fa4ee27b0dccdd52962edb3fdbee7a340.tar.gz
core-9b92834fa4ee27b0dccdd52962edb3fdbee7a340.zip
external/python3: Work around -fsanitize=alignment
Change-Id: I26b927345594368f426ae89bfd5b645561d44c10
Diffstat (limited to 'external/python3')
-rw-r--r--external/python3/ubsan.patch.020
1 files changed, 20 insertions, 0 deletions
diff --git a/external/python3/ubsan.patch.0 b/external/python3/ubsan.patch.0
index 639e85f5a23b..ab2acd3a0205 100644
--- a/external/python3/ubsan.patch.0
+++ b/external/python3/ubsan.patch.0
@@ -35,6 +35,26 @@
/* Set the carry bit iff the function uses any sse registers.
This is clc or stc, together with the first byte of the jmp. */
+--- Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
++++ Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
+@@ -599,9 +599,15 @@
+ tramp = (volatile unsigned short*)&closure->tramp[0];
+
+ tramp[0] = 0xbb49; /* mov <code>, %r11 */
+- *(void* volatile*)&tramp[1] = ffi_closure_unix64;
++ tramp[1] = (unsigned short) ffi_closure_unix64;
++ tramp[2] = (unsigned short) (ffi_closure_unix64 >> 16);
++ tramp[3] = (unsigned short) (ffi_closure_unix64 >> 32);
++ tramp[4] = (unsigned short) (ffi_closure_unix64 >> 48);
+ tramp[5] = 0xba49; /* mov <data>, %r10 */
+- *(void* volatile*)&tramp[6] = closure;
++ tramp[6] = (unsigned short) closure;
++ tramp[7] = (unsigned short) (closure >> 16);
++ tramp[8] = (unsigned short) (closure >> 32);
++ tramp[9] = (unsigned short) (closure >> 48);
+
+ /* Set the carry bit if the function uses any sse registers.
+ This is clc or stc, together with the first byte of the jmp. */
--- Objects/listobject.c
+++ Objects/listobject.c
@@ -641,7 +641,7 @@