[New-bugs-announce] [issue44133] "Py_FrozenMain" symbol is not exported
STINNER Victor
report at bugs.python.org
Fri May 14 12:58:44 EDT 2021
New submission from STINNER Victor <vstinner at python.org>:
When Python is built without --enable-shared, the "Py_FrozenMain" is not exported.
When Python is built with --enable-shared, the "Py_FrozenMain" is exported as expected.
I can reproduce the issue with attached reproduce.tar.gz example:
* build.sh exports "func1" symbol
* build_ar.sh doesn't export the "func1" symbol
The difference is that build.sh links directly two object files (.o) into a binary, whereas build_ar.sh creates a static library (.a) and then link the static library into a binary.
Python is always built with a static library (libpythonVERSION.a) which causes the issue.
A solution is to pass -Wl,--whole-archive option to the linker to export *all* symbols exported by all object files, and not only export symbols of the object files which are used.
I'm not sure why, but "Py_FrozenMain" is the *only* impacted symbol of the whole C API.
This issue was discovered by Petr Viktorin who works on the stable ABI:
https://mail.python.org/archives/list/capi-sig@python.org/thread/5QLI3NUP3OSGLCCIBAQOTX4GEJQBWJ6F/
----------
components: C API
files: reproduce.tar.gz
messages: 393675
nosy: vstinner
priority: normal
severity: normal
status: open
title: "Py_FrozenMain" symbol is not exported
versions: Python 3.11
Added file: https://bugs.python.org/file50043/reproduce.tar.gz
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44133>
_______________________________________
More information about the New-bugs-announce
mailing list