Yes, with no warning, and I can also execute my a.out.
$> cc toto.c
$> ./a.out
$> cat toto.c
int main(int argc, char *argv[])
{
return __builtin_ffsl((unsigned long) argc);
}
De : Brice Goglin [mailto:brice.gog...@inria.fr]
Envoyé : jeudi 5 janvier 2017 15:03
À : Xavier LACOSTE
Cc : Hardware locality user list
Objet : Re: [hwloc-users] Building hwloc on Cray with
/opt/cray/craype/2.5.4/bin/cc
Does this even build with the cray compiler?
int main(int argc, char *argv[])
{
return __builtin_ffsl((unsigned long) argc);
}
Le 05/01/2017 14:56, Xavier LACOSTE a écrit :
Indeed,
If I had a #undef __GNUC__ in misc.h the compilation finished (I still have the
link complaining about recompiling with -fPIE and linking with -pie, but I
should be able to handle that)
I tried all available cray cc (2.2.1 and 2.5.6) and they behave the same.
I'll see how to report bug to Cray and may ask for a new compiler installation.
XL.
De : Brice Goglin [mailto:brice.gog...@inria.fr]
Envoyé : jeudi 5 janvier 2017 14:39
À : Xavier LACOSTE
Cc : Hardware locality user list
Objet : Re: [hwloc-users] Building hwloc on Cray with
/opt/cray/craype/2.5.4/bin/cc
Ah ok now I remember we've seen the same issue 4 years ago.
https://mail-archive.com/hwloc-users@lists.open-mpi.org/msg00816.html
Basically the Cray compiler claimed to be GCC compatible it was not. But that
users explicitly requested the cray compiler to behave as GNU with "-h gnu".
Did you pass any option to the compiler?
We could workaround the issue by not using __builtin_ffsl() when we detect the
cray compiler, but that would be overkill since earlier versions worked fine.
Do you have ways to report bugs to Cray? Or install a different cray compiler
version?
Brice
Le 05/01/2017 14:25, Xavier LACOSTE a écrit :
It seems that the __GNU__ is defined so I don't get into the HWLOC_HAVE_FFSL
section.
Maybe because I already configured once with gcc before ? Do I have to do
anything more than make clean an reconfigure to change compiler ?
De : Brice Goglin [mailto:brice.gog...@inria.fr]
Envoyé : jeudi 5 janvier 2017 14:18
À : Xavier LACOSTE
Cc : Hardware locality user list
Objet : Re: [hwloc-users] Building hwloc on Cray with
/opt/cray/craype/2.5.4/bin/cc
configure seems to have detected ffsl() properly, but it looks like our ffsl()
redefinition gets enabled anyway, and conflicts with the system-wide one.
Does it help if you comment out line #66 of include/private/misc.h ?
extern int ffsl(long) __hwloc_attribute_const;
Brice
Le 05/01/2017 13:52, Xavier LACOSTE a écrit :
Hello Brice,
I attached the files.
I could build hwloc and link with it using the default (gcc) compiler.
But If I use gcc to build the library I can link with gcc/icc/pgcc but not with
cc from cray.
Thanks,
XL.
De : Brice Goglin [mailto:brice.gog...@inria.fr]
Envoyé : jeudi 5 janvier 2017 12:50
À : Xavier LACOSTE
Cc : Hardware locality user list
Objet : Re: [hwloc-users] Building hwloc on Cray with
/opt/cray/craype/2.5.4/bin/cc
Hello Xavier
Can you send the /usr/include/string.h from that cray machine, your config.log
and include/private/autogen/config.h from the hwloc build directory?
Do you get the same error if building from the default compiler instead of
/opt/cray/craype/2.5.4/bin/cc?
thanks
Brice
Le 05/01/2017 12:31, Xavier LACOSTE a écrit :
Hello,
I'm trying to build hwloc on a cray machine with cray compiler
:/opt/cray/craype/2.5.4/bin/cc
I get the following error :
$> CC=cc ./configure --prefix=$PWD-cc-install
$> make
Making all in src
make[1]: Entering directory `/home/j0306818/xavier/hwloc-1.11.5/src'
CC bitmap.lo
CC-147 craycc: ERROR
Declaration is incompatible with "int ffsl(long)" (declared at line 526 of
"/usr/include/string.h").
Total errors detected in bitmap.c: 1
make[1]: *** [bitmap.lo] Error 1
make[1]: Leaving directory `/home/j0306818/xavier/hwloc-1.11.5/src'
make: *** [all-recursive] Error 1
Do you have any idea of what I am doing wrong ?
Is this a known issue ?
Another secondary question :
Hwloc builds correctly with gcc compiler but the CPUVendor field is not
available using this code :
#include
int main(int argc, char *argv[])
{
hwloc_topology_t topo;
hwloc_obj_t obj;
int err;
int i;
char obj_str[2048];
char attr_str[2048];
/* initialize a topology context */
err = hwloc_topology_init();
assert(!err);
/* insert optional topology configuration here */
/* build the topology created and configured above */
err = hwloc_topology_load(topo);
/* play with the topology here */
obj = hwloc_get_obj_by_type(topo, HWLOC_OBJ_PACKAGE, 0);
fprintf(stdout, "CPU_Vendor : %s \n",
hwloc_obj_get_info_by_name(obj,"CPUVendor"));
hwloc_obj_type_snprintf(obj_str, 2048, obj, 1);
hwloc_obj_attr_snprintf(attr_str,2048, obj, " | ", 1);
fprintf(stdout, "%s : %s\n", obj_str, attr_str);
/* terminate this topol