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

Reply via email to