[New-bugs-announce] [issue37690] Simplify linking of shared libraries on the AIX OS

Eric N. Vander Weele report at bugs.python.org
Fri Jul 26 13:32:29 EDT 2019


New submission from Eric N. Vander Weele <ericvw at 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 <report at bugs.python.org>
<https://bugs.python.org/issue37690>
_______________________________________


More information about the New-bugs-announce mailing list