New submission from Eric N. Vander Weele <eri...@gmail.com>:
Have the approach of building shared libraries on the AIX operating system be similar to that of a System V system. The primary benefit of this change is the elimination of custom AIX paths and reducing the changes at `./configure` to affect just the `LDSHARED` environment variable. For background context, AIX sees shared libraries as fully linked and resolved, where symbol references are resolved at link-time and cannot be rebound at load-time. System V resolves all global symbols by the run-time linker. Thus, conventional shared libraries in AIX cannot have undefined symbols, while System V can. However, AIX does allow for run-time linking in allowing symbols to be undefined until load-time. Therefore, this change affects how linking of shared libraries are performed on AIX to behave similarly to that of System V. Given that symbols are now going to be allowed to be undefined for AIX, all the code paths for generating exported symbols and the related wrapper scripts go away. The real magic is in the `-G` flag for `LDSHARED`. Effectively, `-G` is equivalent to specifying the following: * -berok: Suppress errors even if there are unresolved symbols * -brtl: Enable run-time linking * -bnortllib: Do not include a reference to the run-time linker * -bnosymbolic: Assigns 'nosymbolic' attribute to most symbols (i.e., can be rebound) * -bnoautoexp: Prevent auto exportation of any symbols * -bM:SRE: Set the module type to reusable (i.e., require a private copy of the data area for each process). I have been using this patch for Python 3.7, 3.6, and 2.7 (with appropriate backporting adaptations) without issue for being able to build and use Python C/C++ extensions on AIX for about 6 months now. Given that we haven't had any issues, I felt it was appropriate to see if this would be accepted upstream. ---------- components: Build, Extension Modules files: aix-extension-simplify.patch keywords: patch messages: 348511 nosy: ericvw priority: normal severity: normal status: open title: Simplify linking of shared libraries on the AIX OS type: enhancement versions: Python 2.7, Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python 3.9 Added file: https://bugs.python.org/file48508/aix-extension-simplify.patch _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37690> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com