On 08/29/2012 11:18 AM, Brice Goglin wrote: > Hello, > > I cannot get ltdl to load plugins on AIX 6.1. I am compiling plugins > with -module -avoid-version. libtool generates a ".so" but then embeds > it inside a ".a" and it looks like it really wants me to use this ".a" > since the ".so" doesn't even get installed. > > When lt_dlopen tries to open the plugins (tried dlopen with an extension > and dlopenext without extension), it fails saying "file not found". The > raw dlopen doesn't want to load the .a file because of a "bad magic number". > > dlopen succeeds if I use "foo.a(foo.so)" as a file name instead of > "foo.a", and if I add RTLD_MEMBER to the flags. But I don't see any > reference to RTLD_MEMBER in libltdl, so I assume I am not building the > plugins correctly.
Yep, AIX support in libtool is far from ideal. As indicated by Perry, during the AIX port of Gentoo Prefix, besides making ltdl more flexible in where/how to load shared objects from, I've grown up a working solution for filename-based shared library versioning - known as the "soname" feature in ELF/Linux world, as well as ltdl As it applies to libgcc_s too, I've outlined this already in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52623#c8 To keep static linking possible, this should be done with runtime-linking enabled only. On the other hand, projects using libtool usually aren't designed just for AIX, but mainly for platforms that cannot disable runtime-linking at all ... However, the libtool (and ltdl) patches for that still aren't ready for upstream, but I plan to resume working on that... (can't promise anything unfortunately). Anyway, I've rebased them to current master these days, made them working again, and pushed to github: https://github.com/haubi/libtool/commits/aix-soname Use 'configure --enable-aix-soname' to see how it works, although bootstrapping is a little tricky at the moment, it doesn't work with current gnulib... Other open issues: * The "--enable-aix-soname=compat" mode isn't implemented yet. * If that compat mode actually is necessary at all. * If the name "aix-soname" and the values "no,compat,yes" are the best choice. * If it is possible to get rid of doing different things upon -brtl in LDFLAGS. * Outstanding tests with xlc and xlC (we do have gcc only here). * ... /haubi/ _______________________________________________ https://lists.gnu.org/mailman/listinfo/libtool
