> > > 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.

Note that this behavior did thus not change. 

> 
> I tested both gcc and xlc including regression tests.

What happens with this now ?

Thanx
Andreas

Attachment: mb_link_patch4.gz
Description: mb_link_patch4.gz


---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to