STINNER Victor <[email protected]> added the comment:
> Is it guarantied that static inline functions will be inlined and will be not
> called as external functions from the Python library? The latter would break
> binary compatibility of extensions compiled with newer Python headers with
> older binary Python libraries.
Ok, I made more checks. In short, PR 10079 has no impact on the ABI
compatibility.
I modified Py_STATIC_INLINE() to remove __attribute__((always_inline)).
In this case, the ./python binary contains multiple "instances" (what's the
correct name for that?) of the "_Py_INCREF" inline function:
---
vstinner@apu$ readelf -sW ./python | c++filt -t |grep -E '(INC|DEC)REF'
42: 000000000041f908 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
43: 000000000041f939 121 FUNC LOCAL DEFAULT 13 _Py_DECREF
109: 00000000004234cb 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
...
5639: a486d 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
5786: a7abc 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
5801: a7f0f 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
...
8126: 00000000006011c5 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
8127: 00000000006011f6 121 FUNC LOCAL DEFAULT 13 _Py_DECREF
8140: 0000000000601971 49 FUNC LOCAL DEFAULT 13 _Py_INCREF
8141: 00000000006019a2 121 FUNC LOCAL DEFAULT 13 _Py_DECREF
...
---
These functions are *LOCAL*, I understand that they are not exported.
I also checked the _struct module:
vstinner@apu$ readelf -sW
build/lib.linux-x86_64-3.8-pydebug/_struct.cpython-38dm-x86_64-linux-gnu.so |
c++filt -t |grep -E '(INC|DEC)REF'
40: 0000000000002e99 55 FUNC LOCAL DEFAULT 11 _Py_INCREF
41: 0000000000002ed0 127 FUNC LOCAL DEFAULT 11 _Py_DECREF
Again, these functions are "LOCAL", not imported nor exported.
I undertand that _struct.so doesn't depend on libpython for INCREF/DECREF: it
contains its own "implementation".
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue35059>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com