Things I learned about PG8 on AIX5.3 with XLC compiler

Started by Mohan, Rossalmost 21 years ago5 messagesgeneral
Jump to latest
#1Mohan, Ross
RMohan@arbinet.com

Just a short,terse list:

Don't use nondefault optimization. There is something going on
with the code that breaks, runtime, when compiled (which works
fine per se) with higher optimization levels. IPA is a real
difficulty.

Remember to set OBJECT_MODE=64 in OS env!

upgrading m4/autoconf and then configure seems to really help.
(m4 needs __STDC__ to get around "va_list" compilation error)

setting LIBPATH is quite helpful.

#2Chris Browne
cbbrowne@acm.org
In reply to: Mohan, Ross (#1)
Re: Things I learned about PG8 on AIX5.3 with XLC compiler

RMohan@arbinet.com ("Mohan, Ross") writes:
It would be worthwhile to try to formulate this as a patch to the
FAQ_AIX file. Probably something like....

PostgreSQL 8 on AIX 5.3, compiled using VisualAge C
------------------------------------------------------

- Use only default optimization. Higher optimization levels have been
observed to lead to runtime problems, particularly with IPA

- Be sure to "export OBJECT_MODE=64" to compile in 64 bit mode

- Upgrading m4/autoconf helps with ./configure.

- m4 needs __STDC__ defined in order to avoid "va_list" compilation
errors.

- Setting LIBPATH (to what???) has proved useful
--
(format nil "~S@~S" "cbbrowne" "acm.org")
http://www.ntlug.org/~cbbrowne/sap.html
Rules of the Evil Overlord #78. "I will not tell my Legions of Terror
"And he must be taken alive!" The command will be: ``And try to take
him alive if it is reasonably practical.''"
<http://www.eviloverlord.com/&gt;

#3Mohan, Ross
RMohan@arbinet.com
In reply to: Chris Browne (#2)
Re: Things I learned about PG8 on AIX5.3 with XLC compiler

:-)

LIBPATH=./usr/local/lib:/local/lib:/lib:/usr/lib:/usr/local/pgsql/lib:/home/app/postgresql-8.0.2/src/port

While I very much wish I had this little list before I started this, I'd
be loathe to consider it the end of the story. I'd say, maybe, "A Small Subset
of Helpful Things to Consider".

I can get it to compile under all optimization levels (an optimization level
is a bundle of little features...), but on almost all of them, the runtime
breaks ( e.g. at initdb -D with "...broken node..." errors)

I am going to try to optimize this thing, still. Several things are in the way:

1) Many (many!) uninitialized variables in code. Optimizers don't
do well with this.

2) Not clear (to me, a nonprogrammer) whether this is GNU C, ANSI C,
"Postgres" C, or what the overall coding protocol is. This would
be helpful in dis-assembling the pre-packaged compiler optimization
bundles, and just picking the compiler flags the code can withstand.

3) Compilation with profiling/debugging support appears, also, to break
the runtime. Makes it hard to...erm...debug.

Anyways, tallyho.

-- Ross

p.s. by the way, there is no more "Visual Age" compiler. It's been re-branded
as XL C/C++. :-)

-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Chris Browne
Sent: Tuesday, June 07, 2005 3:23 PM
To: pgsql-general@postgresql.org
Subject: Re: [GENERAL] Things I learned about PG8 on AIX5.3 with XLC compiler

RMohan@arbinet.com ("Mohan, Ross") writes:
It would be worthwhile to try to formulate this as a patch to the FAQ_AIX file. Probably something like....

PostgreSQL 8 on AIX 5.3, compiled using VisualAge C
------------------------------------------------------

- Use only default optimization. Higher optimization levels have been
observed to lead to runtime problems, particularly with IPA

- Be sure to "export OBJECT_MODE=64" to compile in 64 bit mode

- Upgrading m4/autoconf helps with ./configure.

- m4 needs __STDC__ defined in order to avoid "va_list" compilation
errors.

- Setting LIBPATH (to what???) has proved useful
--
(format nil "~S@~S" "cbbrowne" "acm.org") http://www.ntlug.org/~cbbrowne/sap.html
Rules of the Evil Overlord #78. "I will not tell my Legions of Terror "And he must be taken alive!" The command will be: ``And try to take him alive if it is reasonably practical.''" <http://www.eviloverlord.com/&gt;

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

#4Neil Conway
neilc@samurai.com
In reply to: Mohan, Ross (#3)
Re: Things I learned about PG8 on AIX5.3 with XLC compiler

Mohan, Ross wrote:

1) Many (many!) uninitialized variables in code. Optimizers don't
do well with this.

Um, what?

2) Not clear (to me, a nonprogrammer) whether this is GNU C, ANSI C,
"Postgres" C, or what the overall coding protocol is.

Postgres is mostly ANSI C89, with limited use of GNU C extensions (which
should be limited to inside #ifdef __GNUC__ blocks, AFAIK).

-Neil

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Neil Conway (#4)
Re: Things I learned about PG8 on AIX5.3 with XLC compiler

Neil Conway <neilc@samurai.com> writes:

Mohan, Ross wrote:

2) Not clear (to me, a nonprogrammer) whether this is GNU C, ANSI C,
"Postgres" C, or what the overall coding protocol is.

Postgres is mostly ANSI C89, with limited use of GNU C extensions (which
should be limited to inside #ifdef __GNUC__ blocks, AFAIK).

s/mostly/entirely/ and s/should be/are/, please. If you can identify
specific violations of those coding rules, we are all ears.

BTW, we really really need some more non-gcc compilers in the
buildfarm. I realized this afternoon that CVS tip is breaking the
perennial bugaboo that gcc does not complain about

static int foo(...);

...

int foo(...)
{
...
}

that is omitting "static" from the actual routine definition --- which
plenty of other compilers do complain about; so why don't we have a few
buildfarm members that will yap loud and long about this?

regards, tom lane