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