This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[1/21] Fix handling of archive tests
- From: Richard Sandiford <richards at transitive dot com>
- To: binutils at sourceware dot org
- Date: Tue, 10 Mar 2009 14:00:16 +0000
- Subject: [1/21] Fix handling of archive tests
- References: <g4y6vd7a4x.fsf@richards-desktop.transitives.com>
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 {