Bugzilla – Bug 4586
int64_t not defined on Suse9/x86_64 for non-gcc compilers
Last modified: 2007-06-13 17:40:56
You need to log in before you can comment on or make changes to this bug.
When using intel cc (icc) on suse9/x86_64, globus_soap_messaging fails to compile because xsd_long.h depends on int64_t. int64_t is only defined by sys/types.h on suse9/x86_64 for GNU compilers. A manual workaround of adding "typedef long long int64_t" works in xsd_long.h, but we should find a better solution. That should probably go into globus_core or globus_common, but I am filing it here first as it is where the symptom first appears.
There's a POSIX header file called <stdint.h> that should define the sized integer values (though int64_t is not availble if the host doesn't provide a type). 1) Does this header exist on this platform, and does it define the type? If so we may be able to get by adding a check for this header to common or core's configure script. 2) If not, I think we should probably do this check anyway in common or core, and then if it isn't present define some reasonable types in the configure script. joe
1) Yes, it exists and defines the type: # if __WORDSIZE == 64 typedef long int int64_t; # else __extension__ typedef long long int int64_t; # endif #endif 2) Mike - can we check for the existence of this and use it in common? I have a machine we can test on at Teragrid to validate fixes.
Hmm, it looks like core in HEAD already has the work done for this. I'll get it into globus_4_0_branch.
Added a few lines to HEAD common to include stdint.h and ported all to globus_4_0_branch.
verified broken and then fixed tg-login.sdsc.teragrid.org, let me know if there are still problems on other hosts.