Quoting Balazs Scheidler <[EMAIL PROTECTED]>: > > Hi, > > I was trying to compile libdbi on AIX 5.2, which lacks RTLD_NEXT used by > libdbi to resolve something called "custom functions". > > I've grepped the libdbi-drivers code, and none of the drivers currently > use custom_functions. >
The custom_function interface has been around since the days of yore (i.e. before I joined the project) without a proper documentation. I assume it was originally intended to allow drivers to export additional functions which extend the libdbi API for that particular driver. No driver has used the interface this way yet. However we received a request lately to support some PostgreSQL client library functions which are not covered by the libdbi API. This led to the idea to export all client library functions through the custom_function interface to make them available to libdbi end-users (who should know what they're doing as this leads to driver-specific code in their programs). This is also why no driver accesses this interface, but many drivers export functions via this interface (at least in cvs). > I was wondering what the aim with this function is, and whether I could > replace RTLD_NEXT with the driver's shared object handle. E.g. something > like this: > > [EMAIL PROTECTED]:~/src/libdbi8-0.8.3/src$ diff -u dbi_main.c dbi_main.c-bazsi > --- dbi_main.c 2008-06-02 14:45:33.000000000 +0200 > +++ dbi_main.c-bazsi 2008-08-01 08:57:46.000000000 +0200 > @@ -1277,7 +1277,7 @@ > /* snprintf(function_name, 256, DLSYM_PREFIX "dbd_%s", > custom->name); */ > /* printf("loading %s<<\n", custom->name); */ > > - custom->function_pointer = my_dlsym(RTLD_NEXT, > custom->name); > + custom->function_pointer = my_dlsym(driver->dlhandle, > custom->name); > if (!custom->function_pointer) { > /* printf(my_dlerror()); */ > /* this usually fails because a function was > > Please have a look at the latest cvs revisions of dbi_main.c and the related autotools files (configure.in, Makefile.am etc.). The dlsym stuff is platform-dependent, and I've started to implement a mechanism which autodetects the proper value of the handle. If AIX requires dlhandle, it is a matter of setting DLSYM_HANDLE appropriately in configure.in for this platform. I'd greatly appreciate if you could test the current cvs revision of libdbi on AIX and report whether the tests in place work appropriately for that platform. regards, Markus -- Markus Hoenicka [EMAIL PROTECTED] (Spam-protected email: replace the quadrupeds with "mhoenicka") http://www.mhoenicka.de ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Libdbi-drivers-devel mailing list Libdbi-drivers-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libdbi-drivers-devel