PATCH: A testcase for ld bug with symbol versioning

H. J. Lu hjl@lucon.org
Wed Apr 23 15:52:00 GMT 2003


On Tue, Apr 22, 2003 at 11:04:09PM -0700, H. J. Lu wrote:
> On Tue, Apr 22, 2003 at 10:29:17PM -0700, Roland McGrath wrote:
> > > On Tue, Apr 22, 2003 at 05:03:55PM -0700, Roland McGrath wrote:
> > > > Actually removing all the weakness doesn't affect this test case.
> > > > I think this bug just has to do with symbol versioning.
> > > 
> > > The subject is misleading. The bug is not elf32-ppc specific. I will
> > > look into it.
> > 
> > I cannot reproduce it on elf32-i386 (i686-linux).
> 
> I can reproduce it on i686-linux with a even smaller testcase. The
> error message is kind of bogus.
> 
> 

This is the testcase I will check in shortly.


H.J.
-------------- next part --------------
2003-04-23  H.J. Lu <hjl@gnu.org>

	* ld-elfvers/vers.exp (objdump_dynsymstuff): Support empty
	files.
	(objdump_versionstuff): Likewise.
	Add tests vers25a, vers25b1 and vers25b2 for versioned
	definition vs. normal definition in different files.

	* ld-elfvers/vers25a.c: New file.
	* ld-elfvers/vers25a.dsym: Likewise.
	* ld-elfvers/vers25a.map: Likewise.
	* ld-elfvers/vers25a.ver: Likewise.

	* ld-elfvers/vers25b.c: New empty file.
	* ld-elfvers/vers25b.dsym: Likewise.
	* ld-elfvers/vers25b.ver: Likewise.

--- ld/testsuite/ld-elfvers/vers.exp.ind	2003-02-13 14:14:11.000000000 -0800
+++ ld/testsuite/ld-elfvers/vers.exp	2003-04-23 08:43:35.000000000 -0700
@@ -351,6 +351,11 @@ proc objdump_dynsymstuff { objdump objec
 	}
 	close $file_b
 	
+	# Support empty files.
+	if { ![info exists list_a] && ![info exists list_b] } then {
+	    return 1
+	}
+
 	for { set i 0 } { $i < [llength $list_b] } { incr i } {
 	    set line_b [lindex $list_b $i]
 	    
@@ -446,6 +451,11 @@ proc objdump_versionstuff { objdump obje
 	close $f1
 	close $f2
 
+	# Support empty expected file.
+	if [string match "" $l2] then {
+	    return 1
+	}
+
 	verbose -log "Did not find \"$l2\""
 	set f1 [open $tmpdir/objdump.out r]
 	while { [gets $f1 l1] != -1 } {
@@ -863,3 +873,8 @@ run_ld_link_tests [list "\"vers24c\"
 			 \"-shared --version-script $srcdir/$subdir/vers24.map\"
 			 \"$as_pic_flags\" {vers24c.c} { { readelf -Wrs vers24.rd } }
 			 \"libvers24c.so\" \"-fpic\""]
+
+# Test versioned definition vs. normal definition in different files.
+build_vers_lib "vers25a" vers25a.c vers25a "" vers25a.map vers25a.ver vers25a.dsym ""
+build_vers_lib "vers25b1" vers25b.c vers25b1 "vers25a.o vers25a.so" "" vers25b.ver vers25b.dsym ""
+build_vers_lib "vers25b2" vers25b.c vers25b2 "vers25a.so vers25a.o" "" vers25b.ver vers25b.dsym ""
--- ld/testsuite/ld-elfvers/vers25a.c.ind	2003-04-23 08:37:10.000000000 -0700
+++ ld/testsuite/ld-elfvers/vers25a.c	2003-04-23 07:42:35.000000000 -0700
@@ -0,0 +1 @@
+void foo () {}
--- ld/testsuite/ld-elfvers/vers25a.dsym.ind	2003-04-23 08:37:10.000000000 -0700
+++ ld/testsuite/ld-elfvers/vers25a.dsym	2003-04-23 07:48:27.000000000 -0700
@@ -0,0 +1,2 @@
+[0]*[ 	]+g[ 	]+DO[ 	]+\*ABS\*[ 	]+[0]*[ 	]+VERS.0[ 	]+VERS.0
+[0-9a-f]*[ 	]+g[ 	]+DF[ 	]+.text[	]+[0-9a-f]*[ 	]+VERS.0[ 	]+(0x[0-9a-f]*|)[ 	]*foo
--- ld/testsuite/ld-elfvers/vers25a.map.ind	2003-04-23 08:37:10.000000000 -0700
+++ ld/testsuite/ld-elfvers/vers25a.map	2003-04-23 07:45:42.000000000 -0700
@@ -0,0 +1,5 @@
+VERS.0 {
+  global:
+    foo;
+  local: *;
+};
--- ld/testsuite/ld-elfvers/vers25a.ver.ind	2003-04-23 08:37:10.000000000 -0700
+++ ld/testsuite/ld-elfvers/vers25a.ver	2003-04-23 07:47:17.000000000 -0700
@@ -0,0 +1,4 @@
+Version definitions:
+1 0x01 0x065d090f vers25a.so
+2 0x00 0x05aa7610 VERS.0
+


More information about the Binutils mailing list