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":
-qhalt=<sev>
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).
<rant>
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.
</rant>
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
philosophy.
-Paul
--
Paul H. Hargrove phhargr...@lbl.gov
Future Technologies Group
HPC Research Department Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory Fax: +1-510-486-6900