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

Поиск
Список
Период
Сортировка
От Zeugswetter Andreas SB SD
Тема Re: AIX compilation problems (was Re: Proposal ...)
Дата
Msg-id 46C15C39FEB2C44BA555E356FBCD6FA4961EA8@m0114.s-mxs.net
обсуждение исходный текст
Ответ на AIX compilation problems (was Re: Proposal ...)  ("Zeugswetter Andreas SB SD" <ZeugswetterA@spardat.at>)
Ответы Re: AIX compilation problems (was Re: Proposal ...)  (Samuel A Horwitz <horwitz@argoscomp.com>)
Re: AIX compilation problems (was Re: Proposal ...)  (Samuel A Horwitz <horwitz@argoscomp.com>)
Список pgsql-hackers
> > 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


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Yury Bokhoncovich
Дата:
Сообщение: Re: 7.2.3 patching done
Следующее
От: Philip Warner
Дата:
Сообщение: pg_dump and large files - is this a problem?