Thread: libpgeasy symbol conflicts with libc ... libpgeasy loses

libpgeasy symbol conflicts with libc ... libpgeasy loses

From
Tom Lane
Date:
I had some trouble running findoidjoins today, which I eventually
tracked down to the fact that where it thinks it's calling libpgeasy's
fetch() subroutine, it was actually getting bound to the DBM library's
fetch() routine, which is in libc on my platform ... and the Makefile
for findoidjoins does -lc before -lpgeasy.

I counsel picking a less-generic name for libpgeasy's function.
We could fix this particular lossage with Makefile tweaking,
but this program won't be the last one to get burnt if you stick
with the conflicting name.

You might also want to check for conflicts against the other
functions exported by <dbm.h>:
    int dbminit(const char *file);    datum fetch(datum key);    int store(datum key, datum content);    int
delete(datumkey);    datum firstkey(void);    datum nextkey(datum key);    int dbmclose(void);
 
        regards, tom lane


Re: libpgeasy symbol conflicts with libc ... libpgeasy loses

From
Bruce Momjian
Date:
> I had some trouble running findoidjoins today, which I eventually
> tracked down to the fact that where it thinks it's calling libpgeasy's
> fetch() subroutine, it was actually getting bound to the DBM library's
> fetch() routine, which is in libc on my platform ... and the Makefile
> for findoidjoins does -lc before -lpgeasy.
>
> I counsel picking a less-generic name for libpgeasy's function.
> We could fix this particular lossage with Makefile tweaking,
> but this program won't be the last one to get burnt if you stick
> with the conflicting name.
>
> You might also want to check for conflicts against the other
> functions exported by <dbm.h>:

It is even worse here.  Why do I have main defined twice.  Looks like
-lln, but that is used in other compiles ok. And it finds none of the
libpgeasy functions.  Real strange.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
gcc -I../../src/include -I/usr/local/include/readline -O2 -pipe -m486 -Wall -Wmissing-prototypes -Wmissing-declarations
-g-Wall -O1 -Wmissing-prototypes -Wmissing-declarations -I../../src/interfaces/libpgeasy -I../../src/interfaces/libpq
-I/usr/local/include/readline-lz -lcompat -lln -lipc -ldl -lm -lutil -lreadline -ltermcap -lcurses
-L../../src/interfaces/libpgeasy-lpgeasy -g -Wall -O1 -Wmissing-prototypes -Wmissing-declarations  findoidjoins.c   -o
findoidjoins
/tmp/cc0114611.o: In function `main':
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:18: multiple definition of `main'
/usr/lib/libln.a(libmain.o)(.text+0x0): first defined here
ld: Warning: size of symbol `main' changed from 17 to 636 in /tmp/cc0114611.o
/usr/lib/libln.a(libmain.o): In function `main':
libmain.o(.text+0x5): undefined reference to `yylex'
/tmp/cc0114611.o: In function `main':
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:28: undefined reference to `halt'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:31: undefined reference to `connectdb'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:33: undefined reference to `on_error_continue'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:34: undefined reference to `on_error_stop'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:36: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:37: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:50: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:51: undefined reference to `get_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:53: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:61: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:62: undefined reference to `get_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:64: undefined reference to `set_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:65: undefined reference to `fetch'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:67: undefined reference to `set_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:68: undefined reference to `reset_fetch'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:69: undefined reference to `fetch'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:71: undefined reference to `unset_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:85: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:86: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:87: undefined reference to `fetch'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:90: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:91: undefined reference to `set_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:93: undefined reference to `set_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:96: undefined reference to `set_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:97: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:98: undefined reference to `PQclear'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:100: undefined reference to `set_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:101: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:102: undefined reference to `PQclear'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:103: undefined reference to `unset_result'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:105: undefined reference to `doquery'
/var/local/src/pgsql/CURRENT/pgsql/contrib/findoidjoins/findoidjoins.c:107: undefined reference to `disconnectdb'
gmake: *** [findoidjoins] Error 1