aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2015-02-03 07:41:25 -0500
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2015-03-11 09:01:05 -0400
commit5ca10a0c9ad1edb3b2e2e59ac6dccdd879cf84ae (patch)
tree57db9c5b8cdfe2481b147f30b6e5d3987e1899e0
parentb42e14ff3e59c0cf083d6a7a523b9904297ca1d4 (diff)
downloadglibc-5ca10a0c9ad1edb3b2e2e59ac6dccdd879cf84ae.zip
glibc-5ca10a0c9ad1edb3b2e2e59ac6dccdd879cf84ae.tar.gz
glibc-5ca10a0c9ad1edb3b2e2e59ac6dccdd879cf84ae.tar.bz2
powerpc: Remove HAVE_ASM_GLOBAL_DOT_NAME define
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.
-rw-r--r--ChangeLog27
-rw-r--r--config.h.in3
-rw-r--r--include/libc-symbols.h91
-rw-r--r--nptl_db/db-symbols.h6
-rw-r--r--nptl_db/td_symbol_list.c8
-rw-r--r--sysdeps/powerpc/powerpc64/configure31
-rw-r--r--sysdeps/powerpc/powerpc64/configure.ac19
-rw-r--r--sysdeps/powerpc/powerpc64/sysdep.h38
-rw-r--r--sysdeps/powerpc/powerpc64/tls-macros.h8
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h6
10 files changed, 51 insertions, 186 deletions
diff --git a/ChangeLog b/ChangeLog
index 138226e..10410dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2015-03-11 Adhemerval Zanellla <azanella@linux.vnet.ibm.com>
+
+ * 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.
+
2015-03-11 Carlos O'Donell <carlos@redhat.com>
[BZ #18111]
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)