*** empty log message ***
[deliverable/binutils-gdb.git] / binutils / testsuite / binutils-all / objcopy.exp
CommitLineData
aef6203b
AM
1# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2# 2004
8c2bc687 3# Free Software Foundation, Inc.
252b5132
RH
4
5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 2 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
b43b5d5f 17# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
252b5132
RH
18
19# Please email any bugs, comments, and/or additions to this file to:
20# bug-dejagnu@prep.ai.mit.edu
21
22# Written by Ian Lance Taylor <ian@cygnus.com>
23
24if ![is_remote host] {
25 if {[which $OBJCOPY] == 0} then {
26 perror "$OBJCOPY does not exist"
27 return
28 }
29}
30
31send_user "Version [binutil_version $OBJCOPY]"
32
252b5132 33if ![is_remote host] {
8d263650
BE
34 set tempfile tmpdir/bintest.o
35 set copyfile tmpdir/copy
252b5132
RH
36} else {
37 set tempfile [remote_download host tmpdir/bintest.o]
38 set copyfile copy
39}
40
41# Test that objcopy does not modify a file when copying it.
42
64bb95af
L
43proc objcopy_test {testname srcfile} {
44 global OBJCOPY
45 global OBJCOPYFLAGS
46 global srcdir
47 global subdir
48 global tempfile
49 global copyfile
252b5132 50
64bb95af
L
51 if {![binutils_assemble $srcdir/$subdir/${srcfile} tmpdir/bintest.o]} then {
52 perror "unresolved $testname"
53 unresolved "objcopy ($testname)"
54 return
252b5132 55 }
252b5132 56
64bb95af
L
57 set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS $tempfile ${copyfile}.o"]
58
59 if ![string match "" $got] then {
60 fail "objcopy ($testname)"
252b5132 61 } else {
64bb95af
L
62 send_log "cmp $tempfile ${copyfile}.o\n"
63 verbose "cmp $tempfile ${copyfile}.o"
64 if [is_remote host] {
65 set src1 tmpdir/bintest.o
66 set src2 tmpdir/copy.o
67 remote_upload host $tempfile $src1
68 remote_upload host ${copyfile}.o $src2
69 } else {
70 set src1 ${tempfile}
71 set src2 ${copyfile}.o
72 }
73 set status [remote_exec build cmp "${src1} ${src2}"]
74 set exec_output [lindex $status 1]
75 set exec_output [prune_warnings $exec_output]
76
77 # On some systems the result of objcopy will not be identical.
78 # Usually this is just because gas isn't using bfd to write the
79 # files in the first place, and may order things a little
80 # differently. Those systems should use setup_xfail here.
81
82 setup_xfail "h8300-*-rtems*" "h8300-*-coff"
83 setup_xfail "h8500-*-rtems*" "h8500-*-coff"
84 setup_xfail "hppa*-*-*"
85 setup_xfail "i960-*"
86 setup_xfail "m68*-*-*coff" "m68*-*-hpux*" "m68*-*-lynxos*"
87 setup_xfail "m68*-*-sysv*" "m68*-apple-aux*"
88 setup_xfail "m8*-*"
89 setup_xfail "or32-*-rtems*" "or32-*-coff"
90 setup_xfail "sh-*-coff*" "sh-*-rtems*"
91 setup_xfail "tic4x-*-*" "tic80-*-*" "w65-*"
92
93 clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
94 clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*"
95 clear_xfail "m68*-*-sysv4*"
96
97 if [string match "" $exec_output] then {
98 pass "objcopy ($testname)"
99 } else {
100 send_log "$exec_output\n"
101 verbose "$exec_output" 1
252b5132 102
64bb95af
L
103 # On OSF/1, this succeeds with gas and fails with /bin/as.
104 setup_xfail "alpha*-*-osf*"
252b5132 105
64bb95af
L
106 # This fails for COFF i960-vxworks targets.
107 setup_xfail "i960-*-vxworks*"
252b5132 108
64bb95af
L
109 fail "objcopy ($testname)"
110 }
252b5132
RH
111 }
112}
113
64bb95af
L
114objcopy_test "simple copy" bintest.s
115
252b5132
RH
116# Test generating S records.
117
118# We make the srec filename 8.3 compatible. Note that the header string
119# matched against depends on the name of the file. Ugh.
120
121if [is_remote host] {
122 set srecfile copy.sre
123 set header_string S00B0000636F70792E737265C1
124} else {
125 set srecfile ${copyfile}.srec
126 set header_string S0130000746D706469722F636F70792E7372656397
127}
128
129set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec $tempfile ${srecfile}"]
130
131if ![string match "" $got] then {
132 fail "objcopy -O srec"
133} else {
134 if [is_remote host] {
8d263650
BE
135 remote_upload host ${srecfile} tmpdir/copy.srec
136 set srecfile tmpdir/copy.srec
252b5132
RH
137 }
138 set file [open ${srecfile} r]
139
140 # The first S record is fixed by the file name we are using.
141 gets $file line
142 send_log "$line\n"
143 verbose $line
144 if ![regexp "$header_string.*" $line] {
145 send_log "bad header\n"
146 fail "objcopy -O srec"
147 } else {
148 while {[gets $file line] != -1 \
149 && [regexp "^S\[123\]\[0-9a-fA-F\]+\[\r\n\]*$" $line]} {
150 send_log "$line\n"
151 verbose $line
152 set line "**EOF**"
153 }
154 send_log "$line\n"
155 verbose $line
156 if ![regexp "^S\[789\]\[0-9a-fA-F\]+\[\r\n\]*$" $line] then {
157 send_log "bad trailer\n"
158 fail "objcopy -O srec"
159 } else {
160 if {[gets $file line] != -1} then {
161 send_log "garbage at end\n"
162 send_log "$line\n"
163 verbose $line
164 fail "objcopy -O srec"
165 } else {
166 set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f ${copyfile}.srec"]
167 if ![regexp "file format srec" $got] then {
168 send_log "objdump failed\n"
169 fail "objcopy -O srec"
170 } else {
171 pass "objcopy -O srec"
172 }
173 }
174 }
175 }
176
177 close $file
178}
179
180# Test setting and adjusting the start address. We only test this
181# while generating S records, because we may not be able to set the
182# start address for other object file formats, and the S record case
183# is the only useful one anyhow.
184
185set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f $tempfile"]
186if ![regexp "start address (\[0-9a-fA-FxX\]+)" $got all origstart] then {
187 perror "objdump can not recognize bintest.o"
188 set origstart ""
189} else {
627fe3fb 190 set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec --set-start 0x7654 $tempfile ${copyfile}.srec"]
252b5132
RH
191 if ![string match "" $got] then {
192 fail "objcopy --set-start"
193 } else {
194 set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f ${copyfile}.srec"]
195 if ![regexp "file format srec.*start address (\[0-9a-fA-FxX\]+)" $got all srecstart] then {
196 fail "objcopy --set-start"
197 } else {
198 if {$srecstart != 0x7654} then {
199 send_log "$srecstart != 0x7654\n"
200 fail "objcopy --set-start"
201 } else {
202 pass "objcopy --set-start"
203 }
204 }
205 }
206
627fe3fb 207 set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec --adjust-start 0x123 $tempfile ${copyfile}.srec"]
252b5132
RH
208 if ![string match "" $got] then {
209 fail "objcopy --adjust-start"
210 } else {
211 set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f ${copyfile}.srec"]
212 if ![regexp "file format srec.*start address (\[0-9a-fA-FxX\]+)" $got all srecstart] then {
213 fail "objcopy --adjust-start"
214 } else {
215 if {$srecstart != $origstart + 0x123} then {
216 send_log "$srecstart != $origstart + 0x123\n"
217 fail "objcopy --adjust-start"
218 } else {
219 pass "objcopy --adjust-start"
220 }
221 }
222 }
223}
224
225# Test adjusting the overall VMA, and adjusting the VMA of a
226# particular section. We again only test this when generating S
227# records.
228
229set low ""
230set lowname ""
231
232set headers [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h $tempfile"]
233
234set headers_regexp "\[ 0-9\]+(\[^ \]+)\[ \]*(\[0-9a-fA-F\]+)\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)\[ \]+\[0-9a-fA-F\]+\[ \]+2\[*\]\[*\]\[0-9\]+(.*)"
235
236set got $headers
237while {[regexp $headers_regexp $got all name size vma rest]} {
238 set vma 0x$vma
239 set size 0x$size
240 if {$size != 0} {
241 if {$low == "" || $vma < $low} {
242 set low $vma
243 set lowname $name
244 }
245 }
246 set got $rest
247}
248
249if {$low == "" || $origstart == ""} then {
250 perror "objdump can not recognize bintest.o"
251} else {
627fe3fb 252 set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec --adjust-vma 0x123 $tempfile ${copyfile}.srec"]
252b5132
RH
253 if ![string match "" $got] then {
254 fail "objcopy --adjust-vma"
255 } else {
256 set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -fh ${copyfile}.srec"]
257 set want "file format srec.*start address\[ \]*(\[0-9a-fA-FxX\]+).*sec1\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)"
258 if ![regexp $want $got all start vma] then {
259 fail "objcopy --adjust-vma"
260 } else {
261 set vma 0x$vma
262 if {$vma != $low + 0x123} then {
263 send_log "$vma != $low + 0x123\n"
264 fail "objcopy --adjust-vma"
265 } else {
266 if {$start != $origstart + 0x123} then {
267 send_log "$start != $origstart + 0x123\n"
268 fail "objcopy --adjust-vma"
269 } else {
270 pass "objcopy --adjust-vma"
271 }
272 }
273 }
274 }
275
276 set arg ""
277 set got $headers
278 while {[regexp $headers_regexp $got all name size vma rest]} {
279 set vma 0x$vma
280 if {$vma == $low} then {
281 set arg "$arg --adjust-section-vma $name+4"
282 }
283 set got $rest
284 }
285
627fe3fb 286 set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec $arg $tempfile ${copyfile}.srec"]
252b5132
RH
287 if ![string match "" $got] then {
288 fail "objcopy --adjust-section-vma +"
289 } else {
290 set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h ${copyfile}.srec"]
291 set want "file format srec.*sec1\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)"
292 if ![regexp $want $got all vma] then {
293 fail "objcopy --adjust-section-vma +"
294 } else {
295 set vma 0x$vma
296 if {$vma != $low + 4} then {
297 send_log "$vma != $low + 4\n"
298 fail "objcopy --adjust-section-vma +"
299 } else {
300 pass "objcopy --adjust-section-vma +"
301 }
302 }
303 }
304
305 regsub -all "\\+4" $arg "=[expr $low + 4]" argeq
627fe3fb 306 set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec $argeq $tempfile ${copyfile}.srec"]
252b5132
RH
307 if ![string match "" $got] then {
308 fail "objcopy --adjust-section-vma ="
309 } else {
310 set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h ${copyfile}.srec"]
311 set want "file format srec.*sec1\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)"
312 if ![regexp $want $got all vma] then {
313 fail "objcopy --adjust-section-vma ="
314 } else {
315 set vma 0x$vma
316 if {$vma != $low + 4} then {
317 send_log "$vma != $low + 4\n"
318 fail "objcopy --adjust-section-vma ="
319 } else {
320 pass "objcopy --adjust-section-vma ="
321 }
322 }
323 }
324}
325
326# Test stripping an object.
327
328proc strip_test { } {
1983fbac 329 global AR
252b5132
RH
330 global CC
331 global STRIP
332 global STRIPFLAGS
333 global NM
334 global NMFLAGS
335 global srcdir
336 global subdir
337
338 set test "strip"
339
340 if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
341 untested $test
342 return
343 }
344
345 if [is_remote host] {
1983fbac 346 set archive libstrip.a
8d263650 347 set objfile [remote_download host tmpdir/testprog.o]
1983fbac
L
348 remote_file host delete $archive
349 } else {
350 set archive tmpdir/libstrip.a
351 set objfile tmpdir/testprog.o
352 }
353
354 remote_file build delete tmpdir/libstrip.a
355
356 set exec_output [binutils_run $AR "rc $archive ${objfile}"]
357 if ![string match "" $exec_output] {
358 fail $test
359 return
360 }
361
8648f88f
L
362 set exec_output [binutils_run $STRIP "-g $archive"]
363 if ![string match "" $exec_output] {
364 fail $test
365 return
366 }
367
1983fbac
L
368 set exec_output [binutils_run $STRIP "$STRIPFLAGS $archive"]
369 if ![string match "" $exec_output] {
370 fail $test
371 return
372 }
373
374 if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
375 untested $test
376 return
377 }
378
379 if [is_remote host] {
8d263650 380 set objfile [remote_download host tmpdir/testprog.o]
252b5132
RH
381 } else {
382 set objfile tmpdir/testprog.o
383 }
384
385 set exec_output [binutils_run $STRIP "$STRIPFLAGS $objfile"]
386 if ![string match "" $exec_output] {
387 fail $test
388 return
389 }
390
391 set exec_output [binutils_run $NM "-a $NMFLAGS $objfile"]
68a4c073 392 if ![string match "*: no symbols*" $exec_output] {
252b5132
RH
393 fail $test
394 return
395 }
396
397 pass $test
398}
399
400strip_test
401
402# Test stripping an object file with saving a symbol
403
404proc strip_test_with_saving_a_symbol { } {
405 global CC
406 global STRIP
407 global STRIPFLAGS
408 global NM
409 global NMFLAGS
410 global srcdir
411 global subdir
412
413 set test "strip with saving a symbol"
414
415 if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
416 untested $test
417 return
418 }
419
420 if [is_remote host] {
8d263650 421 set objfile [remote_download host tmpdir/testprog.o]
252b5132
RH
422 } else {
423 set objfile tmpdir/testprog.o
424 }
425
426 set exec_output [binutils_run $STRIP "$STRIPFLAGS -K main -K _main $objfile"]
427 if ![string match "" $exec_output] {
428 fail $test
429 return
430 }
431
432 set exec_output [binutils_run $NM "$NMFLAGS $objfile"]
195fe636 433 if {![regexp {^([0-9a-fA-F]+)?[ ]+[TD] main} $exec_output] \
252b5132
RH
434 && ![regexp {^([0-9a-fA-F]+)?[ ]+T _main} $exec_output]} {
435 fail $test
436 return
437 }
438
439 pass $test
440}
441
442strip_test_with_saving_a_symbol
443
444# Build a final executable.
445
bd7421f0 446if { [istarget *-*-cygwin] || [istarget *-*-mingw32] } {
f8a7038a
NC
447 set test_prog "testprog.exe"
448} else {
449 set test_prog "testprog"
450}
451
252b5132
RH
452proc copy_setup { } {
453 global srcdir
454 global subdir
9a580d9a 455 global gcc_gas_flag
f8a7038a 456 global test_prog
252b5132 457
8d263650
BE
458 set res [build_wrapper testglue.o]
459 set flags { debug }
252b5132
RH
460
461 if { $res != "" } {
8d263650
BE
462 lappend flags "additional_flags=[lindex $res 1]"
463 set add_libs "testglue.o"
252b5132 464 } else {
8d263650 465 set add_libs ""
252b5132
RH
466 }
467
9a580d9a
L
468 if { [istarget *-*-linux*] } {
469 foreach i $gcc_gas_flag {
470 set flags "additional_flags=$i $flags"
471 }
472 }
f8a7038a 473 if { [target_compile "$srcdir/$subdir/testprog.c $add_libs" tmpdir/$test_prog executable $flags] != "" } {
252b5132
RH
474 return 2
475 }
476
8d263650
BE
477 set result [remote_load target tmpdir/$test_prog]
478 set status [lindex $result 0]
252b5132
RH
479
480 if { $status != "pass" } {
481 perror "unresolved setup, status = $status"
482 return 3
483 }
484
485 return 0
486}
487
488# Test copying an executable.
489
490proc copy_executable { prog flags test1 test2 } {
f8a7038a 491 global test_prog
252b5132
RH
492
493 if [is_remote host] {
8d263650 494 set testfile [remote_download host tmpdir/$test_prog]
252b5132
RH
495 set testcopy copyprog
496 } else {
f8a7038a 497 set testfile tmpdir/$test_prog
252b5132
RH
498 set testcopy tmpdir/copyprog
499 }
8d263650 500 remote_file host delete $testcopy
252b5132
RH
501
502 set exec_output [binutils_run $prog "$flags $testfile $testcopy"]
503
504 if ![string match "" $exec_output] {
505 fail $test1
506 fail $test2
507 return
508 }
509
510 if [is_remote host] {
511 remote_upload host $testcopy tmpdir/copyprog
512 }
513
f8a7038a 514 set status [remote_exec build "cmp" "tmpdir/$test_prog tmpdir/copyprog"]
8d263650 515 set exec_output [lindex $status 1]
252b5132
RH
516
517 if [string match "" $exec_output] then {
518 pass $test1
519 } else {
520 send_log "$exec_output\n"
521 verbose "$exec_output"
522
523 # This will fail for many reasons. For example, it will most
524 # likely fail if a non-GNU linker is used. Therefore, we do
525 # not insist that it pass. If you are using an assembler and
526 # linker based on the same BFD as objcopy, it is worth
527 # investigating to see why this failure occurs. If we are
528 # cross compiling, we assume that a GNU linker is being used,
529 # and expect it to succeed.
530 if {[isnative]} then {
531 setup_xfail "*-*-*"
532 }
533
534 # This also fails for mips*-*-elf targets. See elf32-mips.c
535 # mips_elf_sym_is_global.
536 setup_xfail "mips*-*-elf"
537
9da7f49f 538 setup_xfail "*arm*-*-coff"
70bbfa26 539 setup_xfail "xscale-*-coff"
11d47adc 540 setup_xfail "arm*-*-pe"
c58c5ee7
NC
541 setup_xfail "thumb*-*-coff"
542 setup_xfail "thumb*-*-pe"
11d47adc 543
252b5132
RH
544 fail $test1
545 }
546
547 set output [remote_load target tmpdir/copyprog]
8d263650 548 set status [lindex $output 0]
252b5132
RH
549 if { $status != "pass" } {
550 fail $test2
551 } else {
552 pass $test2
553 }
554}
555
556# Test stripping an executable
557
558proc strip_executable { prog flags test } {
559 global NM
560 global NMFLAGS
561
562 remote_download build tmpdir/copyprog tmpdir/striprog
563 if [is_remote host] {
8d263650 564 set copyfile [remote_download host tmpdir/striprog]
252b5132
RH
565 } else {
566 set copyfile tmpdir/striprog
567 }
568
569 set exec_output [binutils_run $prog "$flags ${copyfile}"]
570 if ![string match "" $exec_output] {
571 fail $test
572 return
573 }
574
575 if [is_remote host] {
8d263650 576 remote_upload host ${copyfile} tmpdir/striprog
252b5132
RH
577 }
578
579 set result [remote_load target tmpdir/striprog]
8d263650 580 set status [lindex $result 0]
252b5132
RH
581 if { $status != "pass" } {
582 fail $test
583 return
584 }
585
586 set exec_output [binutils_run $NM "$NMFLAGS ${copyfile}"]
68a4c073 587 if ![string match "*: no symbols*" $exec_output] {
252b5132
RH
588 fail $test
589 return
590 }
591 pass $test
592}
593
594# Test stripping an executable with saving a symbol
595
596proc strip_executable_with_saving_a_symbol { prog flags test } {
597 global NM
598 global NMFLAGS
599
600 remote_download build tmpdir/copyprog tmpdir/striprog
601 if [is_remote host] {
8d263650 602 set copyfile [remote_download host tmpdir/striprog]
252b5132
RH
603 } else {
604 set copyfile tmpdir/striprog
605 }
606
607 set exec_output [binutils_run $prog "$flags ${copyfile}"]
608 if ![string match "" $exec_output] {
609 fail $test
610 return
611 }
612
613 if [is_remote host] {
8d263650 614 remote_upload host ${copyfile} tmpdir/striprog
252b5132
RH
615 }
616
617 set result [remote_load target tmpdir/striprog]
8d263650 618 set status [lindex $result 0]
252b5132
RH
619 if { $status != "pass" } {
620 fail $test
621 return
622 }
623
624 set exec_output [binutils_run $NM "$NMFLAGS ${copyfile}"]
edc45ab9
HPN
625 if { [istarget mmix-knuth-mmixware] } {
626 # Whenever there's a symbol in the mmo format, there's the symbol
627 # Main, so remove it manually from the expected output for sake of
628 # this test.
629
630 # Using "" not {} to get the \n and \r translated.
631 regsub "^\[0-9a-fA-F\]+\[ \]+T Main\[\n\r\]+" $exec_output "" exec_output
632 }
633
adacfc81
JJ
634 if {![regexp {^([0-9a-fA-F]+)?[ ]+[TD] main} $exec_output] \
635 && ![regexp {^([0-9a-fA-F]+)?[ ]+[TD] _main} $exec_output]} {
252b5132
RH
636 fail $test
637 return
638 }
639 pass $test
640}
641
642set test1 "simple objcopy of executable"
643set test2 "run objcopy of executable"
644set test3 "run stripped executable"
645set test4 "run stripped executable with saving a symbol"
646
647switch [copy_setup] {
648 "1" {
649 # do nothing
650 }
651 "2" {
652 untested $test1
653 untested $test2
654 untested $test3
655 untested $test4
656 }
657 "3" {
658 unresolved $test1
659 unresolved $test2
660 unresolved $test3
661 unresolved $test4
662 }
663 "0" {
664 copy_executable "$OBJCOPY" "$OBJCOPYFLAGS" "$test1" "$test2"
665 strip_executable "$STRIP" "$STRIPFLAGS" "$test3"
666 strip_executable_with_saving_a_symbol "$STRIP" "-K main -K _main $STRIPFLAGS" "$test4"
667 }
668}
ad2fb2cd 669
6a0d0afd
L
670proc objcopy_test_readelf {testname srcfile} {
671 global OBJCOPY
672 global OBJCOPYFLAGS
673 global READELF
674 global srcdir
675 global subdir
676
677 if {![binutils_assemble $srcdir/$subdir/${srcfile} tmpdir/bintest.o]} then {
678 unresolved "objcopy ($testname)"
679 return
680 }
681
682 verbose -log "$OBJCOPY $OBJCOPYFLAGS tmpdir/bintest.o tmpdir/copy.o"
683 catch "exec $OBJCOPY $OBJCOPYFLAGS tmpdir/bintest.o tmpdir/copy.o" exec_output
684 if ![string match "" $exec_output] then {
685 fail "objcopy ($testname)"
686 return;
687 }
688
689 verbose -log "$READELF -a tmpdir/bintest.o > tmpdir/bintest.o.out"
690 catch "exec $READELF -a tmpdir/bintest.o > tmpdir/bintest.o.out" exec_output
691 set exec_output [prune_warnings $exec_output]
692 if ![string match "" $exec_output] then {
693 unresolved "objcopy ($testname)"
694 return
695 }
696
697 verbose -log "$READELF -a tmpdir/copy.o > tmpdir/copy.o.out"
698 catch "exec $READELF -a tmpdir/copy.o > tmpdir/copy.o.out" exec_output
699 set exec_output [prune_warnings $exec_output]
700 if ![string match "" $exec_output] then {
701 unresolved "objcopy ($testname)"
702 return
703 }
704
705 verbose -log "diff tmpdir/bintest.o.out tmpdir/copy.o.out"
706 catch "exec diff tmpdir/bintest.o.out tmpdir/copy.o.out" exec_output
707 set exec_output [prune_warnings $exec_output]
708
709 if [string match "" $exec_output] then {
710 pass "objcopy ($testname)"
711 } else {
712 fail "objcopy ($testname)"
713 }
714}
715
ad2fb2cd
L
716# ia64 specific tests
717if { ([istarget "ia64-*-elf*"]
718 || [istarget "ia64-*-linux*"]) } {
64bb95af
L
719 objcopy_test "ia64 link order" link-order.s
720}
ad2fb2cd 721
64bb95af
L
722# ELF specific tests
723if [is_elf_format] {
724 objcopy_test "ELF unknown section type" unknown.s
6a0d0afd 725 objcopy_test_readelf "ELF group" group.s
ad2fb2cd 726}
af3c5dea
L
727
728run_dump_test "copy-1"
729run_dump_test "copy-2"
This page took 0.302716 seconds and 4 git commands to generate.