Symbol redefinition bugs
Jeff Bailey
jbailey@raspberryginger.com
Sun Nov 20 12:46:00 GMT 2005
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)
More information about the Libc-hacker
mailing list