I think that bug report does apply, but the fix they suggest (after adding the missing "return") does NOT.
I added the following 4 lines to the bottom of hwloc-1.4/src/misc.c:

#if 1 /* XXX: replace '1' with a probe for gccfss */
#include <string.h>
int __ffssi2 (int x) { return ffs(x); }
#endif

And reconfigured/rebuilt hwloc in a fresh directory (just to be safe).
Now "make check" is rid of the undefined symbols, but I get test FAILures instead:
PASS: test-hwloc-assembler.sh
FAIL: test-hwloc-calc.sh
FAIL: test-hwloc-distances.sh
FAIL: test-hwloc-distrib.sh
FAIL: test-hwloc-ls.sh
========================================================
4 of 5 tests failed
Please report to http://www.open-mpi.org/projects/hwloc/
========================================================

Same result on 1.3.1 except, of course, there are fewer tests:
FAIL: test-hwloc-calc.sh
FAIL: test-hwloc-distrib.sh
========================================================
2 of 2 tests failed
Please report to http://www.open-mpi.org/community/help/
========================================================

I found the failing tests leave core files behind.
Looking at the hwloc-calc failure for instance, dbx tells me:
t@1 (l@1) program terminated by signal SEGV (no mapping at the fault address)
0xff3866a0: __ffssi2       :    save     %sp, -96, %sp

Without going any further that appears to be a stack overflow ("no mapping" and the only address register is %sp). The "where" command in dbx confirms that the "fix" that I applied just results in infinite recursion.

Editing [BUILD_DIR]/include/private/autogen/config.h to remove all *HAVE_*FFS definitions did NOT help. This appears to be because include/private/misc.h looks for __GNUC__ first and doesn't consider HAVE_FFS or HWLOC_HAVE_FFS.
If I also hack out that portion of misc.h THEN I can pass all the tests!

So, in short: when building w/ this compiler, hwloc needs to behave as if the system lacks ffs().

Making that happen is non-trivial because there are no preprocessor symbols defined by gccfss that would allow compile-time #if checks to distinguish gccfss from "vanilla" gcc. The only difference is in the string value of __VERSION__, which one could check at configure time.

Of course documenting that hwloc doesn't support this broken compiler is another option.

-Paul

On 2/1/2012 4:22 AM, Brice Goglin wrote:
Does this bug report apply?
     https://forums.oracle.com/forums/thread.jspa?threadID=1997328
Brice


Le 01/02/2012 03:51, Paul H. Hargrove a écrit :
The problem I described below is ALSO present in hwloc-1.4
-Paul

On 1/31/2012 4:57 PM, Paul H. Hargrove wrote:
This report is the flip-side of the problem w/ Solaris Studio
compilers on x86-64.
With Solaris-10 on SPARC, I find I *can* build hwloc-1.3.1 w/ SS12.x,
but instead am failing w/ gcc.

Keep in mind that /usr/bin/gcc on this system is one from Sun, not
the FSF:
-bash-3.00$ which gcc
/usr/bin/gcc
-bash-3.00$ gcc --version
sparc-sun-solaris2.10-gcc (GCC) 4.0.4 (gccfss)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There
is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
The key bit there is "(gccfss)" = "GCC for SPARC Systems"

The problem is a load-time missing symbol when I "gmake check":
$ gmake check V=1
Making check in src
[...]
gmake[2]: Entering directory
`/home/hargrove/OMPI/hwloc-1.3.1-solaris10-sparcT2-gccfss404/BLD/utils'
ld.so.1: hwloc-calc: fatal: relocation error: file
/home/hargrove/OMPI/hwloc-1.3.1-solaris10-sparcT2-gccfss404/BLD/src/.libs/libhwloc.so.4:
symbol __ffssi2: referenced symbol not found
FAIL: test-hwloc-calc.sh
ld.so.1: hwloc-distrib: fatal: relocation error: file
/home/hargrove/OMPI/hwloc-1.3.1-solaris10-sparcT2-gccfss404/BLD/src/.libs/libhwloc.so.4:
symbol __ffssi2: referenced symbol not found
FAIL: test-hwloc-distrib.sh
========================================================
2 of 2 tests failed
Please report to http://www.open-mpi.org/community/help/
========================================================
Again I am sorry I didn't get a chance to discover this in 1.3.1rc2.

-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

Reply via email to