svn commit: r268055 - head/sys/sys
John Baldwin
jhb at freebsd.org
Mon Jun 30 18:37:18 UTC 2014
On Monday, June 30, 2014 2:11:22 pm Hans Petter Selasky wrote:
> Author: hselasky
> Date: Mon Jun 30 18:11:22 2014
> New Revision: 268055
> URL: http://svnweb.freebsd.org/changeset/base/268055
>
> Log:
> Workaround for bug in GCC on powerpc64. Symbols that are exported are
> by fault required to be all "static" or all "extern".
>
> Modified:
> head/sys/sys/linker_set.h
>
> Modified: head/sys/sys/linker_set.h
> ==============================================================================
> --- head/sys/sys/linker_set.h Mon Jun 30 17:04:55 2014 (r268054)
> +++ head/sys/sys/linker_set.h Mon Jun 30 18:11:22 2014 (r268055)
> @@ -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)
Reindenting the whitespace made this diff harder to read. Why hasn't this
been a problem before on powerpc64?
--
John Baldwin
More information about the svn-src-all
mailing list