Boost logo

Boost-Build :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-05-07 16:37:01


OK, I've now implemented shared object linking on AIX. See the aix_so
branch in boost/tools/build. I tested it with the KCC toolset, though other
toolsets were modified to accomodate it.

Things to know:

1. AIX has a windows-like arrangement where you generate a .imp file which
describes the exported symbols for any shared library. To do this, there's
a Python script which invokes the xlC_r linker
(tools/build/gen_aix_import_file.py). What it does seems trivial enough
that we could get Jam to do all the work directly.

2. Apparently the stock KCC (which is just a front-end shell script) has
some bugs which prevent it from working for this job. My clients at LLNL
gave me a modified version which can be made to work. Interestingly, it
seems to choke on the -e option which is used to designate the single
export for dlopen (what Python uses to find the init<module> function)
unless jam is invoked from within a tcsh shell (i.e. NOT with bash).

3. Apparently there are all kinds of problems with the dynamic link/load
model on AIX. In particular, there are limitations on the length of symbols
which cause segfaults at runtime unless you go in and fix things up by
hand. My simple tests worked, but my tests of Boost.Python crashed in this
way.

In sum, I think I've refactored things appropriately to support AIX and
shared libraries. The code got a bit simpler in some places. AIX shared lib
support is itself a somewhat fragile idea.

The question: should this branch be merged into the main trunk?

-Dave

+---------------------------------------------------------------+
David Abrahams
C++ Booster (http://www.boost.org) O__ ==
Pythonista (http://www.python.org) c/ /'_ ==
resume: http://users.rcn.com/abrahams/resume.html (*) \(*) ==
email: david.abrahams_at_[hidden]
+---------------------------------------------------------------+

 


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk