Update git submodules
[LibreOffice.git] / external / python3 / ubsan.patch.0
blobd44fbe055c863669d2d0399edec3825cb2dcc1ef
1 --- Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
2 +++ Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
3 @@ -599,9 +599,15 @@
4         tramp = (volatile unsigned short*)&closure->tramp[0];
5  
6         tramp[0] = 0xbb49;              /* mov <code>, %r11     */
7 -       *(void* volatile*)&tramp[1] = ffi_closure_unix64;
8 +       tramp[1] = (unsigned short) ffi_closure_unix64;
9 +       tramp[2] = (unsigned short) (((unsigned long)ffi_closure_unix64) >> 16);
10 +       tramp[3] = (unsigned short) (((unsigned long)ffi_closure_unix64) >> 32);
11 +       tramp[4] = (unsigned short) (((unsigned long)ffi_closure_unix64) >> 48);
12         tramp[5] = 0xba49;              /* mov <data>, %r10     */
13 -       *(void* volatile*)&tramp[6] = closure;
14 +       tramp[6] = (unsigned short) closure;
15 +       tramp[7] = (unsigned short) (((unsigned long)closure) >> 16);
16 +       tramp[8] = (unsigned short) (((unsigned long)closure) >> 32);
17 +       tramp[9] = (unsigned short) (((unsigned long)closure) >> 48);
19         /*      Set the carry bit if the function uses any sse registers.
20                 This is clc or stc, together with the first byte of the jmp.  */
21 --- Modules/posixmodule.c
22 +++ Modules/posixmodule.c
23 @@ -13998,6 +13998,9 @@
24  };
26  static int
27 +#if defined __clang__
28 +__attribute__((no_sanitize("shift-base"))) // MFD_HUGE_16GB in /usr/include/linux/memfd.h
29 +#endif
30  all_ins(PyObject *m)
31  {
32  #ifdef F_OK
33 --- Objects/listobject.c
34 +++ Objects/listobject.c
35 @@ -554,7 +554,7 @@
36          dest[i] = v;
37      }
38      src = b->ob_item;
39 -    dest = np->ob_item + Py_SIZE(a);
40 +    dest = Py_SIZE(a) == 0 ? np->ob_item : np->ob_item + Py_SIZE(a);
41      for (i = 0; i < Py_SIZE(b); i++) {
42          PyObject *v = src[i];
43          Py_INCREF(v);