This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]