Workaround for bug in GCC on powerpc64. Symbols that are exported are

by fault required to be all "static" or all "extern".
This commit is contained in:
hselasky 2014-06-30 18:11:22 +00:00
parent b2486d3dac
commit b76fe8070b

View File

@ -40,15 +40,26 @@
* For ELF, this is done by constructing a separate segment for each set.
*/
#if defined(__powerpc64__)
/*
* Move the symbol pointer from ".text" to ".data" segment, to make
* the GCC compiler happy:
*/
#define __MAKE_SET_CONST
#else
#define __MAKE_SET_CONST const
#endif
/*
* Private macros, not to be used outside this header file.
*/
#ifdef __GNUCLIKE___SECTION
#define __MAKE_SET(set, sym) \
__GLOBL(__CONCAT(__start_set_,set)); \
__GLOBL(__CONCAT(__stop_set_,set)); \
static void const * const __set_##set##_sym_##sym \
__section("set_" #set) __used = &sym
#define __MAKE_SET(set, sym) \
__GLOBL(__CONCAT(__start_set_,set)); \
__GLOBL(__CONCAT(__stop_set_,set)); \
static void const * __MAKE_SET_CONST \
__set_##set##_sym_##sym __section("set_" #set) \
__used = &(sym)
#else /* !__GNUCLIKE___SECTION */
#ifndef lint
#error this file needs to be ported to your compiler