Thread
-
Re: Call for platforms
Giles Lean <giles@nemeton.com.au> — 2001-04-07T04:43:39Z
> Thanks! I'm not too worried about 1.4.2, but be sure to let us know what > the problem was; it may help out someone else... NetBSD-1.4.2/i386 passes all tests with 7.1RC3. My previous test failure on this platform was due to the timezone information on the test system not being standard; once that was corrected all tests pass. It is still necessary to add -ltermcap after -ledit in src/Makefile.global to have functional history editing in psql. Regards, Giles
-
Re: Re: Call for platforms
tih@kpnqwest.no — 2001-04-07T18:09:57Z
Giles Lean <giles@nemeton.com.au> writes: > It is still necessary to add -ltermcap after -ledit in > src/Makefile.global to have functional history editing in psql. This is a weakness in the configure script: it goes through a loop where it tries to link a program that calls readline() with, in order, "-lreadline", "-lreadline -ltermcap", "-lreadline -lncurses", "-lreadline -lcurses", "-ledit", "-ledit -ltermcap", "-ledit -lncurses" and "-ledit -lcurses". The first link that succeeds wil determine which libraries are used. However, on some platforms with dynamic libraries, the link will succeed as soon as readline() is present -- but the shared library that contains it doesn't contain a complete specification of all other libraries it needs at run-time (the executable is expected to hold this information), and the program fails at run-time even though it linked without any error message. I don't know how the situation could best be improved, though... -tih -- The basic difference is this: hackers build things, crackers break them.
-
Re: Re: Call for platforms
Peter Eisentraut <peter_e@gmx.net> — 2001-04-07T19:01:37Z
Tom Ivar Helbekkmo writes: > Giles Lean <giles@nemeton.com.au> writes: > > > It is still necessary to add -ltermcap after -ledit in > > src/Makefile.global to have functional history editing in psql. > > This is a weakness in the configure script: it goes through a loop > where it tries to link a program that calls readline() with, in order, > "-lreadline", "-lreadline -ltermcap", "-lreadline -lncurses", > "-lreadline -lcurses", "-ledit", "-ledit -ltermcap", "-ledit > -lncurses" and "-ledit -lcurses". The first link that succeeds wil > determine which libraries are used. However, on some platforms with > dynamic libraries, the link will succeed as soon as readline() is > present -- but the shared library that contains it doesn't contain a > complete specification of all other libraries it needs at run-time > (the executable is expected to hold this information), and the program > fails at run-time even though it linked without any error message. On such a platform it would hardly be possible to detect anything with any reliably. A linker that links a program "succesfully" while the program really needs more libraries to be runnable isn't very useful. -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
-
Re: Re: Call for platforms
tih@kpnqwest.no — 2001-04-07T19:41:04Z
Peter Eisentraut <peter_e@gmx.net> writes: > On such a platform it would hardly be possible to detect anything with any > reliably. A linker that links a program "succesfully" while the program > really needs more libraries to be runnable isn't very useful. You're right, of course -- it's a bug in the linkage loader on the platform in question. NetBSD/vax has it: $ uname -a NetBSD varg.i.eunet.no 1.5T NetBSD 1.5T (VARG) #4: Thu Apr 5 23:38:04 CEST 2001 root@varg.i.eunet.no:/usr/src/sys/arch/vax/compile/VARG vax $ cat > foo.c int main (int argc, char **argv) { readline(); } $ cc -o foo foo.c /tmp/ccFTO4Mu.o: Undefined symbol `_readline'referenced from text segment collect2: ld returned 1 exit status $ cc -o foo foo.c -ledit $ echo $? 0 $ ./foo /usr/libexec/ld.so: Undefined symbol "_tputs"in foo:/usr/lib/libedit.so.2.5 $ echo $? 1 $ ldd foo foo: -ledit.2 => /usr/lib/libedit.so.2.5 (0x181b000) -lc.12 => /usr/lib/libc.so.12.74 (0x182d000) $ -tih -- The basic difference is this: hackers build things, crackers break them.