Binutils is broken by the linker change

H. J. Lu hjl@lucon.org
Fri Mar 19 11:08:00 GMT 2004


On Fri, Mar 19, 2004 at 11:17:51AM +1030, Alan Modra wrote:
> On Thu, Mar 18, 2004 at 03:56:31PM -0800, H. J. Lu wrote:
> > On Fri, Mar 19, 2004 at 09:57:20AM +1030, Alan Modra wrote:
> > > Please, please, add this testcase to the ld testsuite!  With weak and
> > > strong foo returning different values or somesuch so you can check
> > > which one is called..
> > 
> > I will add it.
> 
> Thanks!
> 

Here is the patch for new tests.

BTW, have you looked at the new -z defs patch:

http://sources.redhat.com/ml/binutils/2004-03/msg00361.html


H.J.
-------------- next part --------------
2004-03-18  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-elfvers/vers.exp: Add new tests for versioned weak
	definition. 

	* ld-elfvers/vers28a.c: New file.
	* ld-elfvers/vers28a.dsym: Likewise.
	* ld-elfvers/vers28a.ver: Likewise.
	* ld-elfvers/vers28b.c: Likewise.
	* ld-elfvers/vers28b.dsym: Likewise.
	* ld-elfvers/vers28b.map: Likewise.
	* ld-elfvers/vers28b.ver: Likewise.
	* ld-elfvers/vers28c.c: Likewise.
	* ld-elfvers/vers28c.dsym: Likewise.
	* ld-elfvers/vers28c.ver: Likewise.

--- ld/testsuite/ld-elfvers/vers.exp.weak	2003-10-24 08:57:49.000000000 -0700
+++ ld/testsuite/ld-elfvers/vers.exp	2004-03-18 18:16:37.000000000 -0800
@@ -938,3 +938,9 @@ build_vers_lib_pic "vers27d2" vers27d2.c
 build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym ""
 build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym ""
 build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym ""
+
+# Test weak versioned definition vs. strong definition in different
+# files.
+build_vers_lib_pic "vers28a" vers28a.c vers28a "" "" vers28a.ver vers28a.dsym ""
+build_vers_lib_pic "vers28b" vers28b.c vers28b "" vers28b.map vers28b.ver vers28b.dsym ""
+build_vers_lib_pic "vers28c" vers28c.c vers28c "vers28b.so vers28a.so" "" vers28c.ver vers28c.dsym ""
--- ld/testsuite/ld-elfvers/vers28a.c.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28a.c	2004-03-18 17:32:39.000000000 -0800
@@ -0,0 +1 @@
+void foo () {}
--- ld/testsuite/ld-elfvers/vers28a.dsym.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28a.dsym	2004-03-18 17:44:40.000000000 -0800
@@ -0,0 +1 @@
+# Empty file
--- ld/testsuite/ld-elfvers/vers28a.ver.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28a.ver	2004-03-18 17:49:52.000000000 -0800
@@ -0,0 +1 @@
+# Empty file
--- ld/testsuite/ld-elfvers/vers28b.c.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28b.c	2004-03-18 17:33:18.000000000 -0800
@@ -0,0 +1,3 @@
+#pragma weak foo
+
+void foo () {}
--- ld/testsuite/ld-elfvers/vers28b.dsym.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28b.dsym	2004-03-18 18:08:09.000000000 -0800
@@ -0,0 +1,2 @@
+[0]*[ 	]+g[ 	]+DO[ 	]+\*ABS\*[ 	]+[0]*[ 	]+VERS.0[ 	]+VERS.0
+[0-9a-f]*[ 	]+w[ 	]+DF[ 	]+.text[	]+[0-9a-f]*[ 	]+VERS.0[ 	]+(0x[0-9a-f]*|)[ 	]*foo
--- ld/testsuite/ld-elfvers/vers28b.map.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28b.map	2004-03-18 17:51:46.000000000 -0800
@@ -0,0 +1,5 @@
+VERS.0 {
+  global:
+    foo;
+  local: *;
+};
--- ld/testsuite/ld-elfvers/vers28b.ver.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28b.ver	2004-03-18 17:55:24.000000000 -0800
@@ -0,0 +1,4 @@
+Version definitions:
+1 0x01 0x0659990f vers28b.so
+2 0x00 0x05aa7610 VERS.0
+
--- ld/testsuite/ld-elfvers/vers28c.c.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28c.c	2004-03-18 18:11:32.000000000 -0800
@@ -0,0 +1,7 @@
+extern void foo ();
+
+void
+bar ()
+{
+  foo ();
+}
--- ld/testsuite/ld-elfvers/vers28c.dsym.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28c.dsym	2004-03-18 18:18:06.000000000 -0800
@@ -0,0 +1 @@
+[0-9a-f]*[ 	]+DF[ 	]+\*UND\*[	]+[0-9a-f]*[ 	]+VERS.0[ 	]+(0x[0-9a-f]*|)[ 	]*foo
--- ld/testsuite/ld-elfvers/vers28c.ver.weak	2004-03-18 18:18:46.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers28c.ver	2004-03-18 18:15:48.000000000 -0800
@@ -0,0 +1,4 @@
+Version References:
+  required from tmpdir/vers28b.so:
+    0x05aa7610 0x00 02 VERS.0
+


More information about the Binutils mailing list