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

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

Re: Symbol redefinition bugs


On ven, 2005-11-18 at 20:19 +0100, Andreas Schwab wrote:
> The current binutils revealed some symbol redefinition bugs in the
> ppc/ppc64 port.
> 
> Andreas.
> 
> 2005-11-18  Andreas Schwab  <schwab@suse.de>
> 
> 	* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Remove useless alias.
> 
> 	* sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: Handle
> 	NO_WEAK_ALIAS.
> 	* sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S: Likewise.

Done this way, readelf -a showed that the various symbols went from being
WEAK to being GLOBAL.  I've been testing the following patch instead for
upload to Ubuntu.  (identical readelf -a output on ppc; .free, .realloc
and .malloc are GLOBAL instead of WEAK on ppc64 and I don't know why yet)

2005-11-17  Jeff Bailey  <jbailey@ubuntu.com>

	* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Extra strong_alias
          confuses new binutils

	* sysdeps/unix/sysv/linux/bind.S: bind should be the alias,
          not __bind.

	* sysdeps/unix/sysv/linux/getsockname.S: getsockname should
          be the alias, not __getsockname.

	* sysdeps/unix/sysv/linux/listen.S: listen should be the alias,
          not __listen.

	* sysdeps/unix/sysv/linux/setsockopt.S: setsockopt should
          be the alias, not __setsockopt.

	* sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: Don't
	  set weak_alias if NO_WEAK_ALIAS is set.


diff -ru build-tree/glibc-2.3.5/sysdeps/powerpc/powerpc32/fpu/s_lround.S glibc-2.3.5/sysdeps/powerpc/powerpc32/fpu/s_lround.S
--- sysdeps/powerpc/powerpc32/fpu/s_lround.S    2004-06-30 18:29:12.000000000 -0400
+++ powerpc/powerpc32/fpu/s_lround.S    2005-11-17 18:35:46.000000000 -0500
@@ -88,7 +88,6 @@
        b       .L9
        END (__lround)

-strong_alias (__lround, __lround)
 weak_alias (__lround, lround)

 strong_alias (__lround, __lroundf)
diff -ru build-tree/glibc-2.3.5/sysdeps/unix/sysv/linux/bind.S glibc-2.3.5/sysdeps/unix/sysv/linux/bind.S
--- sysdeps/unix/sysv/linux/bind.S      2002-05-14 20:17:25.000000000 -0400
+++ sysdeps/unix/sysv/linux/bind.S      2005-11-17 20:21:57.000000000 -0500
@@ -2,4 +2,4 @@
 #define        NARGS   3
 #define NO_WEAK_ALIAS  1
 #include <socket.S>
-weak_alias (bind, __bind)
+weak_alias (__bind, bind)
diff -ru build-tree/glibc-2.3.5/sysdeps/unix/sysv/linux/getsockname.S glibc-2.3.5/sysdeps/unix/sysv/linux/getsockname.S
--- sysdeps/unix/sysv/linux/getsockname.S       2002-05-14 20:17:58.000000000 -0400
+++ sysdeps/unix/sysv/linux/getsockname.S       2005-11-17 20:34:14.000000000 -0500
@@ -2,4 +2,4 @@
 #define        NARGS   3
 #define NO_WEAK_ALIAS  1
 #include <socket.S>
-weak_alias (getsockname, __getsockname)
+weak_alias (__getsockname, getsockname)
diff -ru build-tree/glibc-2.3.5/sysdeps/unix/sysv/linux/listen.S glibc-2.3.5/sysdeps/unix/sysv/linux/listen.S
--- sysdeps/unix/sysv/linux/listen.S    2002-05-14 20:18:37.000000000 -0400
+++ sysdeps/unix/sysv/linux/listen.S    2005-11-17 20:49:01.000000000 -0500
@@ -2,4 +2,4 @@
 #define        NARGS   2
 #define NO_WEAK_ALIAS  1
 #include <socket.S>
-weak_alias (listen, __listen)
+weak_alias (__listen, listen)
diff -ru build-tree/glibc-2.3.5/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S glibc-2.3.5/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S
--- sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S  2003-07-11 18:46:12.000000000 -0400
+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S  2005-11-17 20:29:56.000000000 -0500
@@ -116,4 +116,6 @@

 PSEUDO_END (__socket)

+#ifndef NO_WEAK_ALIAS
 weak_alias (__socket, socket)
+#endif
diff -ru build-tree/glibc-2.3.5/sysdeps/unix/sysv/linux/setsockopt.S glibc-2.3.5/sysdeps/unix/sysv/linux/setsockopt.S
--- sysdeps/unix/sysv/linux/setsockopt.S        2002-05-14 20:19:09.000000000 -0400
+++ sysdeps/unix/sysv/linux/setsockopt.S        2005-11-17 20:49:48.000000000 -0500
@@ -2,4 +2,4 @@
 #define        NARGS   5
 #define NO_WEAK_ALIAS  1
 #include <socket.S>
-weak_alias (setsockopt, __setsockopt)
+weak_alias (__setsockopt, setsockopt)



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