summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2012-08-02 21:04:29 +0200
committerMarek Polacek <polacek@redhat.com>2012-08-02 21:04:29 +0200
commitb67e9372b28ef339581b724c32acf7cf0977001f (patch)
tree7735b77739716800e4266e5177a20e85a9adde3f
parent2747bf9adfd7bee7a44bb75c0279a88a1c89df30 (diff)
downloadglibc-b67e9372b28ef339581b724c32acf7cf0977001f.tar.gz
glibc-b67e9372b28ef339581b724c32acf7cf0977001f.tar.xz
glibc-b67e9372b28ef339581b724c32acf7cf0977001f.zip
Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}.
-rw-r--r--ChangeLog81
-rw-r--r--NEWS4
-rw-r--r--config.h.in4
-rwxr-xr-xconfigure40
-rw-r--r--configure.in26
-rw-r--r--elf/tst-unique1mod1.c5
-rw-r--r--elf/tst-unique1mod2.c5
-rw-r--r--elf/tst-unique2mod1.c5
-rw-r--r--elf/tst-unique2mod2.c5
-rw-r--r--include/libc-symbols.h53
-rw-r--r--sysdeps/i386/fpu/e_acosh.S4
-rw-r--r--sysdeps/i386/fpu/e_acoshf.S4
-rw-r--r--sysdeps/i386/fpu/e_acoshl.S4
-rw-r--r--sysdeps/i386/fpu/e_atanh.S8
-rw-r--r--sysdeps/i386/fpu/e_atanhf.S8
-rw-r--r--sysdeps/i386/fpu/e_atanhl.S8
-rw-r--r--sysdeps/i386/fpu/e_expl.S10
-rw-r--r--sysdeps/i386/fpu/e_log.S4
-rw-r--r--sysdeps/i386/fpu/e_log10.S4
-rw-r--r--sysdeps/i386/fpu/e_log10f.S4
-rw-r--r--sysdeps/i386/fpu/e_log10l.S4
-rw-r--r--sysdeps/i386/fpu/e_log2.S4
-rw-r--r--sysdeps/i386/fpu/e_log2f.S4
-rw-r--r--sysdeps/i386/fpu/e_log2l.S4
-rw-r--r--sysdeps/i386/fpu/e_logf.S4
-rw-r--r--sysdeps/i386/fpu/e_logl.S4
-rw-r--r--sysdeps/i386/fpu/e_pow.S14
-rw-r--r--sysdeps/i386/fpu/e_powf.S12
-rw-r--r--sysdeps/i386/fpu/e_powl.S16
-rw-r--r--sysdeps/i386/fpu/e_scalb.S2
-rw-r--r--sysdeps/i386/fpu/e_scalbf.S2
-rw-r--r--sysdeps/i386/fpu/e_scalbl.S2
-rw-r--r--sysdeps/i386/fpu/s_asinh.S6
-rw-r--r--sysdeps/i386/fpu/s_asinhf.S6
-rw-r--r--sysdeps/i386/fpu/s_asinhl.S6
-rw-r--r--sysdeps/i386/fpu/s_cbrt.S18
-rw-r--r--sysdeps/i386/fpu/s_cbrtf.S10
-rw-r--r--sysdeps/i386/fpu/s_cbrtl.S20
-rw-r--r--sysdeps/i386/fpu/s_expm1.S6
-rw-r--r--sysdeps/i386/fpu/s_expm1f.S6
-rw-r--r--sysdeps/i386/fpu/s_frexp.S2
-rw-r--r--sysdeps/i386/fpu/s_frexpf.S2
-rw-r--r--sysdeps/i386/fpu/s_frexpl.S2
-rw-r--r--sysdeps/i386/i386-mcount.S4
-rw-r--r--sysdeps/i386/i686/fpu/e_logl.S4
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S26
-rw-r--r--sysdeps/i386/i686/strtok.S4
-rw-r--r--sysdeps/i386/strtok.S4
-rw-r--r--sysdeps/i386/sysdep.h6
-rw-r--r--sysdeps/powerpc/powerpc32/sysdep.h18
-rw-r--r--sysdeps/powerpc/sysdep.h2
-rw-r--r--sysdeps/s390/s390-32/s390-mcount.S2
-rw-r--r--sysdeps/s390/s390-32/sysdep.h6
-rw-r--r--sysdeps/s390/s390-64/s390x-mcount.S2
-rw-r--r--sysdeps/s390/s390-64/sysdep.h6
-rw-r--r--sysdeps/sh/_mcount.S2
-rw-r--r--sysdeps/sh/sysdep.h6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h2
-rw-r--r--sysdeps/x86_64/_mcount.S4
-rw-r--r--sysdeps/x86_64/fpu/e_expf.S28
-rw-r--r--sysdeps/x86_64/fpu/e_expl.S10
-rw-r--r--sysdeps/x86_64/fpu/e_log10l.S4
-rw-r--r--sysdeps/x86_64/fpu/e_log2l.S4
-rw-r--r--sysdeps/x86_64/fpu/e_logl.S4
-rw-r--r--sysdeps/x86_64/fpu/e_powl.S16
-rw-r--r--sysdeps/x86_64/fpu/e_scalbl.S2
-rw-r--r--sysdeps/x86_64/fpu/s_copysign.S4
-rw-r--r--sysdeps/x86_64/fpu/s_copysignf.S2
-rw-r--r--sysdeps/x86_64/strtok.S2
-rw-r--r--sysdeps/x86_64/sysdep.h6
70 files changed, 301 insertions, 321 deletions
diff --git a/ChangeLog b/ChangeLog
index 386eeb5d26..f79463f404 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,84 @@
+2012-08-02  Marek Polacek  <polacek@redhat.com>
+
+	[BZ#14150]
+	* configure.in (libc_cv_asm_type_prefix): Remove test.  Replace
+	libc_cv_asm_type_prefix with %.
+	* configure: Regenerated.
+	* include/libc-symbols.h: Remove comment about ASM_TYPE_DIRECTIVE_PREFIX.
+	Replace ASM_TYPE_DIRECTIVE_PREFIX with %.
+	(declare_symbol_alias_1_paste) [__ASSEMBLER__]: Do not define.
+	(declare_symbol_alias_1_paste_1) [__ASSEMBLER__]: Likewise.
+	(declare_symbol_alias_1_stringify) [!__ASSEMBLER__]: Likewise.
+	(declare_symbol_alias_1_stringify_1) [!__ASSEMBLER__]: Likewise.
+	* elf/tst-unique2mod2.c: Replace ASM_TYPE_DIRECTIVE_PREFIX with %.
+	[HAVE_ASM_UNIQUE_OBJECT]: Do not define S.
+	[HAVE_ASM_UNIQUE_OBJECT]: Do not define _S.
+	* elf/tst-unique2mod1.c: Likewise.
+	* elf/tst-unique1mod2.c: Likewise.
+	* elf/tst-unique1mod1.c: Likewise.
+	* config.h.in: Do not undef ASM_TYPE_DIRECTIVE_PREFIX.
+	* sysdeps/s390/s390-32/sysdep.h: Do not define ASM_TYPE_DIRECTIVE.
+	Replace ASM_TYPE_DIRECTIVE with .type.
+	* sysdeps/s390/s390-64/sysdep.h: Likewise.
+	* sysdeps/i386/sysdep.h: Likewise.
+	* sysdeps/x86_64/sysdep.h: Likewise.
+	* sysdeps/sh/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Do not define ASM_TYPE_DIRECTIVE.
+	* sysdeps/powerpc/sysdep.h: Likewise.
+	* sysdeps/powerpc/powerpc32/sysdep.h: Replace ASM_TYPE_DIRECTIVE with .type.
+	* sysdeps/s390/s390-32/s390-mcount.S: Likewise.
+	* sysdeps/s390/s390-64/s390x-mcount.S: Likewise.
+	* sysdeps/i386/fpu/e_powf.S: Likewise.
+	* sysdeps/i386/fpu/e_expl.S: Likewise.
+	* sysdeps/i386/fpu/e_atanhf.S: Likewise.
+	* sysdeps/i386/fpu/e_acosh.S: Likewise.
+	* sysdeps/i386/fpu/e_pow.S: Likewise.
+	* sysdeps/i386/fpu/s_asinhl.S: Likewise.
+	* sysdeps/i386/fpu/e_acoshl.S: Likewise.
+	* sysdeps/i386/fpu/s_expm1.S: Likewise.
+	* sysdeps/i386/fpu/s_frexpf.S: Likewise.
+	* sysdeps/i386/fpu/e_log2.S: Likewise.
+	* sysdeps/i386/fpu/e_log2l.S: Likewise.
+	* sysdeps/i386/fpu/e_scalb.S: Likewise.
+	* sysdeps/i386/fpu/e_powl.S: Likewise.
+	* sysdeps/i386/fpu/e_log10f.S: Likewise.
+	* sysdeps/i386/fpu/s_cbrtf.S: Likewise.
+	* sysdeps/i386/fpu/e_logl.S: Likewise.
+	* sysdeps/i386/fpu/s_cbrt.S: Likewise.
+	* sysdeps/i386/fpu/s_frexpl.S: Likewise.
+	* sysdeps/i386/fpu/s_expm1f.S: Likewise.
+	* sysdeps/i386/fpu/e_log2f.S: Likewise.
+	* sysdeps/i386/fpu/e_acoshf.S: Likewise.
+	* sysdeps/i386/fpu/e_log.S: Likewise.
+	* sysdeps/i386/fpu/e_scalbf.S: Likewise.
+	* sysdeps/i386/fpu/e_logf.S: Likewise.
+	* sysdeps/i386/fpu/e_log10l.S: Likewise.
+	* sysdeps/i386/fpu/e_atanh.S: Likewise.
+	* sysdeps/i386/fpu/s_asinhf.S: Likewise.
+	* sysdeps/i386/fpu/e_log10.S: Likewise.
+	* sysdeps/i386/fpu/s_frexp.S: Likewise.
+	* sysdeps/i386/fpu/e_atanhl.S: Likewise.
+	* sysdeps/i386/fpu/s_asinh.S: Likewise.
+	* sysdeps/i386/fpu/s_cbrtl.S: Likewise.
+	* sysdeps/i386/fpu/e_scalbl.S: Likewise.
+	* sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S: Likewise.
+	* sysdeps/i386/i686/fpu/e_logl.S: Likewise.
+	* sysdeps/i386/i686/strtok.S: Likewise.
+	* sysdeps/i386/i386-mcount.S: Likewise.
+	* sysdeps/i386/strtok.S: Likewise.
+	* sysdeps/x86_64/fpu/e_expl.S: Likewise.
+	* sysdeps/x86_64/fpu/e_log2l.S: Likewise.
+	* sysdeps/x86_64/fpu/e_powl.S: Likewise.
+	* sysdeps/x86_64/fpu/e_logl.S: Likewise.
+	* sysdeps/x86_64/fpu/e_expf.S: Likewise.
+	* sysdeps/x86_64/fpu/e_log10l.S: Likewise.
+	* sysdeps/x86_64/fpu/s_copysignf.S: Likewise.
+	* sysdeps/x86_64/fpu/s_copysign.S: Likewise.
+	* sysdeps/x86_64/fpu/e_scalbl.S: Likewise.
+	* sysdeps/x86_64/_mcount.S: Likewise.
+	* sysdeps/x86_64/strtok.S: Likewise.
+	* sysdeps/sh/_mcount.S: Likewise.
+
 2012-08-01  Roland McGrath  <roland@hack.frob.com>
 
 	* libio/iofopen.c: Include <fcntl.h>.
diff --git a/NEWS b/NEWS
index 3c12922faf..5759eddbfd 100644
--- a/NEWS
+++ b/NEWS
@@ -9,8 +9,8 @@ Version 2.17
 
 * The following bugs are resolved with this release:
 
-  6778, 6808, 14042, 14151, 14154, 14157, 14173, 14283, 14298, 14328, 14331,
-  14337, 14347, 14349
+  6778, 6808, 14042, 14150, 14151, 14154, 14157, 14173, 14283, 14298, 14328,
+  14331, 14337, 14347, 14349
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and
diff --git a/config.h.in b/config.h.in
index 22c62db9e0..40b47173e1 100644
--- a/config.h.in
+++ b/config.h.in
@@ -37,10 +37,6 @@
 /* Define if the assembler supports the `.set' directive.  */
 #undef	HAVE_ASM_SET_DIRECTIVE
 
-/* Define to the prefix before `object' or `function' in the
-   assembler's `.type' directive, if it has one.  */
-#undef	ASM_TYPE_DIRECTIVE_PREFIX
-
 /* Define if the assembler supports the gnu_unique_object symbol type.  */
 #undef	HAVE_ASM_UNIQUE_OBJECT
 
diff --git a/configure b/configure
index db070c1a4b..facb6a5bbb 100755
--- a/configure
+++ b/configure
@@ -4076,43 +4076,7 @@ else
 $as_echo "yes" >&6; }
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for assembler .type directive prefix" >&5
-$as_echo_n "checking for assembler .type directive prefix... " >&6; }
-if ${libc_cv_asm_type_prefix+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  libc_cv_asm_type_prefix=no
-for ac_try_prefix in '@' '%' '#'; do
-  cat > conftest.s <<EOF
-	${libc_cv_dot_text}
-	.globl foo
-	.type foo, ${ac_try_prefix}object
-	.size foo, 1
-foo:
-	.byte 1
-EOF
-  if { ac_try='${CC-cc} $ASFLAGS -c 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
-    libc_cv_asm_type_prefix=${ac_try_prefix}
-  fi
-  rm -f conftest*
-  test "x$libc_cv_asm_type_prefix" != xno && break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_type_prefix" >&5
-$as_echo "$libc_cv_asm_type_prefix" >&6; }
-if test "x$libc_cv_asm_type_prefix" != xno; then
-  cat >>confdefs.h <<_ACEOF
-#define ASM_TYPE_DIRECTIVE_PREFIX ${libc_cv_asm_type_prefix}
-_ACEOF
-
-fi
-
-if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
+if test x"$libc_cv_asm_gnu_indirect_function" != xyes; then
   if test x"$multi_arch" = xyes; then
     as_fn_error $? "--enable-multi-arch support requires assembler and linker support" "$LINENO" 5
   else
@@ -5728,7 +5692,7 @@ else
   cat > conftest.s <<EOF
 ${libc_cv_dot_text}
 _sym:
-.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
+.type _sym, %gnu_unique_object
 EOF
 if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
   libc_cv_asm_unique_object=yes
diff --git a/configure.in b/configure.in
index 037ee1e485..1219b9fb8a 100644
--- a/configure.in
+++ b/configure.in
@@ -581,29 +581,7 @@ else
   AC_MSG_RESULT(yes)
 fi
 
-AC_CACHE_CHECK(for assembler .type directive prefix,
-	       libc_cv_asm_type_prefix, [dnl
-libc_cv_asm_type_prefix=no
-for ac_try_prefix in '@' '%' '#'; do
-  cat > conftest.s <<EOF
-	${libc_cv_dot_text}
-	.globl foo
-	.type foo, ${ac_try_prefix}object
-	.size foo, 1
-foo:
-	.byte 1
-EOF
-  if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
-    libc_cv_asm_type_prefix=${ac_try_prefix}
-  fi
-  rm -f conftest*
-  test "x$libc_cv_asm_type_prefix" != xno && break
-done])
-if test "x$libc_cv_asm_type_prefix" != xno; then
-  AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
-fi
-
-if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
+if test x"$libc_cv_asm_gnu_indirect_function" != xyes; then
   if test x"$multi_arch" = xyes; then
     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
   else
@@ -1125,7 +1103,7 @@ AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
 cat > conftest.s <<EOF
 ${libc_cv_dot_text}
 _sym:
-.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
+.type _sym, %gnu_unique_object
 EOF
 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
   libc_cv_asm_unique_object=yes
diff --git a/elf/tst-unique1mod1.c b/elf/tst-unique1mod1.c
index ccc74fae3e..f59029d055 100644
--- a/elf/tst-unique1mod1.c
+++ b/elf/tst-unique1mod1.c
@@ -1,12 +1,9 @@
 #include <config.h>
 
 #ifdef HAVE_ASM_UNIQUE_OBJECT
-# define S(s) _S (s)
-# define _S(s) #s
-
 asm (".data;"
      ".globl var\n"
-     ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+     ".type var, %gnu_unique_object\n"
      ".size var, 4\n"
      "var:.zero 4\n"
      ".previous");
diff --git a/elf/tst-unique1mod2.c b/elf/tst-unique1mod2.c
index 4f1fec0087..aa28f29ba9 100644
--- a/elf/tst-unique1mod2.c
+++ b/elf/tst-unique1mod2.c
@@ -1,12 +1,9 @@
 #include <config.h>
 
 #ifdef HAVE_ASM_UNIQUE_OBJECT
-# define S(s) _S (s)
-# define _S(s) #s
-
 asm (".data;"
      ".globl var\n"
-     ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+     ".type var, %gnu_unique_object\n"
      ".size var, 4\n"
      "var:.zero 4\n"
      ".previous");
diff --git a/elf/tst-unique2mod1.c b/elf/tst-unique2mod1.c
index 18b14db433..b7e491b2e5 100644
--- a/elf/tst-unique2mod1.c
+++ b/elf/tst-unique2mod1.c
@@ -1,12 +1,9 @@
 #include <config.h>
 
 #ifdef HAVE_ASM_UNIQUE_OBJECT
-# define S(s) _S (s)
-# define _S(s) #s
-
 asm (".data;"
      ".globl var\n"
-     ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+     ".type var, %gnu_unique_object\n"
      ".size var, 4\n"
      "var:.zero 4\n"
      ".previous");
diff --git a/elf/tst-unique2mod2.c b/elf/tst-unique2mod2.c
index 4f1fec0087..aa28f29ba9 100644
--- a/elf/tst-unique2mod2.c
+++ b/elf/tst-unique2mod2.c
@@ -1,12 +1,9 @@
 #include <config.h>
 
 #ifdef HAVE_ASM_UNIQUE_OBJECT
-# define S(s) _S (s)
-# define _S(s) #s
-
 asm (".data;"
      ".globl var\n"
-     ".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
+     ".type var, %gnu_unique_object\n"
      ".size var, 4\n"
      "var:.zero 4\n"
      ".previous");
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index da8730d2bc..a626d593db 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -27,8 +27,6 @@
    It should define for us the following symbols:
 
    * HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
-   * ASM_TYPE_DIRECTIVE_PREFIX with `@' or `#' or whatever for .type,
-     or leave it undefined if there is no .type directive.
    * HAVE_ASM_WEAK_DIRECTIVE if we have weak symbols using `.weak'.
    * HAVE_ASM_WEAKEXT_DIRECTIVE if we have weak symbols using `.weakext'.
 
@@ -252,37 +250,26 @@ for linking")
    thinks it is.  */
 #define declare_symbol_alias(symbol, original, type, size) \
   declare_symbol_alias_1 (symbol, original, type, size)
-#ifdef ASM_TYPE_DIRECTIVE_PREFIX
-# ifdef __ASSEMBLER__
-#  define declare_symbol_alias_1(symbol, original, type, size) \
-    strong_alias (original, symbol); \
-    .type C_SYMBOL_NAME (symbol), \
-	  declare_symbol_alias_1_paste (ASM_TYPE_DIRECTIVE_PREFIX, type); \
-    .size C_SYMBOL_NAME (symbol), size
-#  define declare_symbol_alias_1_paste(a, b) \
-  declare_symbol_alias_1_paste_1 (a,b)
-#  define declare_symbol_alias_1_paste_1(a,b)	a##b
-# else /* Not __ASSEMBLER__.  */
-#  define declare_symbol_alias_1(symbol, original, type, size) \
-    asm (".globl " __SYMBOL_PREFIX #symbol \
-	 "\n\t" declare_symbol_alias_1_alias (symbol, original) \
-	 "\n\t.type " __SYMBOL_PREFIX #symbol ", " \
-	 declare_symbol_alias_1_stringify (ASM_TYPE_DIRECTIVE_PREFIX) #type \
-	 "\n\t.size " __SYMBOL_PREFIX #symbol ", " #size);
-#  define declare_symbol_alias_1_stringify(x) \
-  declare_symbol_alias_1_stringify_1 (x)
-#  define declare_symbol_alias_1_stringify_1(x) #x
-#  ifdef HAVE_ASM_SET_DIRECTIVE
-#   define declare_symbol_alias_1_alias(symbol, original) \
-	 ".set " __SYMBOL_PREFIX #symbol ", " __SYMBOL_PREFIX #original
-#  else
-#   define declare_symbol_alias_1_alias(symbol, original) \
-	 __SYMBOL_PREFIX #symbol " = " __SYMBOL_PREFIX #original
-#  endif /* HAVE_ASM_SET_DIRECTIVE */
-# endif /* __ASSEMBLER__ */
-#else
-# define declare_symbol_1(symbol, type, size) /* Nothing.  */
-#endif
+#ifdef __ASSEMBLER__
+# define declare_symbol_alias_1(symbol, original, type, size) \
+   strong_alias (original, symbol); \
+   .type C_SYMBOL_NAME (symbol), %##type; \
+   .size C_SYMBOL_NAME (symbol), size
+#else /* Not __ASSEMBLER__.  */
+# define declare_symbol_alias_1(symbol, original, type, size) \
+   asm (".globl " __SYMBOL_PREFIX #symbol \
+	"\n\t" declare_symbol_alias_1_alias (symbol, original) \
+	"\n\t.type " __SYMBOL_PREFIX #symbol ", " \
+	"%" #type \
+	"\n\t.size " __SYMBOL_PREFIX #symbol ", " #size);
+# ifdef HAVE_ASM_SET_DIRECTIVE
+#  define declare_symbol_alias_1_alias(symbol, original) \
+     ".set " __SYMBOL_PREFIX #symbol ", " __SYMBOL_PREFIX #original
+# else
+#  define declare_symbol_alias_1_alias(symbol, original) \
+     __SYMBOL_PREFIX #symbol " = " __SYMBOL_PREFIX #original
+# endif /* HAVE_ASM_SET_DIRECTIVE */
+#endif /* __ASSEMBLER__ */
 
 
 /*
diff --git a/sysdeps/i386/fpu/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
index f1970f6112..474f5c9352 100644
--- a/sysdeps/i386/fpu/e_acosh.S
+++ b/sysdeps/i386/fpu/e_acosh.S
@@ -22,10 +22,10 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
index 5c17e345a2..456fe46990 100644
--- a/sysdeps/i386/fpu/e_acoshf.S
+++ b/sysdeps/i386/fpu/e_acoshf.S
@@ -22,10 +22,10 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
index 05dbdfdbfb..d9b3add138 100644
--- a/sysdeps/i386/fpu/e_acoshl.S
+++ b/sysdeps/i386/fpu/e_acoshl.S
@@ -25,13 +25,13 @@
 	/* Please note that we use double value for 1.0.  This number
 	   has an exact representation and so we don't get accuracy
 	   problems.  The advantage is that the code is simpler.  */
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
index bef30de38d..b8ae6ef358 100644
--- a/sysdeps/i386/fpu/e_atanh.S
+++ b/sysdeps/i386/fpu/e_atanh.S
@@ -22,16 +22,16 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(half,@object)
+	.type half,@object
 half:	.double 0.5
 	ASM_SIZE_DIRECTIVE(half)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
-	ASM_TYPE_DIRECTIVE(ln2_2,@object)
+	.type ln2_2,@object
 ln2_2:	.tfloat 0.3465735902799726547086160
 	ASM_SIZE_DIRECTIVE(ln2_2)
 
diff --git a/sysdeps/i386/fpu/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
index edb6053840..c63748537d 100644
--- a/sysdeps/i386/fpu/e_atanhf.S
+++ b/sysdeps/i386/fpu/e_atanhf.S
@@ -22,17 +22,17 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(half,@object)
+	.type half,@object
 half:	.double 0.5
 	ASM_SIZE_DIRECTIVE(half)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(ln2_2,@object)
+	.type ln2_2,@object
 ln2_2:	.tfloat 0.3465735902799726547086160
 	ASM_SIZE_DIRECTIVE(ln2_2)
 
diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index 3d74f366fb..9e22e89f80 100644
--- a/sysdeps/i386/fpu/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
@@ -25,20 +25,20 @@
 	/* Please note that we use double values for 0.5 and 1.0.  These
 	   numbers have exact representations and so we don't get accuracy
 	   problems.  The advantage is that the code is simpler.  */
-	ASM_TYPE_DIRECTIVE(half,@object)
+	.type half,@object
 half:	.double 0.5
 	ASM_SIZE_DIRECTIVE(half)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(ln2_2,@object)
+	.type ln2_2,@object
 ln2_2:	.tfloat 0.3465735902799726547086160
 	ASM_SIZE_DIRECTIVE(ln2_2)
 
diff --git a/sysdeps/i386/fpu/e_expl.S b/sysdeps/i386/fpu/e_expl.S
index e42c9a1213..af339f0ff4 100644
--- a/sysdeps/i386/fpu/e_expl.S
+++ b/sysdeps/i386/fpu/e_expl.S
@@ -42,26 +42,26 @@
 
 	.p2align 4
 #ifdef USE_AS_EXP10L
-	ASM_TYPE_DIRECTIVE(c0,@object)
+	.type c0,@object
 c0:	.byte 0, 0, 0, 0, 0, 0, 0x9a, 0xd4, 0x00, 0x40
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c0)
-	ASM_TYPE_DIRECTIVE(c1,@object)
+	.type c1,@object
 c1:	.byte 0x58, 0x92, 0xfc, 0x15, 0x37, 0x9a, 0x97, 0xf0, 0xef, 0x3f
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c1)
 #else
-	ASM_TYPE_DIRECTIVE(c0,@object)
+	.type c0,@object
 c0:	.byte 0, 0, 0, 0, 0, 0, 0xaa, 0xb8, 0xff, 0x3f
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c0)
-	ASM_TYPE_DIRECTIVE(c1,@object)
+	.type c1,@object
 c1:	.byte 0x20, 0xfa, 0xee, 0xc2, 0x5f, 0x70, 0xa5, 0xec, 0xed, 0x3f
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c1)
 #endif
 #ifndef USE_AS_EXPM1L
-	ASM_TYPE_DIRECTIVE(csat,@object)
+	.type csat,@object
 csat:	.byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x0e, 0x40
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(csat)
diff --git a/sysdeps/i386/fpu/e_log.S b/sysdeps/i386/fpu/e_log.S
index e4fffb80d3..0877924998 100644
--- a/sysdeps/i386/fpu/e_log.S
+++ b/sysdeps/i386/fpu/e_log.S
@@ -10,13 +10,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_log10.S b/sysdeps/i386/fpu/e_log10.S
index b54bf0ed0e..ce6a81abb6 100644
--- a/sysdeps/i386/fpu/e_log10.S
+++ b/sysdeps/i386/fpu/e_log10.S
@@ -10,13 +10,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
index 344110c1a4..8c20723555 100644
--- a/sysdeps/i386/fpu/e_log10f.S
+++ b/sysdeps/i386/fpu/e_log10f.S
@@ -11,13 +11,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
index eeb49c6636..cde987b137 100644
--- a/sysdeps/i386/fpu/e_log10l.S
+++ b/sysdeps/i386/fpu/e_log10l.S
@@ -12,13 +12,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_log2.S b/sysdeps/i386/fpu/e_log2.S
index cc377637f6..a202bc731d 100644
--- a/sysdeps/i386/fpu/e_log2.S
+++ b/sysdeps/i386/fpu/e_log2.S
@@ -11,13 +11,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_log2f.S b/sysdeps/i386/fpu/e_log2f.S
index 59f4f212e3..f4f9a8c3bf 100644
--- a/sysdeps/i386/fpu/e_log2f.S
+++ b/sysdeps/i386/fpu/e_log2f.S
@@ -11,13 +11,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_log2l.S b/sysdeps/i386/fpu/e_log2l.S
index 4693f6c717..bd51b5651e 100644
--- a/sysdeps/i386/fpu/e_log2l.S
+++ b/sysdeps/i386/fpu/e_log2l.S
@@ -11,13 +11,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_logf.S b/sysdeps/i386/fpu/e_logf.S
index e277a2f5ec..485180e909 100644
--- a/sysdeps/i386/fpu/e_logf.S
+++ b/sysdeps/i386/fpu/e_logf.S
@@ -11,13 +11,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_logl.S b/sysdeps/i386/fpu/e_logl.S
index 7b52b3b2d4..d7a459a627 100644
--- a/sysdeps/i386/fpu/e_logl.S
+++ b/sysdeps/i386/fpu/e_logl.S
@@ -11,13 +11,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/e_pow.S b/sysdeps/i386/fpu/e_pow.S
index 73d2421162..de850226db 100644
--- a/sysdeps/i386/fpu/e_pow.S
+++ b/sysdeps/i386/fpu/e_pow.S
@@ -23,31 +23,31 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
-	ASM_TYPE_DIRECTIVE(p63,@object)
+	.type p63,@object
 p63:	.byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43
 	ASM_SIZE_DIRECTIVE(p63)
-	ASM_TYPE_DIRECTIVE(p10,@object)
+	.type p10,@object
 p10:	.byte 0, 0, 0, 0, 0, 0, 0x90, 0x40
 	ASM_SIZE_DIRECTIVE(p10)
 
 	.section .rodata.cst16,"aM",@progbits,16
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(infinity,@object)
+	.type infinity,@object
 inf_zero:
 infinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
 	ASM_SIZE_DIRECTIVE(infinity)
-	ASM_TYPE_DIRECTIVE(zero,@object)
+	.type zero,@object
 zero:	.double 0.0
 	ASM_SIZE_DIRECTIVE(zero)
-	ASM_TYPE_DIRECTIVE(minf_mzero,@object)
+	.type minf_mzero,@object
 minf_mzero:
 minfinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
diff --git a/sysdeps/i386/fpu/e_powf.S b/sysdeps/i386/fpu/e_powf.S
index 529a96f953..4c622fc569 100644
--- a/sysdeps/i386/fpu/e_powf.S
+++ b/sysdeps/i386/fpu/e_powf.S
@@ -23,28 +23,28 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
-	ASM_TYPE_DIRECTIVE(p31,@object)
+	.type p31,@object
 p31:	.byte 0, 0, 0, 0, 0, 0, 0xe0, 0x41
 	ASM_SIZE_DIRECTIVE(p31)
 
 	.section .rodata.cst16,"aM",@progbits,16
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(infinity,@object)
+	.type infinity,@object
 inf_zero:
 infinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
 	ASM_SIZE_DIRECTIVE(infinity)
-	ASM_TYPE_DIRECTIVE(zero,@object)
+	.type zero,@object
 zero:	.double 0.0
 	ASM_SIZE_DIRECTIVE(zero)
-	ASM_TYPE_DIRECTIVE(minf_mzero,@object)
+	.type minf_mzero,@object
 minf_mzero:
 minfinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
diff --git a/sysdeps/i386/fpu/e_powl.S b/sysdeps/i386/fpu/e_powl.S
index 5b166eab4b..933418cf82 100644
--- a/sysdeps/i386/fpu/e_powl.S
+++ b/sysdeps/i386/fpu/e_powl.S
@@ -23,34 +23,34 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
-	ASM_TYPE_DIRECTIVE(p63,@object)
+	.type p63,@object
 p63:	.byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43
 	ASM_SIZE_DIRECTIVE(p63)
-	ASM_TYPE_DIRECTIVE(p64,@object)
+	.type p64,@object
 p64:	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
 	ASM_SIZE_DIRECTIVE(p64)
-	ASM_TYPE_DIRECTIVE(p78,@object)
+	.type p78,@object
 p78:	.byte 0, 0, 0, 0, 0, 0, 0xd0, 0x44
 	ASM_SIZE_DIRECTIVE(p78)
 
 	.section .rodata.cst16,"aM",@progbits,16
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(infinity,@object)
+	.type infinity,@object
 inf_zero:
 infinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
 	ASM_SIZE_DIRECTIVE(infinity)
-	ASM_TYPE_DIRECTIVE(zero,@object)
+	.type zero,@object
 zero:	.double 0.0
 	ASM_SIZE_DIRECTIVE(zero)
-	ASM_TYPE_DIRECTIVE(minf_mzero,@object)
+	.type minf_mzero,@object
 minf_mzero:
 minfinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 1d8d2dd01f..20d489efde 100644
--- a/sysdeps/i386/fpu/e_scalb.S
+++ b/sysdeps/i386/fpu/e_scalb.S
@@ -10,7 +10,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(zero_nan,@object)
+	.type zero_nan,@object
 zero_nan:
 	.double 0.0
 nan:	.byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index 0967dbdc2d..b6dd02122a 100644
--- a/sysdeps/i386/fpu/e_scalbf.S
+++ b/sysdeps/i386/fpu/e_scalbf.S
@@ -11,7 +11,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(zero_nan,@object)
+	.type zero_nan,@object
 zero_nan:
 	.double 0.0
 nan:	.byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 434fce46f3..83f17b233b 100644
--- a/sysdeps/i386/fpu/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
@@ -12,7 +12,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(zero_nan,@object)
+	.type zero_nan,@object
 zero_nan:
 	.double 0.0
 nan:	.byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
diff --git a/sysdeps/i386/fpu/s_asinh.S b/sysdeps/i386/fpu/s_asinh.S
index f101f36d60..8bdcfcc92f 100644
--- a/sysdeps/i386/fpu/s_asinh.S
+++ b/sysdeps/i386/fpu/s_asinh.S
@@ -22,13 +22,13 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(huge,@object)
+	.type huge,@object
 huge:	.double 1e+300
 	ASM_SIZE_DIRECTIVE(huge)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/s_asinhf.S b/sysdeps/i386/fpu/s_asinhf.S
index aa72676b4a..86a49a3fa9 100644
--- a/sysdeps/i386/fpu/s_asinhf.S
+++ b/sysdeps/i386/fpu/s_asinhf.S
@@ -22,13 +22,13 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(huge,@object)
+	.type huge,@object
 huge:	.double 1e+36
 	ASM_SIZE_DIRECTIVE(huge)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/s_asinhl.S b/sysdeps/i386/fpu/s_asinhl.S
index ec24343642..4ec5c10213 100644
--- a/sysdeps/i386/fpu/s_asinhl.S
+++ b/sysdeps/i386/fpu/s_asinhl.S
@@ -22,20 +22,20 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(huge,@object)
+	.type huge,@object
 huge:	.tfloat 1e+4930
 	ASM_SIZE_DIRECTIVE(huge)
 	.align ALIGNARG(4)
 	/* Please note that we use double value for 1.0.  This number
 	   has an exact representation and so we don't get accuracy
 	   problems.  The advantage is that the code is simpler.  */
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/fpu/s_cbrt.S b/sysdeps/i386/fpu/s_cbrt.S
index 15b25a42ad..aca0b5a92b 100644
--- a/sysdeps/i386/fpu/s_cbrt.S
+++ b/sysdeps/i386/fpu/s_cbrt.S
@@ -23,25 +23,25 @@
         .section .rodata
 
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f7,@object)
+        .type f7,@object
 f7:	.double -0.145263899385486377
 	ASM_SIZE_DIRECTIVE(f7)
-        ASM_TYPE_DIRECTIVE(f6,@object)
+        .type f6,@object
 f6:	.double 0.784932344976639262
 	ASM_SIZE_DIRECTIVE(f6)
-        ASM_TYPE_DIRECTIVE(f5,@object)
+        .type f5,@object
 f5:	.double -1.83469277483613086
 	ASM_SIZE_DIRECTIVE(f5)
-        ASM_TYPE_DIRECTIVE(f4,@object)
+        .type f4,@object
 f4:	.double 2.44693122563534430
 	ASM_SIZE_DIRECTIVE(f4)
-        ASM_TYPE_DIRECTIVE(f3,@object)
+        .type f3,@object
 f3:	.double -2.11499494167371287
 	ASM_SIZE_DIRECTIVE(f3)
-        ASM_TYPE_DIRECTIVE(f2,@object)
+        .type f2,@object
 f2:	.double 1.50819193781584896
 	ASM_SIZE_DIRECTIVE(f2)
-        ASM_TYPE_DIRECTIVE(f1,@object)
+        .type f1,@object
 f1:	.double 0.354895765043919860
 	ASM_SIZE_DIRECTIVE(f1)
 
@@ -50,7 +50,7 @@ f1:	.double 0.354895765043919860
 #define SQR_CBRT2	1.5874010519681994748
 #define ONE_SQR_CBRT2	0.629960524947436582364439673883
 
-	ASM_TYPE_DIRECTIVE(factor,@object)
+	.type factor,@object
 factor:	.double ONE_SQR_CBRT2
 	.double ONE_CBRT2
 	.double 1.0
@@ -58,7 +58,7 @@ factor:	.double ONE_SQR_CBRT2
 	.double SQR_CBRT2
 	ASM_SIZE_DIRECTIVE(factor)
 
-        ASM_TYPE_DIRECTIVE(two54,@object)
+        .type two54,@object
 two54:  .byte 0, 0, 0, 0, 0, 0, 0x50, 0x43
         ASM_SIZE_DIRECTIVE(two54)
 
diff --git a/sysdeps/i386/fpu/s_cbrtf.S b/sysdeps/i386/fpu/s_cbrtf.S
index be16b3cb73..c3ba2fa2ec 100644
--- a/sysdeps/i386/fpu/s_cbrtf.S
+++ b/sysdeps/i386/fpu/s_cbrtf.S
@@ -23,13 +23,13 @@
         .section .rodata
 
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f3,@object)
+        .type f3,@object
 f3:	.double 0.191502161678719066
         ASM_SIZE_DIRECTIVE(f3)
-        ASM_TYPE_DIRECTIVE(f2,@object)
+        .type f2,@object
 f2:	.double 0.697570460207922770
         ASM_SIZE_DIRECTIVE(f2)
-        ASM_TYPE_DIRECTIVE(f1,@object)
+        .type f1,@object
 f1:	.double 0.492659620528969547
         ASM_SIZE_DIRECTIVE(f1)
 
@@ -38,7 +38,7 @@ f1:	.double 0.492659620528969547
 #define SQR_CBRT2	1.5874010519681994748
 #define ONE_SQR_CBRT2	0.629960524947436582364439673883
 
-	ASM_TYPE_DIRECTIVE(factor,@object)
+	.type factor,@object
         .align ALIGNARG(4)
 factor:	.double ONE_SQR_CBRT2
 	.double ONE_CBRT2
@@ -47,7 +47,7 @@ factor:	.double ONE_SQR_CBRT2
 	.double SQR_CBRT2
 	ASM_SIZE_DIRECTIVE(factor)
 
-        ASM_TYPE_DIRECTIVE(two25,@object)
+        .type two25,@object
 two25:	.byte 0, 0, 0, 0x4c
         ASM_SIZE_DIRECTIVE(two25)
 
diff --git a/sysdeps/i386/fpu/s_cbrtl.S b/sysdeps/i386/fpu/s_cbrtl.S
index e92547e8ad..8b50ba4b69 100644
--- a/sysdeps/i386/fpu/s_cbrtl.S
+++ b/sysdeps/i386/fpu/s_cbrtl.S
@@ -23,35 +23,35 @@
         .section .rodata
 
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f8,@object)
+        .type f8,@object
 f8:	.tfloat 0.161617097923756032
 	ASM_SIZE_DIRECTIVE(f8)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f7,@object)
+        .type f7,@object
 f7:	.tfloat -0.988553671195413709
 	ASM_SIZE_DIRECTIVE(f7)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f6,@object)
+        .type f6,@object
 f6:	.tfloat 2.65298938441952296
 	ASM_SIZE_DIRECTIVE(f6)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f5,@object)
+        .type f5,@object
 f5:	.tfloat -4.11151425200350531
 	ASM_SIZE_DIRECTIVE(f5)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f4,@object)
+        .type f4,@object
 f4:	.tfloat 4.09559907378707839
 	ASM_SIZE_DIRECTIVE(f4)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f3,@object)
+        .type f3,@object
 f3:	.tfloat -2.82414939754975962
 	ASM_SIZE_DIRECTIVE(f3)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f2,@object)
+        .type f2,@object
 f2:	.tfloat 1.67595307700780102
 	ASM_SIZE_DIRECTIVE(f2)
         .align ALIGNARG(4)
-        ASM_TYPE_DIRECTIVE(f1,@object)
+        .type f1,@object
 f1:	.tfloat 0.338058687610520237
 	ASM_SIZE_DIRECTIVE(f1)
 
@@ -62,7 +62,7 @@ f1:	.tfloat 0.338058687610520237
 
 	/* We make the entries in the following table all 16 bytes
 	   wide to avoid having to implement a multiplication by 10.  */
-	ASM_TYPE_DIRECTIVE(factor,@object)
+	.type factor,@object
         .align ALIGNARG(4)
 factor:	.tfloat ONE_SQR_CBRT2
 	.byte 0, 0, 0, 0, 0, 0
@@ -75,7 +75,7 @@ factor:	.tfloat ONE_SQR_CBRT2
 	.tfloat SQR_CBRT2
 	ASM_SIZE_DIRECTIVE(factor)
 
-        ASM_TYPE_DIRECTIVE(two64,@object)
+        .type two64,@object
         .align ALIGNARG(4)
 two64:  .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
         ASM_SIZE_DIRECTIVE(two64)
diff --git a/sysdeps/i386/fpu/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S
index d2754de911..2aad34c055 100644
--- a/sysdeps/i386/fpu/s_expm1.S
+++ b/sysdeps/i386/fpu/s_expm1.S
@@ -27,13 +27,13 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(minus1,@object)
+	.type minus1,@object
 minus1:	.double -1.0
 	ASM_SIZE_DIRECTIVE(minus1)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(l2e,@object)
+	.type l2e,@object
 l2e:	.tfloat 1.442695040888963407359924681002
 	ASM_SIZE_DIRECTIVE(l2e)
 
diff --git a/sysdeps/i386/fpu/s_expm1f.S b/sysdeps/i386/fpu/s_expm1f.S
index fc82b92341..b039049bd5 100644
--- a/sysdeps/i386/fpu/s_expm1f.S
+++ b/sysdeps/i386/fpu/s_expm1f.S
@@ -27,13 +27,13 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(minus1,@object)
+	.type minus1,@object
 minus1:	.double -1.0
 	ASM_SIZE_DIRECTIVE(minus1)
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(l2e,@object)
+	.type l2e,@object
 l2e:	.tfloat 1.442695040888963407359924681002
 	ASM_SIZE_DIRECTIVE(l2e)
 
diff --git a/sysdeps/i386/fpu/s_frexp.S b/sysdeps/i386/fpu/s_frexp.S
index 27c494ef00..e76732dc8b 100644
--- a/sysdeps/i386/fpu/s_frexp.S
+++ b/sysdeps/i386/fpu/s_frexp.S
@@ -24,7 +24,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(two54,@object)
+	.type two54,@object
 two54:	.byte 0, 0, 0, 0, 0, 0, 0x50, 0x43
 	ASM_SIZE_DIRECTIVE(two54)
 
diff --git a/sysdeps/i386/fpu/s_frexpf.S b/sysdeps/i386/fpu/s_frexpf.S
index 18bc7615a0..af0dc8ee3d 100644
--- a/sysdeps/i386/fpu/s_frexpf.S
+++ b/sysdeps/i386/fpu/s_frexpf.S
@@ -24,7 +24,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(two25,@object)
+	.type two25,@object
 two25:	.byte 0, 0, 0, 0x4c
 	ASM_SIZE_DIRECTIVE(two25)
 
diff --git a/sysdeps/i386/fpu/s_frexpl.S b/sysdeps/i386/fpu/s_frexpl.S
index e683c2bac2..6f464a89d6 100644
--- a/sysdeps/i386/fpu/s_frexpl.S
+++ b/sysdeps/i386/fpu/s_frexpl.S
@@ -24,7 +24,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(two64,@object)
+	.type two64,@object
 two64:	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
 	ASM_SIZE_DIRECTIVE(two64)
 
diff --git a/sysdeps/i386/i386-mcount.S b/sysdeps/i386/i386-mcount.S
index 11f7493c3a..dfe19a280a 100644
--- a/sysdeps/i386/i386-mcount.S
+++ b/sysdeps/i386/i386-mcount.S
@@ -27,7 +27,7 @@
      - some (future) systems might want to pass parameters in registers.  */
 
 	.globl C_SYMBOL_NAME(_mcount)
-	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
+	.type C_SYMBOL_NAME(_mcount), @function
 	.align ALIGNARG(4)
 C_LABEL(_mcount)
 	/* Save the caller-clobbered registers.  */
@@ -55,7 +55,7 @@ weak_alias (_mcount, mcount)
 
 	/* Same as above, but doesn't require a frame pointer */
 	.globl C_SYMBOL_NAME(__fentry__)
-	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
+	.type C_SYMBOL_NAME(__fentry__), @function
 	.align ALIGNARG(4)
 C_LABEL(__fentry__)
 	/* Save the caller-clobbered registers.  */
diff --git a/sysdeps/i386/i686/fpu/e_logl.S b/sysdeps/i386/i686/fpu/e_logl.S
index be2116cb36..8a86222b13 100644
--- a/sysdeps/i386/i686/fpu/e_logl.S
+++ b/sysdeps/i386/i686/fpu/e_logl.S
@@ -12,13 +12,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S b/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
index 31cdffdb00..111838aab6 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
+++ b/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
@@ -243,82 +243,82 @@ L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */
 	.long	0xee615a27, 0x3ffefa1b
 	.long	0x5b6e4540, 0x3fff5076
 	.long	0x819e90d8, 0x3fffa7c1
-	ASM_TYPE_DIRECTIVE(L(DP_T), @object)
+	.type L(DP_T), @object
 	ASM_SIZE_DIRECTIVE(L(DP_T))
 
 	.section .rodata.cst8,"aM",@progbits,8
 	.p2align 3
 L(DP_KLN2): /* double precision K/log(2) */
 	.long	0x652b82fe, 0x40571547
-	ASM_TYPE_DIRECTIVE(L(DP_KLN2), @object)
+	.type L(DP_KLN2), @object
 	ASM_SIZE_DIRECTIVE(L(DP_KLN2))
 
 	.p2align 3
 L(DP_NLN2K): /* double precision -log(2)/K */
 	.long	0xfefa39ef, 0xbf862e42
-	ASM_TYPE_DIRECTIVE(L(DP_NLN2K), @object)
+	.type L(DP_NLN2K), @object
 	ASM_SIZE_DIRECTIVE(L(DP_NLN2K))
 
 	.p2align 3
 L(DP_RS): /* double precision 2^23+2^22 */
 	.long	0x00000000, 0x41680000
-	ASM_TYPE_DIRECTIVE(L(DP_RS), @object)
+	.type L(DP_RS), @object
 	ASM_SIZE_DIRECTIVE(L(DP_RS))
 
 	.p2align 3
 L(DP_P3): /* double precision polynomial coefficient P3 */
 	.long	0xeb78fa85, 0x3fa56420
-	ASM_TYPE_DIRECTIVE(L(DP_P3), @object)
+	.type L(DP_P3), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P3))
 
 	.p2align 3
 L(DP_P1): /* double precision polynomial coefficient P1 */
 	.long	0x008d6118, 0x3fe00000
-	ASM_TYPE_DIRECTIVE(L(DP_P1), @object)
+	.type L(DP_P1), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P1))
 
 	.p2align 3
 L(DP_P2): /* double precision polynomial coefficient P2 */
 	.long	0xda752d4f, 0x3fc55550
-	ASM_TYPE_DIRECTIVE(L(DP_P2), @object)
+	.type L(DP_P2), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P2))
 
 	.p2align 3
 L(DP_P0): /* double precision polynomial coefficient P0 */
 	.long	0xffffe7c6, 0x3fefffff
-	ASM_TYPE_DIRECTIVE(L(DP_P0), @object)
+	.type L(DP_P0), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P0))
 
 	.p2align 2
 L(SP_INF_0):
 	.long	0x7f800000	/* single precision Inf */
 	.long	0		/* single precision zero */
-	ASM_TYPE_DIRECTIVE(L(SP_INF_0), @object)
+	.type L(SP_INF_0), @object
 	ASM_SIZE_DIRECTIVE(L(SP_INF_0))
 
 	.section .rodata.cst4,"aM",@progbits,4
 	.p2align 2
 L(SP_RS): /* single precision 2^23+2^22 */
 	.long	0x4b400000
-	ASM_TYPE_DIRECTIVE(L(SP_RS), @object)
+	.type L(SP_RS), @object
 	ASM_SIZE_DIRECTIVE(L(SP_RS))
 
 	.p2align 2
 L(SP_SMALL): /* single precision small value 2^(-100) */
 	.long	0x0d800000
-	ASM_TYPE_DIRECTIVE(L(SP_SMALL), @object)
+	.type L(SP_SMALL), @object
 	ASM_SIZE_DIRECTIVE(L(SP_SMALL))
 
 	.p2align 2
 L(SP_LARGE): /* single precision large value 2^100 */
 	.long	0x71800000
-	ASM_TYPE_DIRECTIVE(L(SP_LARGE), @object)
+	.type L(SP_LARGE), @object
 	ASM_SIZE_DIRECTIVE(L(SP_LARGE))
 
 	.p2align 2
 L(SP_ONE): /* single precision 1.0 */
 	.long	0x3f800000
-	ASM_TYPE_DIRECTIVE(L(SP_ONE), @object)
+	.type L(SP_ONE), @object
 	ASM_SIZE_DIRECTIVE(L(SP_ONE))
 
 strong_alias (__ieee754_expf_sse2, __expf_finite_sse2)
diff --git a/sysdeps/i386/i686/strtok.S b/sysdeps/i386/i686/strtok.S
index 92d52556dc..5589ae5360 100644
--- a/sysdeps/i386/i686/strtok.S
+++ b/sysdeps/i386/i686/strtok.S
@@ -1,6 +1,6 @@
 /* strtok (str, delim) -- Return next DELIM separated token from STR.
    For Intel 80686.
-   Copyright (C) 1998, 2000, 2001, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1998-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -43,7 +43,7 @@
 #else
 	.bss
 	.local save_ptr
-	ASM_TYPE_DIRECTIVE (save_ptr, @object)
+	.type save_ptr, @object
 	.size save_ptr, 4
 save_ptr:
 # if __BOUNDED_POINTERS__
diff --git a/sysdeps/i386/strtok.S b/sysdeps/i386/strtok.S
index e936fc19f1..3b222aff3d 100644
--- a/sysdeps/i386/strtok.S
+++ b/sysdeps/i386/strtok.S
@@ -1,6 +1,6 @@
 /* strtok (str, delim) -- Return next DELIM separated token from STR.
    For Intel 80x86, x>=3.
-   Copyright (C) 1996-1998,2000,2001,2005,2006 Free Software Foundation, Inc.
+   Copyright (C) 1996-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -43,7 +43,7 @@
 #else
 	.bss
 	.local save_ptr
-	ASM_TYPE_DIRECTIVE (save_ptr, @object)
+	.type save_ptr, @object
 	.size save_ptr, 4
 save_ptr:
 # if __BOUNDED_POINTERS__
diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h
index 01e6817919..2e547e6ea0 100644
--- a/sysdeps/i386/sysdep.h
+++ b/sysdeps/i386/sysdep.h
@@ -50,8 +50,6 @@
 
 /* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
 #define ALIGNARG(log2) 1<<log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
 
 
@@ -63,8 +61,8 @@
 #define	ENTRY(name)							      \
   STABS_CURRENT_FILE1("")						      \
   STABS_CURRENT_FILE(name)						      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(4);							      \
   STABS_FUN(name)							      \
   C_LABEL(name)								      \
diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h
index 811ebf2aed..02917a8677 100644
--- a/sysdeps/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/powerpc/powerpc32/sysdep.h
@@ -30,15 +30,15 @@
 # define CALL_MCOUNT							      \
   mflr  r0;								      \
   stw   r0,4(r1);							      \
-  cfi_offset (lr, 4);	       						      \
+  cfi_offset (lr, 4);							      \
   bl    JUMPTARGET(_mcount);
 #else  /* PROF */
 # define CALL_MCOUNT		/* Do nothing.  */
 #endif /* PROF */
 
 #define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(2);							      \
   C_LABEL(name)								      \
   cfi_startproc;							      \
@@ -46,7 +46,7 @@
 
 /* helper macro for accessing the 32-bit powerpc GOT. */
 
-#define	SETUP_GOT_ACCESS(regname,GOT_LABEL)			      	      \
+#define	SETUP_GOT_ACCESS(regname,GOT_LABEL)				      \
 	bcl	20,31,GOT_LABEL	;					      \
 GOT_LABEL:			;					      \
 	mflr	(regname)
@@ -64,8 +64,8 @@ GOT_LABEL:			;					      \
    past a 2^align boundary.  */
 #ifdef PROF
 # define EALIGN(name, alignt, words)					      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(2);							      \
   C_LABEL(name)								      \
   cfi_startproc;							      \
@@ -76,8 +76,8 @@ GOT_LABEL:			;					      \
   0:
 #else /* PROF */
 # define EALIGN(name, alignt, words)					      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(alignt);						      \
   EALIGN_W_##words;							      \
   C_LABEL(name)								      \
@@ -89,7 +89,7 @@ GOT_LABEL:			;					      \
   cfi_endproc;								      \
   ASM_SIZE_DIRECTIVE(name)
 
-#define DO_CALL(syscall)				      		      \
+#define DO_CALL(syscall)						      \
     li 0,syscall;							      \
     sc
 
diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h
index 7682ae9188..302f559702 100644
--- a/sysdeps/powerpc/sysdep.h
+++ b/sysdeps/powerpc/sysdep.h
@@ -147,8 +147,6 @@
 
 /* This seems to always be the case on PPC.  */
 #define ALIGNARG(log2) log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name
 
 #endif	/* __ASSEMBLER__ */
diff --git a/sysdeps/s390/s390-32/s390-mcount.S b/sysdeps/s390/s390-32/s390-mcount.S
index 1c8c79adac..04e14ebd8f 100644
--- a/sysdeps/s390/s390-32/s390-mcount.S
+++ b/sysdeps/s390/s390-32/s390-mcount.S
@@ -48,7 +48,7 @@
  */
 
 	.globl C_SYMBOL_NAME(_mcount)
-	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
+	.type C_SYMBOL_NAME(_mcount), @function
 	cfi_startproc
 	.align ALIGNARG(4)
 C_LABEL(_mcount)
diff --git a/sysdeps/s390/s390-32/sysdep.h b/sysdeps/s390/s390-32/sysdep.h
index 24a07a2a90..78749ee161 100644
--- a/sysdeps/s390/s390-32/sysdep.h
+++ b/sysdeps/s390/s390-32/sysdep.h
@@ -25,15 +25,13 @@
 
 /* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
 #define ALIGNARG(log2) 1<<log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
 
 
 /* Define an entry point visible from C. */
 #define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(2);							      \
   C_LABEL(name)								      \
   cfi_startproc;							      \
diff --git a/sysdeps/s390/s390-64/s390x-mcount.S b/sysdeps/s390/s390-64/s390x-mcount.S
index 5d8ef91178..3d43929892 100644
--- a/sysdeps/s390/s390-64/s390x-mcount.S
+++ b/sysdeps/s390/s390-64/s390x-mcount.S
@@ -44,7 +44,7 @@
    _mcount may not modify any register.  */
 
 	.globl C_SYMBOL_NAME(_mcount)
-	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
+	.type C_SYMBOL_NAME(_mcount), @function
 	cfi_startproc
 	.align ALIGNARG(4)
 C_LABEL(_mcount)
diff --git a/sysdeps/s390/s390-64/sysdep.h b/sysdeps/s390/s390-64/sysdep.h
index b7449b6b15..e62191c2a2 100644
--- a/sysdeps/s390/s390-64/sysdep.h
+++ b/sysdeps/s390/s390-64/sysdep.h
@@ -25,15 +25,13 @@
 
 /* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
 #define ALIGNARG(log2) 1<<log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
 
 
 /* Define an entry point visible from C. */
 #define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(2);							      \
   C_LABEL(name)								      \
   cfi_startproc;							      \
diff --git a/sysdeps/sh/_mcount.S b/sysdeps/sh/_mcount.S
index 878788b599..7c9f6d132e 100644
--- a/sysdeps/sh/_mcount.S
+++ b/sysdeps/sh/_mcount.S
@@ -20,7 +20,7 @@
 #include <sysdep.h>
 
 	.globl C_SYMBOL_NAME(_mcount)
-	ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(_mcount),function)
+	.type C_SYMBOL_NAME(_mcount),@function
 	cfi_startproc
 	.align	5
 C_LABEL(_mcount)
diff --git a/sysdeps/sh/sysdep.h b/sysdeps/sh/sysdep.h
index 66a1982887..1111b8bd42 100644
--- a/sysdeps/sh/sysdep.h
+++ b/sysdeps/sh/sysdep.h
@@ -23,8 +23,6 @@
 /* Syntactic details of assembler.  */
 
 #define ALIGNARG(log2) log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,@##typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name
 
 #ifdef SHARED
@@ -36,8 +34,8 @@
 
 /* Define an entry point visible from C.  */
 #define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(5);							      \
   C_LABEL(name)								      \
   cfi_startproc;							      \
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
index 0f4fe53343..9b0693a195 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
@@ -58,8 +58,6 @@
 
 /* This seems to always be the case on PPC.  */
 # define ALIGNARG(log2) log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-# define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
 # define ASM_SIZE_DIRECTIVE(name) .size name,.-name
 
 #endif /* __ASSEMBLER__ */
diff --git a/sysdeps/x86_64/_mcount.S b/sysdeps/x86_64/_mcount.S
index c919865b4d..3adfe031ff 100644
--- a/sysdeps/x86_64/_mcount.S
+++ b/sysdeps/x86_64/_mcount.S
@@ -25,7 +25,7 @@
 #include <sysdep.h>
 
 	.globl C_SYMBOL_NAME(_mcount)
-	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function)
+	.type C_SYMBOL_NAME(_mcount), @function
 	.align ALIGNARG(4)
 C_LABEL(_mcount)
 	/* Allocate space for 7 registers.  */
@@ -66,7 +66,7 @@ C_LABEL(_mcount)
 weak_alias (_mcount, mcount)
 
 	.globl C_SYMBOL_NAME(__fentry__)
-	ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
+	.type C_SYMBOL_NAME(__fentry__), @function
 	.align ALIGNARG(4)
 C_LABEL(__fentry__)
 	/* Allocate space for 7 registers.  */
diff --git a/sysdeps/x86_64/fpu/e_expf.S b/sysdeps/x86_64/fpu/e_expf.S
index 340a1c2f07..9b13304358 100644
--- a/sysdeps/x86_64/fpu/e_expf.S
+++ b/sysdeps/x86_64/fpu/e_expf.S
@@ -251,89 +251,89 @@ L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */
 	.long	0xee615a27, 0x3ffefa1b
 	.long	0x5b6e4540, 0x3fff5076
 	.long	0x819e90d8, 0x3fffa7c1
-	ASM_TYPE_DIRECTIVE(L(DP_T), @object)
+	.type L(DP_T), @object
 	ASM_SIZE_DIRECTIVE(L(DP_T))
 
 	.section .rodata.cst8,"aM",@progbits,8
 	.p2align 3
 L(DP_KLN2): /* double precision K/log(2) */
 	.long	0x652b82fe, 0x40571547
-	ASM_TYPE_DIRECTIVE(L(DP_KLN2), @object)
+	.type L(DP_KLN2), @object
 	ASM_SIZE_DIRECTIVE(L(DP_KLN2))
 
 	.p2align 3
 L(DP_NLN2K): /* double precision -log(2)/K */
 	.long	0xfefa39ef, 0xbf862e42
-	ASM_TYPE_DIRECTIVE(L(DP_NLN2K), @object)
+	.type L(DP_NLN2K), @object
 	ASM_SIZE_DIRECTIVE(L(DP_NLN2K))
 
 	.p2align 3
 L(DP_RS): /* double precision 2^23+2^22 */
 	.long	0x00000000, 0x41680000
-	ASM_TYPE_DIRECTIVE(L(DP_RS), @object)
+	.type L(DP_RS), @object
 	ASM_SIZE_DIRECTIVE(L(DP_RS))
 
 	.p2align 3
 L(DP_P3): /* double precision polynomial coefficient P3 */
 	.long	0xeb78fa85, 0x3fa56420
-	ASM_TYPE_DIRECTIVE(L(DP_P3), @object)
+	.type L(DP_P3), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P3))
 
 	.p2align 3
 L(DP_P1): /* double precision polynomial coefficient P1 */
 	.long	0x008d6118, 0x3fe00000
-	ASM_TYPE_DIRECTIVE(L(DP_P1), @object)
+	.type L(DP_P1), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P1))
 
 	.p2align 3
 L(DP_P2): /* double precision polynomial coefficient P2 */
 	.long	0xda752d4f, 0x3fc55550
-	ASM_TYPE_DIRECTIVE(L(DP_P2), @object)
+	.type L(DP_P2), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P2))
 
 	.p2align 3
 L(DP_P0): /* double precision polynomial coefficient P0 */
 	.long	0xffffe7c6, 0x3fefffff
-	ASM_TYPE_DIRECTIVE(L(DP_P0), @object)
+	.type L(DP_P0), @object
 	ASM_SIZE_DIRECTIVE(L(DP_P0))
 
 	.p2align 2
 L(SP_RANGE): /* single precision overflow/underflow bounds */
 	.long	0x42b17217	/* if x>this bound, then result overflows */
 	.long	0x42cff1b4	/* if x<this bound, then result underflows */
-	ASM_TYPE_DIRECTIVE(L(SP_RANGE), @object)
+	.type L(SP_RANGE), @object
 	ASM_SIZE_DIRECTIVE(L(SP_RANGE))
 
 	.p2align 2
 L(SP_INF_0):
 	.long	0x7f800000	/* single precision Inf */
 	.long	0		/* single precision zero */
-	ASM_TYPE_DIRECTIVE(L(SP_INF_0), @object)
+	.type L(SP_INF_0), @object
 	ASM_SIZE_DIRECTIVE(L(SP_INF_0))
 
 	.section .rodata.cst4,"aM",@progbits,4
 	.p2align 2
 L(SP_RS): /* single precision 2^23+2^22 */
 	.long	0x4b400000
-	ASM_TYPE_DIRECTIVE(L(SP_RS), @object)
+	.type L(SP_RS), @object
 	ASM_SIZE_DIRECTIVE(L(SP_RS))
 
 	.p2align 2
 L(SP_SMALL): /* single precision small value 2^(-100) */
 	.long	0x0d800000
-	ASM_TYPE_DIRECTIVE(L(SP_SMALL), @object)
+	.type L(SP_SMALL), @object
 	ASM_SIZE_DIRECTIVE(L(SP_SMALL))
 
 	.p2align 2
 L(SP_LARGE): /* single precision large value 2^100 */
 	.long	0x71800000
-	ASM_TYPE_DIRECTIVE(L(SP_LARGE), @object)
+	.type L(SP_LARGE), @object
 	ASM_SIZE_DIRECTIVE(L(SP_LARGE))
 
 	.p2align 2
 L(SP_ONE): /* single precision 1.0 */
 	.long	0x3f800000
-	ASM_TYPE_DIRECTIVE(L(SP_ONE), @object)
+	.type L(SP_ONE), @object
 	ASM_SIZE_DIRECTIVE(L(SP_ONE))
 
 strong_alias (__ieee754_expf, __expf_finite)
diff --git a/sysdeps/x86_64/fpu/e_expl.S b/sysdeps/x86_64/fpu/e_expl.S
index 1c37c86f7f..a919780390 100644
--- a/sysdeps/x86_64/fpu/e_expl.S
+++ b/sysdeps/x86_64/fpu/e_expl.S
@@ -42,26 +42,26 @@
 
 	.p2align 4
 #ifdef USE_AS_EXP10L
-	ASM_TYPE_DIRECTIVE(c0,@object)
+	.type c0,@object
 c0:	.byte 0, 0, 0, 0, 0, 0, 0x9a, 0xd4, 0x00, 0x40
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c0)
-	ASM_TYPE_DIRECTIVE(c1,@object)
+	.type c1,@object
 c1:	.byte 0x58, 0x92, 0xfc, 0x15, 0x37, 0x9a, 0x97, 0xf0, 0xef, 0x3f
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c1)
 #else
-	ASM_TYPE_DIRECTIVE(c0,@object)
+	.type c0,@object
 c0:	.byte 0, 0, 0, 0, 0, 0, 0xaa, 0xb8, 0xff, 0x3f
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c0)
-	ASM_TYPE_DIRECTIVE(c1,@object)
+	.type c1,@object
 c1:	.byte 0x20, 0xfa, 0xee, 0xc2, 0x5f, 0x70, 0xa5, 0xec, 0xed, 0x3f
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(c1)
 #endif
 #ifndef USE_AS_EXPM1L
-	ASM_TYPE_DIRECTIVE(csat,@object)
+	.type csat,@object
 csat:	.byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x0e, 0x40
 	.byte 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(csat)
diff --git a/sysdeps/x86_64/fpu/e_log10l.S b/sysdeps/x86_64/fpu/e_log10l.S
index ebc809e831..6c07024c19 100644
--- a/sysdeps/x86_64/fpu/e_log10l.S
+++ b/sysdeps/x86_64/fpu/e_log10l.S
@@ -13,13 +13,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/x86_64/fpu/e_log2l.S b/sysdeps/x86_64/fpu/e_log2l.S
index 140b93d101..956489fc3e 100644
--- a/sysdeps/x86_64/fpu/e_log2l.S
+++ b/sysdeps/x86_64/fpu/e_log2l.S
@@ -12,13 +12,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/x86_64/fpu/e_logl.S b/sysdeps/x86_64/fpu/e_logl.S
index 8876dc2189..a8e31084ba 100644
--- a/sysdeps/x86_64/fpu/e_logl.S
+++ b/sysdeps/x86_64/fpu/e_logl.S
@@ -12,13 +12,13 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
 	/* It is not important that this constant is precise.  It is only
 	   a value which is known to be on the safe side for using the
 	   fyl2xp1 instruction.  */
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
 
diff --git a/sysdeps/x86_64/fpu/e_powl.S b/sysdeps/x86_64/fpu/e_powl.S
index 10ede22648..4fe23c06af 100644
--- a/sysdeps/x86_64/fpu/e_powl.S
+++ b/sysdeps/x86_64/fpu/e_powl.S
@@ -23,34 +23,34 @@
 	.section .rodata.cst8,"aM",@progbits,8
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(one,@object)
+	.type one,@object
 one:	.double 1.0
 	ASM_SIZE_DIRECTIVE(one)
-	ASM_TYPE_DIRECTIVE(limit,@object)
+	.type limit,@object
 limit:	.double 0.29
 	ASM_SIZE_DIRECTIVE(limit)
-	ASM_TYPE_DIRECTIVE(p63,@object)
+	.type p63,@object
 p63:	.byte 0, 0, 0, 0, 0, 0, 0xe0, 0x43
 	ASM_SIZE_DIRECTIVE(p63)
-	ASM_TYPE_DIRECTIVE(p64,@object)
+	.type p64,@object
 p64:	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43
 	ASM_SIZE_DIRECTIVE(p64)
-	ASM_TYPE_DIRECTIVE(p78,@object)
+	.type p78,@object
 p78:	.byte 0, 0, 0, 0, 0, 0, 0xd0, 0x44
 	ASM_SIZE_DIRECTIVE(p78)
 
 	.section .rodata.cst16,"aM",@progbits,16
 
 	.p2align 3
-	ASM_TYPE_DIRECTIVE(infinity,@object)
+	.type infinity,@object
 inf_zero:
 infinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f
 	ASM_SIZE_DIRECTIVE(infinity)
-	ASM_TYPE_DIRECTIVE(zero,@object)
+	.type zero,@object
 zero:	.double 0.0
 	ASM_SIZE_DIRECTIVE(zero)
-	ASM_TYPE_DIRECTIVE(minf_mzero,@object)
+	.type minf_mzero,@object
 minf_mzero:
 minfinity:
 	.byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff
diff --git a/sysdeps/x86_64/fpu/e_scalbl.S b/sysdeps/x86_64/fpu/e_scalbl.S
index 8394310c97..c422d53b1c 100644
--- a/sysdeps/x86_64/fpu/e_scalbl.S
+++ b/sysdeps/x86_64/fpu/e_scalbl.S
@@ -13,7 +13,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(zero_nan,@object)
+	.type zero_nan,@object
 zero_nan:
 	.double 0.0
 nan:	.byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f
diff --git a/sysdeps/x86_64/fpu/s_copysign.S b/sysdeps/x86_64/fpu/s_copysign.S
index d96c3bd959..07ca075843 100644
--- a/sysdeps/x86_64/fpu/s_copysign.S
+++ b/sysdeps/x86_64/fpu/s_copysign.S
@@ -22,12 +22,12 @@
 	.section .rodata.cst16,"aM",@progbits,16
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(signmask,@object)
+	.type signmask,@object
 signmask:
 	.byte 0, 0, 0, 0, 0, 0, 0, 0x80
 	.byte 0, 0, 0, 0, 0, 0, 0, 0
 	ASM_SIZE_DIRECTIVE(signmask)
-	ASM_TYPE_DIRECTIVE(othermask,@object)
+	.type othermask,@object
 othermask:
 	.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
 	.byte 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/sysdeps/x86_64/fpu/s_copysignf.S b/sysdeps/x86_64/fpu/s_copysignf.S
index 9dd3101c25..99c16e080e 100644
--- a/sysdeps/x86_64/fpu/s_copysignf.S
+++ b/sysdeps/x86_64/fpu/s_copysignf.S
@@ -22,7 +22,7 @@
 	.section .rodata
 
 	.align ALIGNARG(4)
-	ASM_TYPE_DIRECTIVE(mask,@object)
+	.type mask,@object
 mask:
 	.byte 0xff, 0xff, 0xff, 0x7f
 	ASM_SIZE_DIRECTIVE(mask)
diff --git a/sysdeps/x86_64/strtok.S b/sysdeps/x86_64/strtok.S
index fe4a9475b3..4028a47f24 100644
--- a/sysdeps/x86_64/strtok.S
+++ b/sysdeps/x86_64/strtok.S
@@ -44,7 +44,7 @@
 #else
 	.bss
 	.local save_ptr
-	ASM_TYPE_DIRECTIVE (save_ptr, @object)
+	.type save_ptr, @object
 	.size save_ptr, LP_SIZE
 save_ptr:
 	.space LP_SIZE
diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h
index 258781d096..41c3eb2d31 100644
--- a/sysdeps/x86_64/sysdep.h
+++ b/sysdeps/x86_64/sysdep.h
@@ -27,15 +27,13 @@
 
 /* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
 #define ALIGNARG(log2) 1<<log2
-/* For ELF we need the `.type' directive to make shared libs work right.  */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg;
 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name;
 
 
 /* Define an entry point visible from C.  */
 #define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);				      \
-  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function)			      \
+  .globl C_SYMBOL_NAME(name);						      \
+  .type C_SYMBOL_NAME(name),@function;					      \
   .align ALIGNARG(4);							      \
   C_LABEL(name)								      \
   cfi_startproc;							      \