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