Re: [exim] Exim 4.80 RC2 uploaded

Top Page
Delete this message
Reply to this message
Author: Phil Pennock
Date:  
To: René Berber
CC: exim-users, exim-dev
Subject: Re: [exim] Exim 4.80 RC2 uploaded
On 2012-05-19 at 18:21 -0500, René Berber wrote:
> Building on Linux ( 2.6.12 ), with gcc 4.5.3 :


Which version of glibc ? Which distribution of Linux?

A number of the maintainers use Linux distributions, of various
flavours, so this is a little surprising. I'm fairly sure that the
developer who added the code causing your issues uses a Linux
distribution.

> Those constants are declared in limits.h, which is included by exim.h,
> but it (limits.h) has a guard which doesn't seem to be set by default:
>
> > # ifdef __USE_ISOC99
> >
> > /* Minimum and maximum values a `signed long long int' can hold.  */
> > #   define LLONG_MAX    9223372036854775807LL
> > #   define LLONG_MIN    (-LLONG_MAX - 1LL)

>
> Using make CC="gcc -std=gnu99", or with -std=c99, does not solve the
> problem, in fact nothing can be compiled.
>
> This didn't happen before (4.77, ...)


According to this post:
http://sources.redhat.com/ml/libc-alpha/2000-07/msg00067.html
and then this follow-up from Ulrich Drepper:
http://sources.redhat.com/ml/libc-alpha/2000-07/msg00074.html
this appears to have been fixed in <features.h> in 2000.

If you edit OS/os.h-Linux to add:
#include <features.h>
at the top, does that fix the problem? And if so, does it require
-std=gnu99 (or invocation as CC=c99) to fix it, or is it generically
fixed?

Does a Linux user know if features.h is specific to glibc or do other
Linux libc provide their own versions?

I'd have thought that other headers which depend upon these macros would
be pulling in <features.h> themselves, to get the right defines for the
compiler invocation.

-Phil