From 7bb1cafa4e3d648669212ea4c6d11d6eafc6da23 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Tue, 23 Feb 2021 13:23:56 +0100 Subject: bpo-43239: Export PyCFunction_New with PyAPI_FUNC (GH-24551) --- Include/methodobject.h | 6 ++++++ Misc/NEWS.d/next/C API/2021-02-16-17-30-16.bpo-43239.FQqOGz.rst | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 Misc/NEWS.d/next/C API/2021-02-16-17-30-16.bpo-43239.FQqOGz.rst diff --git a/Include/methodobject.h b/Include/methodobject.h index 5d06d76..7aa4e41 100644 --- a/Include/methodobject.h +++ b/Include/methodobject.h @@ -41,7 +41,13 @@ struct PyMethodDef { }; typedef struct PyMethodDef PyMethodDef; +/* PyCFunction_New is declared as a function for stable ABI (declaration is + * needed for e.g. GCC with -fvisibility=hidden), but redefined as a macro + * that calls PyCFunction_NewEx. */ +PyAPI_FUNC(PyObject *) PyCFunction_New(PyMethodDef *, PyObject *); #define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL) + +/* PyCFunction_NewEx is similar: on 3.9+, this calls PyCMethod_New. */ PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, PyObject *); diff --git a/Misc/NEWS.d/next/C API/2021-02-16-17-30-16.bpo-43239.FQqOGz.rst b/Misc/NEWS.d/next/C API/2021-02-16-17-30-16.bpo-43239.FQqOGz.rst new file mode 100644 index 0000000..cded580 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-02-16-17-30-16.bpo-43239.FQqOGz.rst @@ -0,0 +1,2 @@ +The :c:func:`PyCFunction_New` function is now exported in the ABI when +compiled with ``-fvisibility=hidden``. -- cgit v0.12