This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[patch] Testcase for weak/strong symbols
- From: Paul Brook <paul at codesourcery dot com>
- To: binutils at sources dot redhat dot com
- Date: Wed, 4 May 2005 14:22:56 +0100
- Subject: [patch] Testcase for weak/strong symbols
The attached patch adds a test to check that the size of a non-weak symbol is
not overridded by later weak definitions.
It also fixes a test harness bug. If the last line of a .d file is "#...", it
is equivalent to "#pass".
Tested on i686-linux.
Ok?
Paul
2005-05-04 Paul Brook <paul@codesourcery.com>
gas/testsuite/
* lib/gas-defs.exp (regexp_diff): Pass test if last line is "#...".
ld/testsuite/
* lib/ld-lib.exp (regexp_diff): Pass test if last line is "#...".
* ld-elfweak/elfweak.exp: Run size2.d.
* ld-elfwaek/size2.d: New file.
* ld-elfwaek/size2a.s: New file.
* ld-elfwaek/size2b.s: New file.
Index: gas/testsuite/lib/gas-defs.exp
===================================================================
RCS file: /var/cvsroot/src-cvs/src/gas/testsuite/lib/gas-defs.exp,v
retrieving revision 1.20
diff -u -p -r1.20 gas-defs.exp
--- gas/testsuite/lib/gas-defs.exp 21 Feb 2005 10:07:08 -0000 1.20
+++ gas/testsuite/lib/gas-defs.exp 4 May 2005 13:10:54 -0000
@@ -663,6 +663,7 @@ proc regexp_diff { file_1 file_2 } {
} elseif [ string match "#..." $line_b ] {
if { [gets $file_b line_b] == $eof } {
set end_2 1
+ set diff_pass 1
break
}
verbose "looking for \"^$line_b$\"" 3
Index: ld/testsuite/ld-elfweak/elfweak.exp
===================================================================
RCS file: /var/cvsroot/src-cvs/src/ld/testsuite/ld-elfweak/elfweak.exp,v
retrieving revision 1.10
diff -u -p -r1.10 elfweak.exp
--- ld/testsuite/ld-elfweak/elfweak.exp 3 Mar 2005 11:52:08 -0000 1.10
+++ ld/testsuite/ld-elfweak/elfweak.exp 4 May 2005 12:42:59 -0000
@@ -493,3 +493,6 @@ if ![ld_compile "$CC $CFLAGS" $srcdir/$s
}
build_exec "ELF weak size" size_main "size_main.o libsize_foo.so libsize_bar.so" "-Wl,-rpath,." size "" ""
+
+verbose "size2"
+run_dump_test $srcdir/$subdir/size2
Index: ld/testsuite/ld-elfweak/size2.d
===================================================================
RCS file: ld/testsuite/ld-elfweak/size2.d
diff -N ld/testsuite/ld-elfweak/size2.d
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-elfweak/size2.d 4 May 2005 12:59:28 -0000
@@ -0,0 +1,8 @@
+#source: size2a.s
+#source: size2b.s
+#ld:
+#readelf: -s
+Symbol table '.symtab' contains .* entries:
+#...
+ .*: [0-9a-f]* *1 *FUNC *GLOBAL *DEFAULT *[0-9] *_start
+#...
Index: ld/testsuite/ld-elfweak/size2a.s
===================================================================
RCS file: ld/testsuite/ld-elfweak/size2a.s
diff -N ld/testsuite/ld-elfweak/size2a.s
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-elfweak/size2a.s 4 May 2005 12:50:23 -0000
@@ -0,0 +1,6 @@
+ .text
+ .global _start
+ .type _start, "function"
+_start:
+ .byte 0
+ .size _start, 1
Index: ld/testsuite/ld-elfweak/size2b.s
===================================================================
RCS file: ld/testsuite/ld-elfweak/size2b.s
diff -N ld/testsuite/ld-elfweak/size2b.s
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ld/testsuite/ld-elfweak/size2b.s 4 May 2005 12:36:41 -0000
@@ -0,0 +1,7 @@
+ .text
+ .weak _start
+ .type _start, "function"
+_start:
+ .byte 0
+ .byte 0
+ .size _start, 2
Index: ld/testsuite/lib/ld-lib.exp
===================================================================
RCS file: /var/cvsroot/src-cvs/src/ld/testsuite/lib/ld-lib.exp,v
retrieving revision 1.31
diff -u -p -r1.31 ld-lib.exp
--- ld/testsuite/lib/ld-lib.exp 21 Feb 2005 10:30:49 -0000 1.31
+++ ld/testsuite/lib/ld-lib.exp 4 May 2005 13:03:25 -0000
@@ -1029,6 +1029,7 @@ proc regexp_diff { file_1 file_2 } {
} elseif [ string match "#..." $line_b ] {
if { [gets $file_b line_b] == $eof } {
set end_2 1
+ set diff_pass 1
break
}
verbose "looking for \"^$line_b$\"" 3