This is the mail archive of the binutils@sourceware.org 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]

[1/21] Fix handling of archive tests


I was using run_ld_link_tests to create an archive and noticed that
it ran both ar _and_ ld.  It runs ld first, so everything works out
OK in the end, but it's easy to fix.

I would have applied that bit as obvious.  However, I also wanted
to be able to pass specific flags to "ar".  The "ld_options" field is
currently unused for ar tests, so it seemed natural to overload that.
AFAICT, no existing ar tests currently set this field to a nonempty string.

OK to install?

Richard


ld/testsuite/
	* lib/ld-lib.exp (ar_simple_create): Add an "aropts" parameter.
	(run_ld_link_tests): Treat the second list element as "ar" options
	when creating an archive.  Don't run the linker in this case.
	(run_cc_link_tests): Likewise.

Index: ld/testsuite/lib/ld-lib.exp
===================================================================
--- ld/testsuite/lib/ld-lib.exp	2009-03-10 13:40:02.000000000 +0000
+++ ld/testsuite/lib/ld-lib.exp	2009-03-10 13:42:09.000000000 +0000
@@ -1095,10 +1095,10 @@ proc file_contents { filename } {
 
 # Create an archive using ar
 #
-proc ar_simple_create { ar target objects } {
+proc ar_simple_create { ar aropts target objects } {
     remote_file host delete $target
 
-    set exec_output [run_host_cmd "$ar" "rc $target $objects"]
+    set exec_output [run_host_cmd "$ar" "$aropts rc $target $objects"]
     set exec_output [prune_warnings $exec_output]
 
     if [string match "" $exec_output] then {
@@ -1111,7 +1111,7 @@ proc ar_simple_create { ar target object
 
 # List contains test-items with 3 items followed by 2 lists, one item and
 # one optional item:
-# 0:name 1:ld options 2:assembler options
+# 0:name 1:ld/ar options 2:assembler options
 # 3:filenames of assembler files 4: action and options. 5: name of output file
 # 6:compiler flags (optional)
 #
@@ -1178,14 +1178,14 @@ proc run_ld_link_tests { ldtests } {
 	    continue
 	}
 
-	if [regexp ".*a$" $binfile] then {
-	    if ![ar_simple_create $ar $binfile "$objfiles"] {
+	if { [regexp ".*a$" $binfile] } {
+	    if { ![ar_simple_create $ar $ld_options $binfile "$objfiles"] } {
 		fail $testname
 		set failed 1
 	    } else {
 		set failed 0
 	    }
-	} elseif ![ld_simple_link $ld $binfile "-L$srcdir/$subdir $ld_options $objfiles"] {
+	} elseif { ![ld_simple_link $ld $binfile "-L$srcdir/$subdir $ld_options $objfiles"] } {
 	    fail $testname
 	    set failed 1
 	} else {
@@ -1434,7 +1434,7 @@ proc run_ld_link_exec_tests { targets_to
 # List contains test-items with 3 items followed by 2 lists, one item and
 # one optional item:
 #  0:name
-#  1:link options
+#  1:ld or ar options
 #  2:compile options
 #  3:filenames of source files
 #  4:action and options.
@@ -1495,14 +1495,14 @@ proc run_cc_link_tests { ldtests } {
 	    set cc_cmd $CC
 	}
 
-	if [regexp ".*a$" $binfile] then {
-	    if ![ar_simple_create $ar $binfile "$objfiles"] {
+	if { [regexp ".*a$" $binfile] } {
+	    if { ![ar_simple_create $ar $ldflags $binfile "$objfiles"] } {
 		fail $testname
 		set failed 1
 	    } else {
 		set failed 0
 	    }
-	} elseif ![ld_simple_link $cc_cmd $binfile "-L$srcdir/$subdir $ldflags $objfiles"] {
+	} elseif { ![ld_simple_link $cc_cmd $binfile "-L$srcdir/$subdir $ldflags $objfiles"] } {
 	    fail $testname
 	    set failed 1
 	} else {


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