I am seeing regression test failures on HPUX 11.23 (on ia64) using gcc
3.4.1. The failures occur because refint.so fails to load:
/usr/lib/hpux32/dld.so: Unsatisfied code symbol '__divdi3' in load module '/house/tgl/pgsql/src/test/regress/../../../contrib/spi/refint.so'.
ERROR: could not load library "/house/tgl/pgsql/src/test/regress/../../../contrib/spi/refint.so": Unresolved external
Several of the contrib regression tests fail similarly. The problem is
that the .so files get linked without mentioning libgcc.a, and
apparently this platform won't resolve the references to link to the
same routines in the backend.
There is no problem with modules that are linked using Makefile.shlib,
because it knows to add the appropriate libgcc reference to the link.
But the "MODULES" branch in pgxs.mk is not as smart. It's effectively
relying on the DLSUFFIX rule supplied by the platform-specific makefile.
Those rules have always been a few bricks shy of a load, IMHO.
The obvious solution to this is to use Makefile.shlib all the time,
but there's a problem: Makefile.shlib is only designed to build a single
shlib per build subdirectory, and contrib/spi wants to build several.
I don't see any easy way to rejigger Makefile.shlib to support multiple
shared libraries at once --- anyone see a way?
A klugy workaround is to build all the modules in contrib/spi into a
single shared library. This is ugly but I can't level any worse charge
than "ugly" against it.
The other contrib modules build no more than one shared library apiece,
and could trivially be converted to the MODULE_big build path. Or more
likely, redefine the MODULES case in pgxs.mk to support only one module
in a directory, and use Makefile.shlib all the time.
regards, tom lane
pgsql-hackers by date
|Next:||From: Lamar Owen||Date: 2004-10-24 03:21:12|
|Subject: Re: Time off|
|Previous:||From: Josh Berkus||Date: 2004-10-24 02:24:52|
|Subject: Re: Proposed TODO: CREATE .... WITH OWNER;|