Dynamic loader taking function from wrong lib

Hi,

I have two dynamically loaded libraries (shared objects), both of which include functions of the same name - foo. When I call 'foo' from libA, it takes it from libB, although it is implemented in libA as well. Since we need the function to be called from libA, we tried linking it with the flag -bSymbolic, to no avail. It still called the function from libB.

Specifics: Working on HP 11.23, compiling with HP gdb 5.7.4.

Background: In this case libA is an ODBC driver we've written. libB is the unixODBC driver manager. The way these works is that in our driver we implement a set of SQLxxx functions, which have the same names as the set of functions in the driver manager. When the driver manager loads our ODBC driver, it knows to call the SQLxxx functions from our driver. Our problem is in a case where we call our own SQLxxx function from within our own driver, and it calls the function from the driver manager instead!

Ideas?

Thanks.

Problem resolution � for anyone interested.
The problem was finally solved by -Bsymbolic, but it was in a roundabout way.
We are working on HP and when we ran into the problem we were compiling with gcc. We tried adding �Bsymbolic to the gcc command but it didn�t help. We then tried adding �W1,Bsymbolic in order to pass the option to the linker, but this didn�t help either.
Now we have moved to compile with HP�s native aCC, for reasons that are unrelated to this problem. With aCC when we gave it �W1,Bsymbolic the library�s symbols were finally taken locally.