summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-12-01 14:44:01 +0100
committerStephan Bergmann <sbergman@redhat.com>2020-12-02 08:16:50 +0100
commit1657639d5e405c6e1e988d51a1f267c378c74b53 (patch)
treef8dbe4947a17429f34783edc46269283c4dc3b1f /external
parent264498b4baeb4d451c17153ae354bf9c241709eb (diff)
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@redhat.com>
Diffstat (limited to 'external')
-rw-r--r--external/python3/ubsan.patch.023
1 files changed, 23 insertions, 0 deletions
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);