> > > 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
mb_link_patch4.gz
Description: mb_link_patch4.gz
---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster