[Libreoffice-commits] core.git: external/python3

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Wed Dec 2 07:17:36 UTC 2020


 external/python3/ubsan.patch.0 |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

New commits:
commit 1657639d5e405c6e1e988d51a1f267c378c74b53
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Tue Dec 1 14:44:01 2020 +0100
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Wed Dec 2 08:16:50 2020 +0100

    external/python3: Silence UBSan errors with --with-pydebug
    
    ...that happen when building ExternalProject_python3 itself after
    12142490cd43f8568ab29e0ddfa75b334d6d39d5 "Enable Python Py_DEBUG setting when
    built with --enable-dbgutil on Linux":
    
    For one, silence
    
    > Modules/posixmodule.c:14395:9: runtime error: left shift of 34 by 26 places cannot be represented in type 'int'
    >  #0 in all_ins at workdir/UnpackedTarball/python3/./Modules/posixmodule.c:14395:9
    
    where at least my kernel-headers-5.9.9-200.fc33.x86_64
    /usr/include/linux/memfd.h has
    
    > #define MFD_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
    
    and /usr/include/asm-generic/hugetlb_encode.h has
    
    > #define HUGETLB_FLAG_ENCODE_16GB      (34 << HUGETLB_FLAG_ENCODE_SHIFT)
    
    For another (and as predicted in 29d47d22c43e6adc1850b7db5880028dcd07d1b3 "Fix
    passing --disable-optimized into external/python3": "in a Linux UBsan build,
    making ExternalProject_python3 would have started to cause some 'applying zero
    offset to null pointer' failures, but which would have been easy to fix"),
    silence
    
    > Objects/listobject.c:551:24: runtime error: applying zero offset to null pointer
    >  #0 in list_concat at workdir/UnpackedTarball/python3/Objects/listobject.c:551:24
    
    Change-Id: I0523cd35e393000c8e67629a0522b2db1d8c16f0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106984
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/external/python3/ubsan.patch.0 b/external/python3/ubsan.patch.0
index 938acc1f1725..9f458b1e0f95 100644
--- a/external/python3/ubsan.patch.0
+++ b/external/python3/ubsan.patch.0
@@ -18,3 +18,26 @@
  
  	/*	Set the carry bit if the function uses any sse registers.
  		This is clc or stc, together with the first byte of the jmp.  */
+--- Modules/posixmodule.c
++++ Modules/posixmodule.c
+@@ -23,6 +23,9 @@
+ };
+ 
+ static int
++#if defined __clang__
++__attribute__((no_sanitize("shift-base"))) // MFD_HUGE_16GB in /usr/include/linux/memfd.h
++#endif
+ all_ins(PyObject *m)
+ {
+ #ifdef F_OK
+--- Objects/listobject.c
++++ Objects/listobject.c
+@@ -548,7 +548,7 @@
+         dest[i] = v;
+     }
+     src = b->ob_item;
+-    dest = np->ob_item + Py_SIZE(a);
++    dest = Py_SIZE(a) == 0 ? np->ob_item : np->ob_item + Py_SIZE(a);
+     for (i = 0; i < Py_SIZE(b); i++) {
+         PyObject *v = src[i];
+         Py_INCREF(v);


More information about the Libreoffice-commits mailing list