AIX: Compute shared object and executable exports explicitly
On AIX, symbols in shared objects must be exported in order to be visible to dependents. Previously we've depended on
CreateExportList for XL and on the GNU compiler's builtin
collect2 behavior to generate export lists. Introduce our own
ExportImportList script to behave consistently with both compilers. Start with a basic implementation; we can extend it later as needed.
Similarly, symbols in executables must be exported to be visible to modules (plugins) they load via
dlopen. Previously we've relied on
-bexpall but this has various limitations (especially not exporting symbols starting in
_ excludes all GNU C++ ABI symbols). Replace it with use of our
ExportImportList script to export symbols from executables with
See individual commit messages for further details.
For now we leave runtime linking enabled. Future work may make that optional now that we compute proper exports.
Issue: #19163 (closed)