1 # Test Xtensa longcall optimization.
2 # By David Heine
, Tensilica
, Inc.
4 # Free Software Foundation
, Inc.
6 # This file is free software
; you can redistribute it and
/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation
; either version
2 of the License
, or
9 #
(at your option
) any later version.
11 # This
program is distributed in the hope that it will be useful
,
12 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License
for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this
program; if not
, write to the Free Software
18 # Foundation
, Inc.
, 51 Franklin Street
- Fifth Floor
, Boston
, MA
02110-1301, USA.
20 if ![istarget
"xtensa-*-*"] {
26 set OBJDUMPFLAGS
"-dr"
30 # run objdump
on a file
32 proc default_ld_objdump
{ objdump object outputfile
} {
37 if {[which $objdump
] == 0} then {
38 perror
"$objdump does not exist"
42 if ![info exists OBJDUMPFLAGS
] { set OBJDUMPFLAGS
"" }
44 verbose
-log "$objdump $OBJDUMPFLAGS $object >$outputfile"
46 catch
"exec $objdump $OBJDUMPFLAGS $object >$outputfile" exec_output
47 set exec_output
[prune_warnings $exec_output
]
48 if [string match
"" $exec_output] then {
51 verbose
-log "$exec_output"
52 perror
"$object: objdump failed"
58 if ![ld_assemble $as $srcdir
/$subdir
/lcall1.s tmpdir
/lcall1.o
] {
62 if ![ld_assemble $as $srcdir
/$subdir
/lcall2.s tmpdir
/lcall2.o
] {
67 set object
"tmpdir/lcall"
68 set outputfile
"$object.txt"
70 if ![ld_simple_link $
ld $object
"-T $srcdir/$subdir/lcall.t tmpdir/lcall1.o tmpdir/lcall2.o"] {
71 verbose
-log "failure in ld"
76 if ![default_ld_objdump $objdump $object $outputfile
] {
77 verbose
-log "failure in objdump"
82 set file
[open $outputfile r
]
83 while { [gets $file line
] != -1 } {
85 if [regexp
"l32r" $line] {
86 verbose
-log "Found an l32r in the linked object"
96 set file
[open $outputfile r
]
99 while { [gets $file line
] != -1 } {
101 if [regexp
"^00000004 <label1>:" $line] {