This is the mail archive of the mailing list for the newlib project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: _NEWLIB_VERSION exposure through sys/cdefs.h

----- Original Message -----
> From: "Jonathan Roelofs" <>
> To:, "Corinna Vinschen" <>
> Cc: "Dan Albert" <>, "JF Bastien" <>
> Sent: Wednesday, September 17, 2014 5:09:32 PM
> Subject: _NEWLIB_VERSION exposure through sys/cdefs.h
> Corinna,
> In libc++, we'd like to be able to tell when the underlying libc is Newlib.
> At
> the moment, that requires us to do things like this:
> #if defined(__has_include) && __has_include(<newlib.h>)
> #include <newlib.h>
> #endif
> #if defined(_NEWLIB_VERSION)
> ...
> #endif
> The problem with that strategy is that it does not work when using gcc, as it
> doesn't have __has_include support yet.  It came up in discussion that
> sys/cdefs.h might be the right place for that, as that's where glibc puts
> __GLIBC__.
> Would there be an objection to #include <newlib.h> from sys/cdefs.h?  Is
> there a
> better way to detect Newlib that I've overlooked?

Hi Jonathan,

Corinna is on vacation until Oct 8th.  

My version of glibc has __GLIBC__ defined in features.h which in glibc is
included by sys/cdefs.h.

I wouldn't have a problem with simply adding a __NEWLIB__ macro in newlib's
features.h.  I also wouldn't have a real problem with including newlib.h from sys/cdefs.h
though I notice one of the newlib.h macros is missing an underscore and needs to be fixed.

A way of solving your problem now would be to look for:


that is set by <machine/_default_types.h> which is a newlib-specific header
that is included by sys/cdefs.h.  I don't see any platform overriding sys/cdefs.h
except for x86-linux and it eventually includes <machine/_default_types.h> as


-- Jeff J.

> Cheers,
> Jon
> --
> Jon Roelofs
> CodeSourcery / Mentor Embedded

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]