* lib/ld-lib.exp (run_dump_test): Handle new option
"objcopy_linked_file". Return after failing, if errors were expected but none were found. (slurp_options): Support underscores in option names.
This commit is contained in:
parent
7a0c04c188
commit
cfe5266f79
@ -1,3 +1,10 @@
|
||||
2001-09-15 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* lib/ld-lib.exp (run_dump_test): Handle new option
|
||||
"objcopy_linked_file". Return after failing, if errors were
|
||||
expected but none were found.
|
||||
(slurp_options): Support underscores in option names.
|
||||
|
||||
2001-09-14 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* ld-elfweak/bar.c: Updated.
|
||||
|
@ -434,6 +434,12 @@ proc simple_diff { file_1 file_2 } {
|
||||
# Link assembled files using FLAGS, in the order of the "source"
|
||||
# directives, when using multiple files.
|
||||
#
|
||||
# objcopy_linked_file: FLAGS
|
||||
# Run objcopy on the linked file with the specified flags.
|
||||
# This lets you transform the linked file using objcopy, before the
|
||||
# result is analyzed by an analyzer program specified below (which
|
||||
# may in turn *also* be objcopy).
|
||||
#
|
||||
# PROG: PROGRAM-NAME
|
||||
# The name of the program to run to analyze the .o file produced
|
||||
# by the assembler or the linker output. This can be omitted;
|
||||
@ -503,6 +509,7 @@ proc run_dump_test { name } {
|
||||
}
|
||||
set dumpfile tmpdir/dump.out
|
||||
set run_ld 0
|
||||
set run_objcopy 0
|
||||
set opts(as) {}
|
||||
set opts(ld) {}
|
||||
set opts(xfail) {}
|
||||
@ -516,6 +523,7 @@ proc run_dump_test { name } {
|
||||
set opts(PROG) {}
|
||||
set opts(source) {}
|
||||
set opts(error) {}
|
||||
set opts(objcopy_linked_file) {}
|
||||
set asflags{${file}.s} {}
|
||||
|
||||
foreach i $opt_array {
|
||||
@ -552,6 +560,10 @@ proc run_dump_test { name } {
|
||||
if { $opt_name == "ld" } {
|
||||
set run_ld 1
|
||||
}
|
||||
# Likewise objcopy_linked_file.
|
||||
if { $opt_name == "objcopy_linked_file" } {
|
||||
set run_objcopy 1
|
||||
}
|
||||
}
|
||||
}
|
||||
set opts($opt_name) [concat $opts($opt_name) $opt_val]
|
||||
@ -683,7 +695,7 @@ proc run_dump_test { name } {
|
||||
verbose -log "failed with: <$comp_output>, expected: <$opts(error)>"
|
||||
send_log "$comp_output\n"
|
||||
verbose "$comp_output" 3
|
||||
if { $opts(error) != "" } {
|
||||
if { $opts(error) != "" && $run_objcopy == 0 } {
|
||||
if [regexp $opts(error) $comp_output] {
|
||||
pass $testname
|
||||
return
|
||||
@ -692,6 +704,33 @@ proc run_dump_test { name } {
|
||||
fail $testname
|
||||
return
|
||||
}
|
||||
|
||||
if { $run_objcopy } {
|
||||
set infile $objfile
|
||||
set objfile "tmpdir/dump1"
|
||||
|
||||
# Note that we don't use OBJCOPYFLAGS here; any flags must be
|
||||
# explicitly specified.
|
||||
set cmd "$OBJCOPY $opts(objcopy_linked_file) $infile $objfile"
|
||||
|
||||
send_log "$cmd\n"
|
||||
set cmdret [catch "exec $cmd" comp_output]
|
||||
set comp_output [prune_warnings $comp_output]
|
||||
|
||||
if { $cmdret != 0 || ![string match "" $comp_output] } then {
|
||||
verbose -log "failed with: <$comp_output>, expected: <$opts(error)>"
|
||||
send_log "$comp_output\n"
|
||||
verbose "$comp_output" 3
|
||||
if { $opts(error) != "" } {
|
||||
if [regexp $opts(error) $comp_output] {
|
||||
pass $testname
|
||||
return
|
||||
}
|
||||
}
|
||||
fail $testname
|
||||
return
|
||||
}
|
||||
}
|
||||
} else {
|
||||
set objfile "tmpdir/dump0.o"
|
||||
}
|
||||
@ -699,6 +738,7 @@ proc run_dump_test { name } {
|
||||
# We must not have expected failure if we get here.
|
||||
if { $opts(error) != "" } {
|
||||
fail $testname
|
||||
return
|
||||
}
|
||||
|
||||
if { [which $binary] == 0 } {
|
||||
@ -754,8 +794,8 @@ proc slurp_options { file } {
|
||||
set ws {[ ]*}
|
||||
set nws {[^ ]*}
|
||||
# whitespace is ignored anywhere except within the options list;
|
||||
# option names are alphabetic only
|
||||
set pat "^#${ws}(\[a-zA-Z\]*)$ws:${ws}(.*)$ws\$"
|
||||
# option names are alphabetic plus underscore only.
|
||||
set pat "^#${ws}(\[a-zA-Z_\]*)$ws:${ws}(.*)$ws\$"
|
||||
while { [gets $f line] != -1 } {
|
||||
set line [string trim $line]
|
||||
# Whitespace here is space-tab.
|
||||
|
Loading…
Reference in New Issue
Block a user