mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
Add objcopy stage between assembly and linking for run_dump_test
ld/testsuite/ * lib/ld-lib.exp: Add objcopy_objects command to run_dump_test. This allows each input object to be optionally run through objcopy before linking.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2014-05-28 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||||
|
|
||||||
|
* lib/ld-lib.exp: Add objcopy_objects command to run_dump_test.
|
||||||
|
This allows each input object to be optionally run through
|
||||||
|
objcopy before linking.
|
||||||
|
|
||||||
2014-05-20 Will Newton <will.newton@linaro.org>
|
2014-05-20 Will Newton <will.newton@linaro.org>
|
||||||
|
|
||||||
* ld-shared/shared.exp: Mark non-PIC shared object tests
|
* ld-shared/shared.exp: Mark non-PIC shared object tests
|
||||||
|
@ -497,6 +497,11 @@ proc ld_simple_link_defsyms {} {
|
|||||||
# ld_after_inputfiles: FLAGS
|
# ld_after_inputfiles: FLAGS
|
||||||
# Similar to "ld", but put after all input files.
|
# Similar to "ld", but put after all input files.
|
||||||
#
|
#
|
||||||
|
# objcopy_objects: FLAGS
|
||||||
|
# Run objcopy with the specified flags after assembling any source
|
||||||
|
# that has the special marker RUN_OBJCOPY in the source specific
|
||||||
|
# flags.
|
||||||
|
#
|
||||||
# objcopy_linked_file: FLAGS
|
# objcopy_linked_file: FLAGS
|
||||||
# Run objcopy on the linked file with the specified flags.
|
# Run objcopy on the linked file with the specified flags.
|
||||||
# This lets you transform the linked file using objcopy, before the
|
# This lets you transform the linked file using objcopy, before the
|
||||||
@ -605,6 +610,7 @@ proc run_dump_test { name {extra_options {}} } {
|
|||||||
set opts(error) {}
|
set opts(error) {}
|
||||||
set opts(warning) {}
|
set opts(warning) {}
|
||||||
set opts(objcopy_linked_file) {}
|
set opts(objcopy_linked_file) {}
|
||||||
|
set opts(objcopy_objects) {}
|
||||||
|
|
||||||
foreach i $opt_array {
|
foreach i $opt_array {
|
||||||
set opt_name [lindex $i 0]
|
set opt_name [lindex $i 0]
|
||||||
@ -784,6 +790,12 @@ proc run_dump_test { name {extra_options {}} } {
|
|||||||
for { set i 0 } { $i < [llength $sourcefiles] } { incr i } {
|
for { set i 0 } { $i < [llength $sourcefiles] } { incr i } {
|
||||||
set sourcefile [lindex $sourcefiles $i]
|
set sourcefile [lindex $sourcefiles $i]
|
||||||
set sourceasflags [lindex $asflags $i]
|
set sourceasflags [lindex $asflags $i]
|
||||||
|
set run_objcopy_objects 0
|
||||||
|
|
||||||
|
if { [string match "*RUN_OBJCOPY*" $sourceasflags] } {
|
||||||
|
set run_objcopy_objects 1
|
||||||
|
}
|
||||||
|
regsub "RUN_OBJCOPY" $sourceasflags "" sourceasflags
|
||||||
|
|
||||||
set objfile "tmpdir/dump$i.o"
|
set objfile "tmpdir/dump$i.o"
|
||||||
catch "exec rm -f $objfile" exec_output
|
catch "exec rm -f $objfile" exec_output
|
||||||
@ -807,6 +819,30 @@ proc run_dump_test { name {extra_options {}} } {
|
|||||||
fail $testname
|
fail $testname
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if { $run_objcopy_objects } {
|
||||||
|
set cmd "$OBJCOPY $opts(objcopy_objects) $objfile"
|
||||||
|
|
||||||
|
send_log "$cmd\n"
|
||||||
|
set cmdret [remote_exec host [concat sh -c [list "$cmd 2>&1"]] \
|
||||||
|
"" "/dev/null" "objcopy.tmp"]
|
||||||
|
remote_upload host "objcopy.tmp"
|
||||||
|
set comp_output [prune_warnings [file_contents "objcopy.tmp"]]
|
||||||
|
remote_file host delete "objcopy.tmp"
|
||||||
|
remote_file build delete "objcopy.tmp"
|
||||||
|
|
||||||
|
if { [lindex $cmdret 0] != 0 \
|
||||||
|
|| ![string match "" $comp_output] } {
|
||||||
|
send_log "$comp_output\n"
|
||||||
|
verbose "$comp_output" 3
|
||||||
|
|
||||||
|
set exitstat "succeeded"
|
||||||
|
if { $cmdret != 0 } { set exitstat "failed" }
|
||||||
|
verbose -log "$exitstat with: <$comp_output>"
|
||||||
|
fail $testname
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set expmsg $opts(error)
|
set expmsg $opts(error)
|
||||||
|
Reference in New Issue
Block a user