Re: AIX compilation problems (was Re: Proposal ...)

From: Samuel A Horwitz <horwitz(at)argoscomp(dot)com>
To: Zeugswetter Andreas SB SD <ZeugswetterA(at)spardat(dot)at>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: AIX compilation problems (was Re: Proposal ...)
Date: 2002-10-09 12:26:26
Message-ID: Pine.A32.3.91.1021009082603.62002B-100000@argos
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Has this fix been applied to the cvs yet, I am still getting the same
error

On Tue, 1 Oct 2002, Zeugswetter Andreas SB SD wrote:

> Date: Tue, 1 Oct 2002 10:23:13 +0200
> From: Zeugswetter Andreas SB SD <ZeugswetterA(at)spardat(dot)at>
> To: Peter Eisentraut <peter_e(at)gmx(dot)net>
> Cc: PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
> Subject: Re: AIX compilation problems (was Re: [HACKERS] Proposal ...)
>
>
> > > Attached is a patch to fix the mb linking problems on AIX. As a nice side effect
> > > it reduces the duplicate symbol warnings to linking libpq.so and libecpg.so
> > > (all shlibs that are not postmaster loadable modules).
> >
> > Can you explain the method behind your patch? Have you tried -bnogc?
>
> -bnogc would (probably) have been the correct switch reading the man page,
> but the method was previously not good since it involved the following:
>
> 1. create a static postgres executable from the SUBSYS.o's
> 2. create an exports file from above
> 3. recreate a shared postgres executable
>
> This naturally had a cyclic dependency, that could not properly be
> reflected in the Makefile (thus a second make sometimes left you with
> a static postgres unless you manually removed postgres.imp).
>
> Now it does:
> postgres.imp: $(OBJS)
> create a temporary SUBSYS.o from all $(OBJS)
> create a postgres.imp from SUBSYS.o
> rm temporary SUBSYS.o
>
> postgres: postgres.imp
> link a shared postgres
>
> A second change was to move the import and export files to the end of the link line,
> then the linker knows not to throw a duplicate symbol warning, and keeps all symbols
> that are mentioned in the exports file (== -bnogc restricted to $(OBJS) symbols).
>
> Thus now only libpq.so and libecpg.so still show the duplicate symbol warnings since their
> link line should actually not include postgres.imp . I did not see how to make a difference
> between loadable modules (need postgres.imp) and interface libraries (do not need postgres.imp),
> but since the resulting libs are ok, I left it at that.
>
> I tested both gcc and xlc including regression tests.
>
> Andreas
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

horwitz(at)argoscomp(dot)com (Samuel A Horwitz)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2002-10-09 13:32:50 Re: [pgsql-performance] Large databases, performance
Previous Message Shridhar Daithankar 2002-10-09 08:25:28 Re: Large databases, performance