Hello! We should not call CPU_COUNT when not defined in glibc.
2011-08-03 Uros Bizjak <ubiz...@gmail.com> * config/linux/proc.c (gomp_cpuset_popcount): Rename from cpuset_popcount. No more static. (gomp_init_num_threads): Update call to cpuset_popcount. (get_num_procs): Ditto. * config/linux/affinity.c: Call gomp_cpuset_popcount. * libgomp.h (gomp_cpuset_popcount): Declare. Bootstrapped on x86_64-pc-linux-gnu, testing in progress. OK if it passes? Uros.
Index: libgomp.h =================================================================== --- libgomp.h (revision 177229) +++ libgomp.h (working copy) @@ -463,6 +463,10 @@ extern unsigned gomp_resolve_num_threads /* proc.c (in config/) */ +#ifdef HAVE_PTHREAD_AFFINITY_NP +extern unsigned long gomp_cpuset_popcount (cpu_set_t *); +#endif + extern void gomp_init_num_threads (void); extern unsigned gomp_dynamic_max_threads (void); Index: config/linux/proc.c =================================================================== --- config/linux/proc.c (revision 177229) +++ config/linux/proc.c (working copy) @@ -40,8 +40,8 @@ #endif #ifdef HAVE_PTHREAD_AFFINITY_NP -static unsigned long -cpuset_popcount (cpu_set_t *cpusetp) +unsigned long +gomp_cpuset_popcount (cpu_set_t *cpusetp) { #ifdef CPU_COUNT /* glibc 2.6 and above provide a macro for this. */ @@ -76,7 +76,7 @@ gomp_init_num_threads (void) if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), &cpuset) == 0) { /* Count only the CPUs this process can use. */ - gomp_global_icv.nthreads_var = cpuset_popcount (&cpuset); + gomp_global_icv.nthreads_var = gomp_cpuset_popcount (&cpuset); if (gomp_global_icv.nthreads_var == 0) gomp_global_icv.nthreads_var = 1; return; @@ -99,7 +99,7 @@ get_num_procs (void) if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), &cpuset) == 0) { - int ret = cpuset_popcount (&cpuset); + int ret = gomp_cpuset_popcount (&cpuset); return ret != 0 ? ret : 1; } } Index: config/linux/affinity.c =================================================================== --- config/linux/affinity.c (revision 177229) +++ config/linux/affinity.c (working copy) @@ -56,7 +56,7 @@ gomp_init_affinity (void) CPU_ZERO (&cpusetnew); if (gomp_cpu_affinity_len == 0) { - unsigned long count = CPU_COUNT (&cpuset); + unsigned long count = gomp_cpuset_popcount (&cpuset); if (count >= 65536) count = 65536; gomp_cpu_affinity = malloc (count * sizeof (unsigned short));