diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-11-11 23:35:15 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-12-16 07:46:40 +0100 |
commit | 9b92834fa4ee27b0dccdd52962edb3fdbee7a340 (patch) | |
tree | 5f6556ba08fd3ef51b2902d6a85c39ae4f79ae19 /external | |
parent | 6928b045f09b5d983083607d63fcb2a547446d0a (diff) |
external/python3: Work around -fsanitize=alignment
Change-Id: I26b927345594368f426ae89bfd5b645561d44c10
Diffstat (limited to 'external')
-rw-r--r-- | external/python3/ubsan.patch.0 | 20 |
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 @@ |