From patchwork Tue Feb 3 19:42:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 4902 X-Patchwork-Delegate: azanella@linux.vnet.ibm.com Received: (qmail 31878 invoked by alias); 3 Feb 2015 19:43:09 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 31855 invoked by uid 89); 3 Feb 2015 19:43:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL, BAYES_00, KAM_STOCKGEN, T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: e24smtp02.br.ibm.com Message-ID: <54D124C1.3010208@linux.vnet.ibm.com> Date: Tue, 03 Feb 2015 17:42:57 -0200 From: Adhemerval Zanella User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: "GNU C. Library" Subject: [PATCH] powerpc: Remove HAVE_ASM_GLOBAL_DOT_NAME define X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15020319-0021-0000-0000-000001C6FFF6 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 . */ -#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)