From: Brian D. C. <bd...@ca...> - 2006-10-25 18:18:00
|
At Wed, 25 Oct 2006 18:56:21 +0100, Ian Rogers wrote: > Now why when we do the dlsym that's failing on AIX > is a bit of a mystery. Perhaps the symbols have been stripped on AIX? > objdump on Linux, otool on OS/X would give a handle on whether this was > the case. In a past life I ran into similar AIX problems with scsh, the Scheme Shell, using dlopen(NULL)/dlsym to look up symbols in the Scheme 48 virtual machine. As I understood it, AIX did not by default export symbols for dynamic lookup, its more similar to Windows in this regard it seems. Someone contributed a build addition for AIX to create an export list of all the symbols as a brute force solution. I grabbed the scsh-0.6.7 release from: http://prdownloads.sourceforge.net/scsh/scsh-0.6.7.tar.gz?download It has a AIX specific makefile include, scsh-0.6.7/scsh/aix/Makefile.inc, which contains the following target to create an explot list: ------------------------------------------------------------------------ AIX_P = exportlist.aix exportlist.aix: $(OBJS) $(RM) exportlist.aix for f in $(OBJS); do \ /usr/ccs/bin/nm -B -e $$f | grep ' T [^ ][^ ]*$$' | \ sed -e 's/^.* T \.*\([^ ][^ ]*\)$$/\1/' >> exportlist.aix; \ done; ------------------------------------------------------------------------ scsh/configure.in sets the LDFLAGS to use this exportlist based on the compiler type: ------------------------------------------------------------------------ if test ${CC} = gcc; then LDFLAGS_AIX="-Xlinker -bexport:exportlist.aix" else LDFLAGS_AIX="-bexport:exportlist.aix" fi ------------------------------------------------------------------------ Hope this helps. I don't know the last time this was tested on AIX, I originally integrated this back around 1994-1995, so it might be a bit dated. -bri |