Make absolute symbol macros headers compiler dependent

In order for better compiler support make sure that
absolute symbol macros are specific for a supported compiler.

As the patch modifies gen_config_abssym sources, at least,
host/src/gen_config_abssym host tool needs rebuild.

Change-Id: Iece19611e2410a9753e538c725c5c81a447bf978
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
This commit is contained in:
Dmitriy Korovkin 2015-04-27 14:41:09 -04:00 committed by Anas Nashif
commit 58accba801
4 changed files with 56 additions and 58 deletions

View file

@ -189,7 +189,7 @@ static void generate_files(void)
pBuf = strstr(pBuf, "#define AUTOCONF_INCLUDED"); pBuf = strstr(pBuf, "#define AUTOCONF_INCLUDED");
write_str("/* file is auto-generated, do not modify ! */\n\n"); write_str("/* file is auto-generated, do not modify ! */\n\n");
write_str("#include <absSym.h>\n\n"); write_str("#include <abs_sym.h>\n\n");
write_str("GEN_ABS_SYM_BEGIN (_ConfigAbsSyms)\n\n"); write_str("GEN_ABS_SYM_BEGIN (_ConfigAbsSyms)\n\n");
for (;;) { for (;;) {

42
include/abs_sym.h Normal file
View file

@ -0,0 +1,42 @@
/* macros to generate absolute symbols */
/*
* Copyright (c) 2010, 2012-2014, Wind River Systems, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1) Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3) Neither the name of Wind River Systems nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _ABSSYM_H_
#define _ABSSYM_H_
#if defined(__GNUC__)
#include <toolchain/abs_sym_gcc.h>
#else
#include <toolchain/abs_sym_other.h>
#endif
#endif /* _ABSSYM_H_ */

View file

@ -1,4 +1,4 @@
/* absSym.h - macros to generate absolute symbols */ /* macros to generate absolute symbols for GCC */
/* /*
* Copyright (c) 2010, 2012-2014, Wind River Systems, Inc. * Copyright (c) 2010, 2012-2014, Wind River Systems, Inc.
@ -30,10 +30,17 @@
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ABSSYM_H_ #ifndef _ABS_SYM_GCC_H_
#define ABSSYM_H_ #define _ABS_SYM_GCC_H_
#ifdef __GNUC__ /*
* The file should not be included directly
* Include toolchain.h instead
*/
/* create an extern reference to the absolute symbol */
#define GEN_OFFSET_EXTERN(name) extern const char name[]
#define GEN_ABS_SYM_BEGIN(name) \ #define GEN_ABS_SYM_BEGIN(name) \
extern void name(void); \ extern void name(void); \
@ -42,9 +49,6 @@
#define GEN_ABS_SYM_END } #define GEN_ABS_SYM_END }
#define GEN_ABS_SYM_HOST(name, value) \
GEN_ABSOLUTE_SYM(CONFIG_##name, value)
#if defined(VXMICRO_ARCH_arm) #if defined(VXMICRO_ARCH_arm)
/* /*
@ -71,29 +75,4 @@
#error processor architecture not supported #error processor architecture not supported
#endif #endif
#elif defined(__DCC__) #endif /* _ABS_SYM_GCC_H_ */
#define GEN_ABS_SYM_BEGIN(name) GEN_ABSOLUTE_SYM(name, 0);
#define GEN_ABS_SYM_END
#define GEN_ABSOLUTE_SYM(name, value) \
const long name __attribute__((absolute)) = (long)(value)
#define GEN_ABS_SYM_HOST(name, value) \
const long CONFIG_##name __attribute__((absolute)) = (long)(value)
#else /* unsupported toolchain */
#define GEN_ABS_SYM_BEGIN(name) \
#error GEN_ABS_SYM_BEGIN macro used with unsupported toolchain
#define GEN_ABS_SYM_END \
#error GEN_ABS_SYM_END macro used with unsupported toolchain
#define GEN_ABSOLUTE_SYM(name) \
#error GEN_ABSOLUTE_SYM macro used with unsupported toolchain
#endif /* end of "unsupported toolchain" */
#endif /* ABSSYM_H_ */

View file

@ -104,32 +104,9 @@ $ nm offsets.o
#ifndef _GEN_OFFSET_H #ifndef _GEN_OFFSET_H
#define _GEN_OFFSET_H #define _GEN_OFFSET_H
/*#include "../../../../../include/absSym.h"*/ #include <abs_sym.h>
#include <absSym.h>
#include <stddef.h> #include <stddef.h>
#ifdef __GNUC__
/* create an extern reference to the absolute symbol */
#define GEN_OFFSET_EXTERN(name) extern const char name[]
#elif defined(__DCC__)
/* create an extern reference to the absolute symbol */
#define GEN_OFFSET_EXTERN(name) extern const char name[]
#else /* unsupported toolchain */
#define GEN_OFFSET_EXTERN(name) \
#error GEN_OFFSET_EXTERN macro used with unsupported toolchain
#define GEN_OFFSET_SYM(name) \
#error GEN_OFFSET_SYM macro used with unsupported toolchain
#endif /* end of "unsupported toolchain" */
/* definition of the GEN_OFFSET_SYM() macros is toolchain independant */ /* definition of the GEN_OFFSET_SYM() macros is toolchain independant */
#define GEN_OFFSET_SYM(S, M) \ #define GEN_OFFSET_SYM(S, M) \