Hi, Simon Josefsson <[EMAIL PROTECTED]> writes:
> I'm still not sure whether this is a guile or gnutls problem. Before > making changes in gnutls to override gnulib's gnu99 default, or adding > thinks like -fgnu89-inline, I want to understand the problem better. > Adding workarounds like that is easy to do, but years later the > workaround often start to cause new problems and it will be difficult to > know what to do. (Compare the -D_REENTRANT flag..) > > Would this problem go away if we removed all 'inline' tags from > functions in GnuTLS? No. What happens is that GMP declares/defines various functions as "extern inline" and expects the GNU semantics [0]. It properly guards against the C99 semantic change (at least GMP 4.2.2 does) using the recommended method [1]. However, it all looks as though Apple's GCC implemented C99 "extern inline" without defining `__GNUC_STDC_INLINE__', thereby defeating said method. A useful code snippet seems to confirm this hypothesis: https://svn.r-project.org/R/trunk/src/include/Rinlinedfuns.h /* Apple's gcc build >5400 (since Xcode 3.0) doesn't support GNU inline in C99 mode */ #if __APPLE_CC__ > 5400 && !defined(C99_INLINE_SEMANTICS) && __STDC_VERSION__ >= 199901L #define C99_INLINE_SEMANTICS 1 #endif So I suppose GMP and Guile just have to go ahead and duplicate this? Thanks, Ludovic. [0] A nice summary of the "extern inline" mess: http://gcc.gnu.org/ml/gcc/2006-11/msg00006.html . [1] http://gcc.gnu.org/gcc-4.3/porting_to.html _______________________________________________ Help-gnutls mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gnutls
