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:
parent
d33ad051ac
commit
58accba801
4 changed files with 56 additions and 58 deletions
|
@ -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
42
include/abs_sym.h
Normal 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_ */
|
|
@ -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_ */
|
|
|
@ -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) \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue