On 2/1/2012 3:12 PM, Paul H. Hargrove wrote:
> This is WRONG.
> The compiler has reported an error: "(E) Missing argument(s)" and yet
> exited with $? = 0
> I am looking at xlc docs to see if there is some compiler flag to be set.
From "man xlc":
> Stops the compiler after the first phase if the
> severity level of errors detected
> equals or exceeds the specified level, <sev>. The
> severity levels in increasing order
> of severity are:
> i = informational messages
> w = warning messages
> e = error messages (C only)
> s = severe error messages
> Default: -qhalt=s
Which explains why an "(E)" message was non-fatal (both at configure
time AND at build time).
Looking again at configure.ac I am not too surprised really.
In general my experience is that compilers don't consider too few or too
many arguments to be fatal.
This is behavior is perhaps a hold-over from pre-ANSI days when
prototype and/or stdargs were seldom used.
The result is that configure probes like the one for old-vs-new
sched_setaffinity() are NOT reliable across compilers.
With that out of the way, I am please to say that when configuring
hwloc-1.3.1 with "CFLAGS=-qhalt=e" the correct variant of
sched_setaffinity() is detected. This gets rid of the messages
regarding sched_setaffinity() at build time, and the related test
failures w/ SIGSEGV. (I still have my assetion failure in the
linux-libnuma test, but we know that occurs w/ gcc as well).
I am not sure if one should fix this by:
a) Document the need for CFLAGS=-qhalt=e
b) Force "-qhalt=e" at configure time when CC=xlc
c) Find some other way to fix the configure probe
My vote is for "(b)", but I don't know if that fits with the ompi/hwloc
Paul H. Hargrove PHHargrove_at_[hidden]
Future Technologies Group
HPC Research Department Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory Fax: +1-510-486-6900