diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-12-01 14:44:01 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2020-12-02 08:16:50 +0100 |
commit | 1657639d5e405c6e1e988d51a1f267c378c74b53 (patch) | |
tree | f8dbe4947a17429f34783edc46269283c4dc3b1f /external | |
parent | 264498b4baeb4d451c17153ae354bf9c241709eb (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.0 | 23 |
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); |