aix build question re: duplicate symbol warning

Started by Kevin Murphyabout 20 years ago8 messages
#1Kevin Murphy
murphy@genome.chop.edu

Hi all,

I'm trying to build PG 8.1 beta on an AIX server.

The 'make' finishes without errors, but I'm getting lots of duplicate
symbol warnings like the following one. What am I to make of these?

gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-fno-strict-aliasing -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -o libpq.\
so libpq.a -L../../../src/port -L../../../src/port -lnsl
-Wl,-bI:../../../src/backend/postgres.imp -Wl,-bE:libpq.exp
ld: 0711-224 WARNING: Duplicate symbol:
.pqStrerror

ld: 0711-224 WARNING: Duplicate symbol:
.pqGetpwuid

...

I used a vanilla configure except for --without-readline.

Tools that seem to be in use:

AIX 5.1
GNU Make 3.80
gcc 3.2.2
ld - AIX version

This is an 8-CPU machine that recently became disused in our research
department and looks like a nice potential PG host.

Thanks,
Kevin Murphy

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kevin Murphy (#1)
Re: aix build question re: duplicate symbol warning

Kevin Murphy <murphy@genome.chop.edu> writes:

I'm trying to build PG 8.1 beta on an AIX server.

The 'make' finishes without errors, but I'm getting lots of duplicate
symbol warnings like the following one. What am I to make of these?

gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-fno-strict-aliasing -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -o libpq.\
so libpq.a -L../../../src/port -L../../../src/port -lnsl
-Wl,-bI:../../../src/backend/postgres.imp -Wl,-bE:libpq.exp
ld: 0711-224 WARNING: Duplicate symbol:
.pqStrerror

Hmm. pqStrerror is defined in libpgport (which is linked into the
backend) as well as libpq. ISTM that libpq should not be linked with
-Wl,-bI:../../../src/backend/postgres.imp, since it's not intended to
be loaded into the backend. Without having looked at the code, I'm
wondering if the AIX makefiles stick that option into LDFLAGS_SL rather
than someplace more restricted.

regards, tom lane

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#2)
Re: [GENERAL] aix build question re: duplicate symbol warning

I wrote:

Hmm. pqStrerror is defined in libpgport (which is linked into the
backend) as well as libpq. ISTM that libpq should not be linked with
-Wl,-bI:../../../src/backend/postgres.imp, since it's not intended to
be loaded into the backend. Without having looked at the code, I'm
wondering if the AIX makefiles stick that option into LDFLAGS_SL rather
than someplace more restricted.

It seems that the right place to put this is BE_DLLLIBS, which is a
macro that probably didn't exist when the AIX support was last looked
at. But both Windows and Darwin ports use it now, so we may as well
bring AIX up to speed. Would you try the attached patch and see if it
gets rid of the warnings? Also check that regression tests and contrib
build/regression tests still work.

regards, tom lane

#4Kevin Murphy
murphy@genome.chop.edu
In reply to: Tom Lane (#3)
Re: [GENERAL] aix build question re: duplicate symbol warning

Tom Lane wrote:

I wrote:

Hmm. pqStrerror is defined in libpgport (which is linked into the
backend) as well as libpq. ISTM that libpq should not be linked with
-Wl,-bI:../../../src/backend/postgres.imp, since it's not intended to
be loaded into the backend. Without having looked at the code, I'm
wondering if the AIX makefiles stick that option into LDFLAGS_SL rather
than someplace more restricted.

It seems that the right place to put this is BE_DLLLIBS, which is a
macro that probably didn't exist when the AIX support was last looked
at. But both Windows and Darwin ports use it now, so we may as well
bring AIX up to speed. Would you try the attached patch and see if it
gets rid of the warnings? Also check that regression tests and contrib
build/regression tests still work.

Tom, That patch worked, as far as eliminating those duplicate symbol
warnings. I have some dependency issues (libintl) that I have to
resolve in order to test the build.

-Kevin Murphy

#5Andrew Dunstan
andrew@dunslane.net
In reply to: Kevin Murphy (#4)
Re: [GENERAL] aix build question re: duplicate symbol warning

Kevin Murphy wrote:

It seems that the right place to put this is BE_DLLLIBS, which is a
macro that probably didn't exist when the AIX support was last looked
at. But both Windows and Darwin ports use it now, so we may as well
bring AIX up to speed. Would you try the attached patch and see if it
gets rid of the warnings? Also check that regression tests and contrib
build/regression tests still work.

Tom, That patch worked, as far as eliminating those duplicate symbol
warnings. I have some dependency issues (libintl) that I have to
resolve in order to test the build.

Or you could build without nls in the first instance.

cheers

andrew

#6Zeugswetter Andreas DAZ SD
ZeugswetterA@spardat.at
In reply to: Andrew Dunstan (#5)
Re: [GENERAL] aix build question re: duplicate symbol warning

Hmm. pqStrerror is defined in libpgport (which is linked into the
backend) as well as libpq. ISTM that libpq should not be

linked with

-Wl,-bI:../../../src/backend/postgres.imp, since it's not

intended to

be loaded into the backend. Without having looked at the code, I'm
wondering if the AIX makefiles stick that option into LDFLAGS_SL
rather than someplace more restricted.

It seems that the right place to put this is BE_DLLLIBS,
which is a macro that probably didn't exist when the AIX
support was last looked at. But both Windows and Darwin

yes

ports use it now, so we may as well bring AIX up to speed.
Would you try the attached patch and see if it gets rid of
the warnings? Also check that regression tests and contrib
build/regression tests still work.

works perfectly on AIX 4.3.3 with xlc. All regression tests pass, except
horology
that shows 7 extra -infinity rows. In contrib I tested btree_gist and
dblink
which also pass.

There are a few places left in contrib with duplicate warnings, some
because of
-l pgport and -I:postgres.imp but the main build is now free of those
warnings.

Thank you for the work, please apply.

Andreas

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Zeugswetter Andreas DAZ SD (#6)
Re: [GENERAL] aix build question re: duplicate symbol warning

"Zeugswetter Andreas DAZ SD" <ZeugswetterA@spardat.at> writes:

Thank you for the work, please apply.

Done. Thanks for testing it.

regards, tom lane

#8Kevin Murphy
murphy@genome.chop.edu
In reply to: Andrew Dunstan (#5)
Re: [GENERAL] aix build question re: duplicate symbol warning

Andrew Dunstan wrote:

Kevin Murphy wrote:

Would you try the attached patch and see if it
gets rid of the warnings? Also check that regression tests and contrib
build/regression tests still work.

Tom, That patch worked, as far as eliminating those duplicate symbol
warnings. I have some dependency issues (libintl) that I have to
resolve in order to test the build.

Or you could build without nls in the first instance.

Thanks, Andrew. I wasn't sure what was going on, because NLS is listed
as an optional feature in configure. But './configure --disable-nls'
did the trick. (Is there something wrong with the configure file, though?)

Sorry for the belated response. I'm happy Andreas hopped on it.

I was working on my next issue, which is 'make check' failing the stats
test; I see my problem in src/test/regress/log/postmaster log:

LOG: could not bind socket for statistics collector: Can't assign
requested address
LOG: disabling statistics collector for lack of working
socket

This seems to be due to a misconfiguration on this AIX box. 'localhost'
is not resolving properly.

Thanks for the help.

-Kevin Murphy