[PATCH 04/14] FreeBSD update of __GNUCLIKE_ASM, etc.

Craig Howland howland@LGSInnovations.com
Wed Apr 17 14:24:00 GMT 2013


On 04/17/2013 09:16 AM, Sebastian Huber wrote:
> These defines are used by FreeBSD header and source files.
>
> newlib/ChangeLog
> 2013-04-17  Sebastian Huber <sebastian.huber@embedded-brains.de>
>
> 	* libc/include/sys/cdefs.h (__CC_SUPPORTS_DYNAMIC_ARRAY_INIT):
> 	New define.
> 	....
> ---
>   newlib/libc/include/sys/cdefs.h |   66 +++++++++++++++++++++++++++++++++++++++
>   1 files changed, 66 insertions(+), 0 deletions(-)
>
> diff --git a/newlib/libc/include/sys/cdefs.h b/newlib/libc/include/sys/cdefs.h
> index fbcd024..b4bc272 100644
> --- a/newlib/libc/include/sys/cdefs.h
> +++ b/newlib/libc/include/sys/cdefs.h
> @@ -106,6 +106,72 @@
>   #endif
>   
>   /*
> + * This code has been put in place to help reduce the addition of
> + * compiler specific defines in FreeBSD code.  It helps to aid in
> + * having a compiler-agnostic source tree.
> + */
This is a clear delineation of the start of a block for a particular purpose, 
but it is not clear when it ends.  Should an "end of" marker be added (as an aid 
for future maintenance)?
> +
> +#if defined(__GNUC__) || defined(__INTEL_COMPILER)
> +
> +#if __GNUC__ >= 3 || defined(__INTEL_COMPILER)
> +#define __GNUCLIKE_ASM 3
> +#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
> +#else
> +#define __GNUCLIKE_ASM 2
> +#endif
> +#define __GNUCLIKE___TYPEOF 1
> +#define __GNUCLIKE___OFFSETOF 1
> +#define __GNUCLIKE___SECTION 1
> +
> +#ifndef __INTEL_COMPILER
> +# define __GNUCLIKE_CTOR_SECTION_HANDLING 1
> +#endif
> +
> +#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
> +# if defined(__INTEL_COMPILER) && defined(__cplusplus) \
> +    && __INTEL_COMPILER < 800
> +#  undef __GNUCLIKE_BUILTIN_CONSTANT_P
> +# endif
> +
> +#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) && !defined(__INTEL_COMPILER)
> +# define __GNUCLIKE_BUILTIN_VARARGS 1
> +# define __GNUCLIKE_BUILTIN_STDARG 1
> +# define __GNUCLIKE_BUILTIN_VAALIST 1
> +#endif
> +
> +#if defined(__GNUC__)
> +# define __GNUC_VA_LIST_COMPATIBILITY 1
> +#endif
> +
> +/*
> + * Compiler memory barriers, specific to gcc and clang.
> + */
> +#if defined(__GNUC__)
> +#define	__compiler_membar()	__asm __volatile(" " : : : "memory")
> +#endif
> +
> +#ifndef __INTEL_COMPILER
> +# define __GNUCLIKE_BUILTIN_NEXT_ARG 1
> +# define __GNUCLIKE_MATH_BUILTIN_RELOPS
> +#endif
> +
> +#define __GNUCLIKE_BUILTIN_MEMCPY 1
> +
> +/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */
> +#define __CC_SUPPORTS_INLINE 1
> +#define __CC_SUPPORTS___INLINE 1
> +#define __CC_SUPPORTS___INLINE__ 1
> +
> +#define __CC_SUPPORTS___FUNC__ 1
> +#define __CC_SUPPORTS_WARNING 1
> +
> +#define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */
> +
> +#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
> +
> +#endif /* __GNUC__ || __INTEL_COMPILER */
> +
> +/*
Add something like "/* End of code to help reduce the addition of compiler 
specific defines in FreeBSD code.  */" here?
>    * Given the pointer x to the member m of the struct s, return
>    * a pointer to the containing structure.  When using GCC, we first
>    * assign pointer x to a local variable, to check that its type is



More information about the Newlib mailing list