Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-37690: Simplify linking of shared libraries on the AIX OS #14965

Closed
wants to merge 2 commits into from

Commits on Jul 26, 2019

  1. bpo-37690: Simplify linking of shared libraries on the AIX OS

    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).
    ericvw committed Jul 26, 2019
    Configuration menu
    Copy the full SHA
    c32f5c8 View commit details
    Browse the repository at this point in the history
  2. Add Misc/News.d/next/ entry

    Ensure that the summary of the change will be rendered in release notes.
    ericvw committed Jul 26, 2019
    Configuration menu
    Copy the full SHA
    d1d5d62 View commit details
    Browse the repository at this point in the history