[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