This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] powerpc: Remove HAVE_ASM_GLOBAL_DOT_NAME define


Ping.

On 09-02-2015 11:38, Adhemerval Zanella wrote:
> Ping.
>
> On 03-02-2015 17:42, Adhemerval Zanella wrote:
>> With AIX port deprecated there is no need to check/define
>> HAVE_ASM_GLOBAL_DOT_NAME anymore since the current minimum binutils
>> supported (2.22) does not emit global symbol with dot.
>>
>> This patch removes all the HAVE_ASM_GLOBAL_DOT_NAME definition and
>> checks for powerpc64 port.
>>
>> Checked on powerpc64.
>>
>> --
>>
>> 	* config.h.in [HAVE_ASM_GLOBAL_DOT_NAME]: Remove define.
>> 	* include/libc-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME] (strong_alias):
>> 	Remove define.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (strong_data_alias): Likewise.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (weak_alias): Likewise.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (_symbol_version): Likewise.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (_default_symbol_version): Likewise.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (HIDDEN_JUMPTARGET): Likewise.
>> 	* nptl_db/db-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME] (DOT): Remove
>> 	define.
>> 	* nptl_db/td_symbol_list.c (td_lookup): Remove
>> 	HAVE_ASM_GLOBAL_DOT_NAME code.
>> 	* sysdeps/powerpc/powerpc64/configure.ac: Remove
>> 	HAVE_ASM_GLOBAL_DOT_NAME check.
>> 	* sysdeps/powerpc/powerpc64/configure: Regenerate.
>> 	* sysdeps/powerpc/powerpc64/sysdep.h [HAVE_ASM_GLOBAL_DOT_NAME]
>> 	(DOT_LABEL): Remove define.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (BODY_LABEL): Likewise.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (ENTRY_2): Likewise.
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (END_2): Likewise.
>> 	* sysdeps/powerpc/powerpc64/tls-macros.h [HAVE_ASM_GLOBAL_DOT_NAME]
>> 	(__TLS_GET_ADDR): Likewise.
>> 	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
>> 	[HAVE_ASM_GLOBAL_DOT_NAME] (DASHDASHPFX): Likewise.
>>
>> --
>>
>> diff --git a/config.h.in b/config.h.in
>> index 695ca35..a1ae478 100644
>> --- a/config.h.in
>> +++ b/config.h.in
>> @@ -37,9 +37,6 @@
>>  /* Define if the assembler supports the gnu_unique_object symbol type.  */
>>  #undef	HAVE_ASM_UNIQUE_OBJECT
>>
>> -/* Define a symbol_name as a global .symbol_name for ld.  */
>> -#undef	HAVE_ASM_GLOBAL_DOT_NAME
>> -
>>  /* On powerpc64, use overlapping .opd entries.  */
>>  #undef  USE_PPC64_OVERLAPPING_OPD
>>
>> diff --git a/include/libc-symbols.h b/include/libc-symbols.h
>> index 2da0ab4..ca3fe00 100644
>> --- a/include/libc-symbols.h
>> +++ b/include/libc-symbols.h
>> @@ -96,17 +96,6 @@
>>  # define ASM_LINE_SEP ;
>>  #endif
>>
>> -#ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -# ifndef C_SYMBOL_DOT_NAME
>> -#  if defined __GNUC__ && defined __GNUC_MINOR__ \
>> -      && (__GNUC__ << 16) + __GNUC_MINOR__ >= (3 << 16) + 1
>> -#   define C_SYMBOL_DOT_NAME(name) .name
>> -#  else
>> -#   define C_SYMBOL_DOT_NAME(name) .##name
>> -#  endif
>> -# endif
>> -#endif
>> -
>>  #ifndef __ASSEMBLER__
>>  /* GCC understands weak symbols and aliases; use its interface where
>>     possible, instead of embedded assembly language.  */
>> @@ -142,64 +131,28 @@
>>  #else /* __ASSEMBLER__ */
>>
>>  # ifdef HAVE_ASM_SET_DIRECTIVE
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define strong_alias(original, alias)				\
>> -  .globl C_SYMBOL_NAME (alias) ASM_LINE_SEP		\
>> -  .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original) ASM_LINE_SEP	\
>> -  .globl C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP		\
>> -  .set C_SYMBOL_DOT_NAME (alias),C_SYMBOL_DOT_NAME (original)
>> -#   define strong_data_alias(original, alias)				\
>> -  .globl C_SYMBOL_NAME (alias) ASM_LINE_SEP		\
>> -  .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
>> -#  else
>> -#   define strong_alias(original, alias)				\
>> +#  define strong_alias(original, alias)				\
>>    .globl C_SYMBOL_NAME (alias) ASM_LINE_SEP		\
>>    .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
>> -#   define strong_data_alias(original, alias) strong_alias(original, alias)
>> -#  endif
>> +#  define strong_data_alias(original, alias) strong_alias(original, alias)
>>  # else
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define strong_alias(original, alias)				\
>> -  .globl C_SYMBOL_NAME (alias) ASM_LINE_SEP		\
>> -  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP		\
>> -  .globl C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP		\
>> -  C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
>> -#   define strong_data_alias(original, alias)				\
>> +#  define strong_alias(original, alias)				\
>>    .globl C_SYMBOL_NAME (alias) ASM_LINE_SEP		\
>>    C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
>> -#  else
>> -#   define strong_alias(original, alias)				\
>> -  .globl C_SYMBOL_NAME (alias) ASM_LINE_SEP		\
>> -  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
>> -#   define strong_data_alias(original, alias) strong_alias(original, alias)
>> -#  endif
>> +#  define strong_data_alias(original, alias) strong_alias(original, alias)
>>  # endif
>>
>>  # ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define weak_alias(original, alias)					\
>> -  .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) ASM_LINE_SEP \
>> -  .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
>> -#  else
>> -#   define weak_alias(original, alias)					\
>> +#  define weak_alias(original, alias)					\
>>    .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
>> -#  endif
>>  #  define weak_extern(symbol)						\
>>    .weakext C_SYMBOL_NAME (symbol)
>>
>>  # else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
>>
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define weak_alias(original, alias)					\
>> -  .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP				\
>> -  C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP		\
>> -  .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP				\
>> -  C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
>> -#  else
>> -#   define weak_alias(original, alias)					\
>> +#  define weak_alias(original, alias)					\
>>    .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP				\
>>    C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
>> -#  endif
>>
>>  #  define weak_extern(symbol)						\
>>    .weak C_SYMBOL_NAME (symbol)
>> @@ -358,33 +311,15 @@ for linking")
>>  # define default_symbol_version(real, name, version) \
>>       _default_symbol_version(real, name, version)
>>  # ifdef __ASSEMBLER__
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define _symbol_version(real, name, version) \
>> -     .symver real, name##@##version ASM_LINE_SEP			\
>> -     .symver C_SYMBOL_DOT_NAME(real), C_SYMBOL_DOT_NAME(name##@##version)
>> -#   define _default_symbol_version(real, name, version) \
>> -     .symver real, name##@##@##version ASM_LINE_SEP			\
>> -     .symver C_SYMBOL_DOT_NAME(real), C_SYMBOL_DOT_NAME(name##@##@##version)
>> -#  else
>> -#   define _symbol_version(real, name, version) \
>> +#  define _symbol_version(real, name, version) \
>>       .symver real, name##@##version
>> -#   define _default_symbol_version(real, name, version) \
>> +#  define _default_symbol_version(real, name, version) \
>>       .symver real, name##@##@##version
>> -#  endif
>>  # else
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define _symbol_version(real, name, version) \
>> -     __asm__ (".symver " #real "," #name "@" #version "\n\t"	\
>> -	      ".symver ." #real ",." #name "@" #version)
>> -#   define _default_symbol_version(real, name, version) \
>> -     __asm__ (".symver " #real "," #name "@@" #version "\n\t"	\
>> -	      ".symver ." #real ",." #name "@@" #version)
>> -#  else
>> -#   define _symbol_version(real, name, version) \
>> +#  define _symbol_version(real, name, version) \
>>       __asm__ (".symver " #real "," #name "@" #version)
>> -#   define _default_symbol_version(real, name, version) \
>> +#  define _default_symbol_version(real, name, version) \
>>       __asm__ (".symver " #real "," #name "@@" #version)
>> -#  endif
>>  # endif
>>  #else
>>  # define symbol_version(real, name, version)
>> @@ -527,11 +462,7 @@ for linking")
>>  #  define hidden_data_def(name)	strong_data_alias (name, __GI_##name)
>>  #  define hidden_data_weak(name)	hidden_data_def (name)
>>  #  define hidden_data_ver(local, name) strong_data_alias (local, __GI_##name)
>> -#  ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#   define HIDDEN_JUMPTARGET(name) .__GI_##name
>> -#  else
>> -#   define HIDDEN_JUMPTARGET(name) __GI_##name
>> -#  endif
>> +#  define HIDDEN_JUMPTARGET(name) __GI_##name
>>  # endif
>>  #else
>>  # ifndef __ASSEMBLER__
>> diff --git a/nptl_db/db-symbols.h b/nptl_db/db-symbols.h
>> index 47fe951..0f27e67 100644
>> --- a/nptl_db/db-symbols.h
>> +++ b/nptl_db/db-symbols.h
>> @@ -16,11 +16,7 @@
>>     License along with the GNU C Library; if not, see
>>     <http://www.gnu.org/licenses/>.  */
>>
>> -#ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -# define DOT(x)	.##x		/* PPC64 requires . prefix on code symbols.  */
>> -#else
>> -# define DOT(x)	x		/* No prefix.  */
>> -#endif
>> +#define DOT(x)	x		/* No prefix.  */
>>
>>  #define STRINGIFY(name)		STRINGIFY_1(name)
>>  #define STRINGIFY_1(name)	#name
>> diff --git a/nptl_db/td_symbol_list.c b/nptl_db/td_symbol_list.c
>> index 6b14d36..6915ed7 100644
>> --- a/nptl_db/td_symbol_list.c
>> +++ b/nptl_db/td_symbol_list.c
>> @@ -48,13 +48,5 @@ td_lookup (struct ps_prochandle *ps, int idx, psaddr_t *sym_addr)
>>    result = ps_pglobal_lookup (ps, LIBPTHREAD_SO, symbol_list_arr[idx],
>>  			      sym_addr);
>>
>> -#ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -  /* For PowerPC, 64-bit uses dot symbols but 32-bit does not.
>> -     We could be a 64-bit libthread_db debugging a 32-bit libpthread.  */
>> -  if (result == PS_NOSYM && symbol_list_arr[idx][0] == '.')
>> -    result = ps_pglobal_lookup (ps, LIBPTHREAD_SO, &symbol_list_arr[idx][1],
>> -				sym_addr);
>> -#endif
>> -
>>    return result;
>>  }
>> diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure
>> index 92ec607..d4deee7 100644
>> --- a/sysdeps/powerpc/powerpc64/configure
>> +++ b/sysdeps/powerpc/powerpc64/configure
>> @@ -1,37 +1,6 @@
>>  # This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
>>   # Local configure fragment for sysdeps/powerpc/powerpc64.
>>
>> -# The Aix ld uses global .symbol_names instead of symbol_names
>> -# and unfortunately early Linux PPC64 linkers use it as well.
>> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for support for omitting dot symbols" >&5
>> -$as_echo_n "checking for support for omitting dot symbols... " >&6; }
>> -if ${libc_cv_omit_dot_syms+:} false; then :
>> -  $as_echo_n "(cached) " >&6
>> -else
>> -  libc_cv_omit_dot_syms=no
>> -echo 'void foo (void) {}' > conftest.c
>> -if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5'
>> -  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
>> -  (eval $ac_try) 2>&5
>> -  ac_status=$?
>> -  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
>> -  test $ac_status = 0; }; }; then
>> -  if grep -w '\.foo' conftest.s > /dev/null; then
>> -    :
>> -  else
>> -    libc_cv_omit_dot_syms=yes
>> -  fi
>> -fi
>> -rm -f conftest.c conftest.s
>> -
>> -fi
>> -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_omit_dot_syms" >&5
>> -$as_echo "$libc_cv_omit_dot_syms" >&6; }
>> -if test x$libc_cv_omit_dot_syms != xyes; then
>> -  $as_echo "#define HAVE_ASM_GLOBAL_DOT_NAME 1" >>confdefs.h
>> -
>> -fi
>> -
>>  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker support for overlapping .opd entries" >&5
>>  $as_echo_n "checking for linker support for overlapping .opd entries... " >&6; }
>>  if ${libc_cv_overlapping_opd+:} false; then :
>> diff --git a/sysdeps/powerpc/powerpc64/configure.ac b/sysdeps/powerpc/powerpc64/configure.ac
>> index 67aac66..9e9881c 100644
>> --- a/sysdeps/powerpc/powerpc64/configure.ac
>> +++ b/sysdeps/powerpc/powerpc64/configure.ac
>> @@ -1,25 +1,6 @@
>>  GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
>>  # Local configure fragment for sysdeps/powerpc/powerpc64.
>>
>> -# The Aix ld uses global .symbol_names instead of symbol_names
>> -# and unfortunately early Linux PPC64 linkers use it as well.
>> -AC_CACHE_CHECK(for support for omitting dot symbols,
>> -libc_cv_omit_dot_syms, [dnl
>> -libc_cv_omit_dot_syms=no
>> -echo 'void foo (void) {}' > conftest.c
>> -if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
>> -  if grep -w '\.foo' conftest.s > /dev/null; then
>> -    :
>> -  else
>> -    libc_cv_omit_dot_syms=yes
>> -  fi
>> -fi
>> -rm -f conftest.c conftest.s
>> -])
>> -if test x$libc_cv_omit_dot_syms != xyes; then
>> -  AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
>> -fi
>> -
>>  AC_CACHE_CHECK(for linker support for overlapping .opd entries,
>>  libc_cv_overlapping_opd, [dnl
>>  libc_cv_overlapping_opd=no
>> diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
>> index 1f4efe6..bf2a884 100644
>> --- a/sysdeps/powerpc/powerpc64/sysdep.h
>> +++ b/sysdeps/powerpc/powerpc64/sysdep.h
>> @@ -140,25 +140,14 @@
>>  name##: OPD_ENT (name);				\
>>  	.previous;
>>
>> -#ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -# define DOT_LABEL(X) .##X
>> -# define BODY_LABEL(X) .##X
>> -# define ENTRY_2(name)	\
>> -	.globl BODY_LABEL(name);		\
>> -	ENTRY_1(name)				\
>> -	.size name, 24;
>> -# define END_2(name)	\
>> -	.size BODY_LABEL(name),.-BODY_LABEL(name);
>> -#else
>> -# define DOT_LABEL(X) X
>> -# define BODY_LABEL(X) .LY##X
>> -# define ENTRY_2(name)	\
>> +#define DOT_LABEL(X) X
>> +#define BODY_LABEL(X) .LY##X
>> +#define ENTRY_2(name)	\
>>  	.type name,@function;			\
>>  	ENTRY_1(name)
>> -# define END_2(name)	\
>> +#define END_2(name)	\
>>  	.size name,.-BODY_LABEL(name);		\
>>  	.size BODY_LABEL(name),.-BODY_LABEL(name);
>> -#endif
>>  #define LOCALENTRY(name)
>>
>>  #else /* _CALL_ELF */
>> @@ -403,25 +392,14 @@ LT_LABELSUFFIX(name,_name_end): ; \
>>  	OPD_ENT (name) "\n"						\
>>  	".popsection;"
>>
>> -#ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -# define DOT_PREFIX "."
>> -# define BODY_PREFIX "."
>> -# define ENTRY_2(name)	\
>> -	".globl " BODY_PREFIX #name ";\n"				\
>> -	ENTRY_1(name) "\n"						\
>> -	".size  " #name ", 24;"
>> -# define END_2(name)	\
>> -	".size " BODY_PREFIX #name ",.-" BODY_PREFIX #name ";"
>> -#else
>> -# define DOT_PREFIX ""
>> -# define BODY_PREFIX ".LY"
>> -# define ENTRY_2(name)	\
>> +#define DOT_PREFIX ""
>> +#define BODY_PREFIX ".LY"
>> +#define ENTRY_2(name)	\
>>  	".type " #name ",@function;\n"					\
>>  	ENTRY_1(name)
>> -# define END_2(name)	\
>> +#define END_2(name)	\
>>  	".size " #name ",.-" BODY_PREFIX #name ";\n"			\
>>  	".size " BODY_PREFIX #name ",.-" BODY_PREFIX #name ";"
>> -#endif
>>  #define LOCALENTRY(name)
>>
>>  #else /* _CALL_ELF */
>> diff --git a/sysdeps/powerpc/powerpc64/tls-macros.h b/sysdeps/powerpc/powerpc64/tls-macros.h
>> index 198215d..42a95ec 100644
>> --- a/sysdeps/powerpc/powerpc64/tls-macros.h
>> +++ b/sysdeps/powerpc/powerpc64/tls-macros.h
>> @@ -17,11 +17,9 @@
>>  	  : "=r" (__result) );						      \
>>       __result;								      \
>>    })
>> -#ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -# define __TLS_GET_ADDR ".__tls_get_addr"
>> -#else
>> -# define __TLS_GET_ADDR "__tls_get_addr"
>> -#endif
>> +
>> +#define __TLS_GET_ADDR "__tls_get_addr"
>> +
>>  /* PowerPC64 Local Dynamic TLS access.  */
>>  #define TLS_LD(x)							      \
>>    ({ int * __result;							      \
>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
>> index 6579757..5cd7ddb 100644
>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
>> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
>> @@ -25,11 +25,7 @@
>>
>>  #if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
>>
>> -# ifdef HAVE_ASM_GLOBAL_DOT_NAME
>> -#  define DASHDASHPFX(str) .__##str
>> -# else
>> -#  define DASHDASHPFX(str) __##str
>> -# endif
>> +# define DASHDASHPFX(str) __##str
>>
>>  #if _CALL_ELF == 2
>>  #define CANCEL_FRAMESIZE (FRAME_MIN_SIZE+16+48)
>>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]