URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-stable/binutils-2.20.1/ld/testsuite/ld-xtensa
- from Rev 816 to Rev 818
- ↔ Reverse comparison
Rev 816 → Rev 818
/tlspic1.s
0,0 → 1,120
.section ".tdata", "awT", @progbits |
.global sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 |
.global sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.align 4 |
sg1: .long 17 |
sg2: .long 18 |
sg3: .long 19 |
sg4: .long 20 |
sg5: .long 21 |
sg6: .long 22 |
sg7: .long 23 |
sg8: .long 24 |
sl1: .long 65 |
sl2: .long 66 |
sl3: .long 67 |
sl4: .long 68 |
sl5: .long 69 |
sl6: .long 70 |
sl7: .long 71 |
sl8: .long 72 |
sh1: .long 157 |
sh2: .long 158 |
sh3: .long 159 |
sh4: .long 160 |
sh5: .long 161 |
sh6: .long 162 |
sh7: .long 163 |
sh8: .long 164 |
|
.text |
.global _start |
.type _start, @function |
_start: |
entry sp, 32 |
|
/* GD */ |
movi a8, sg1@tlsfunc |
movi a10, sg1@tlsarg |
callx8.tls a8, sg1@tlscall |
|
/* GD -> IE because variable is referenced through IE too */ |
movi a8, sg2@tlsfunc |
movi a10, sg2@tlsarg |
callx8.tls a8, sg2@tlscall |
|
/* GD against local variable */ |
movi a8, sl1@tlsfunc |
movi a10, sl1@tlsarg |
callx8.tls a8, sl1@tlscall |
|
/* GD -> IE against local variable referenced through IE too */ |
movi a8, sl2@tlsfunc |
movi a10, sl2@tlsarg |
callx8.tls a8, sl2@tlscall |
|
/* GD against hidden and local variable */ |
movi a8, sh1@tlsfunc |
movi a10, sh1@tlsarg |
callx8.tls a8, sh1@tlscall |
|
/* GD -> IE against hidden and local variable referenced through |
IE too */ |
movi a8, sh2@tlsfunc |
movi a10, sh2@tlsarg |
callx8.tls a8, sh2@tlscall |
|
/* GD against hidden but not local variable */ |
movi a8, sH1@tlsfunc |
movi a10, sH1@tlsarg |
callx8.tls a8, sH1@tlscall |
|
/* GD -> IE against hidden but not local variable referenced through |
IE too */ |
movi a8, sH2@tlsfunc |
movi a10, sH2@tlsarg |
callx8.tls a8, sH2@tlscall |
|
/* LD */ |
movi a8, _TLS_MODULE_BASE_@tlsfunc |
movi a10, _TLS_MODULE_BASE_@tlsarg |
callx8.tls a8, _TLS_MODULE_BASE_@tlscall |
movi a12, sl1@dtpoff |
add a12, a12, a10 |
movi a13, 2+sl2@dtpoff |
add a13, a13, a10 |
|
/* LD against hidden and local variables */ |
movi a12, sh1@dtpoff |
add a12, a12, a10 |
movi a13, sh2@dtpoff+3 |
add a13, a13, a10 |
|
/* LD against hidden but not local variables */ |
movi a12, sH1@dtpoff |
add a12, a12, a10 |
movi a13, sH2@dtpoff+1 |
add a13, a13, a10 |
|
/* IE against global var */ |
rur a2, THREADPTR |
movi a3, sg2@tpoff |
add a3, a3, a2 |
|
/* IE against local var */ |
rur a4, THREADPTR |
movi a5, sl2@tpoff |
add a5, a5, a4 |
|
/* IE against hidden and local var */ |
rur a6, THREADPTR |
movi a7, sh2@tpoff |
add a7, a7, a6 |
|
/* IE against hidden but not local var */ |
rur a8, THREADPTR |
movi a9, sH2@tpoff |
add a9, a9, a8 |
|
retw |
/coalesce.t
0,0 → 1,6
SECTIONS |
{ |
.text 0x00000000 : { |
*(.literal .text) |
} |
} |
/tlspic2.s
0,0 → 1,12
.section ".tbss", "awT", @nobits |
.global sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8 |
.hidden sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8 |
.align 4 |
sH1: .space 4 |
sH2: .space 4 |
sH3: .space 4 |
sH4: .space 4 |
sH5: .space 4 |
sH6: .space 4 |
sH7: .space 4 |
sH8: .space 4 |
/tlsbin.dd
0,0 → 1,65
#source: tlsbin.s |
#as: |
#ld: -melf32xtensa |
#objdump: -drj.text --start-address=0x400238 |
#target: xtensa*-*-linux* |
|
.*: +file format elf32-xtensa-.e |
|
Disassembly of section \.text: |
|
0+400238 <_start>: |
[0-9a-f]+: [0-9a-f]+[ ]+entry a1, 32 |
# GD -> IE because variable is not defined in executable |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 4001ec <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD -> IE because variable is not defined in executable where |
# the variable is referenced through IE too |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 4001f4 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD -> LE with global variable defined in executable |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 4001fc <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD -> LE with local variable defined in executable |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 400204 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD -> LE with hidden variable defined in executable |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 40020c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# LD -> LE |
[0-9a-f]+: [0-9a-f]+[ ]+nop.* |
[0-9a-f]+: [0-9a-f]+[ ]+nop.* |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a10 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a12, 400218 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a12, a12, a10 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a13, 40021c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a13, a13, a10 |
# LD -> LE against hidden variables |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a12, 400220 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a12, a12, a10 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a13, 400224 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a13, a13, a10 |
# |
# IE against global var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a2 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a3, 400228 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a3, a3, a2 |
# IE -> LE against global var defined in exec |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a4 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a5, 40022c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a5, a5, a4 |
# IE -> LE against local var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a6 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a7, 400230 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a7, a7, a6 |
# IE -> LE against hidden var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a9, 400234 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a9, a9, a8 |
# |
[0-9a-f]+: [0-9a-f]+[ ]+retw.* |
/lcall.exp
0,0 → 1,114
# Test Xtensa longcall optimization. |
# By David Heine, Tensilica, Inc. |
# Copyright 2002, 2003, 2005, 2007, 2008 |
# Free Software Foundation, Inc. |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
|
if ![istarget "xtensa*-*-*"] { |
return |
} |
|
set testname "LCALL" |
|
set OBJDUMPFLAGS "-dr" |
|
# |
# default_ld_objdump |
# run objdump on a file |
# |
proc default_ld_objdump { objdump object outputfile } { |
global OBJDUMPFLAGS |
global objdump_output |
global host_triplet |
|
if {[which $objdump] == 0} then { |
perror "$objdump does not exist" |
return 0 |
} |
|
if ![info exists OBJDUMPFLAGS] { set OBJDUMPFLAGS "" } |
|
verbose -log "$objdump $OBJDUMPFLAGS $object >$outputfile" |
|
catch "exec $objdump $OBJDUMPFLAGS $object >$outputfile" exec_output |
set exec_output [prune_warnings $exec_output] |
if [string match "" $exec_output] then { |
return 1 |
} else { |
verbose -log "$exec_output" |
perror "$object: objdump failed" |
return 0 |
} |
} |
|
|
if ![ld_assemble $as $srcdir/$subdir/lcall1.s tmpdir/lcall1.o] { |
unresolved $testname |
return |
} |
if ![ld_assemble $as $srcdir/$subdir/lcall2.s tmpdir/lcall2.o] { |
unresolved $testname |
return |
} |
|
set object "tmpdir/lcall" |
set outputfile "$object.txt" |
|
if ![ld_simple_link $ld $object "-T $srcdir/$subdir/lcall.t tmpdir/lcall1.o tmpdir/lcall2.o"] { |
verbose -log "failure in ld" |
fail $testname |
return |
} |
|
if ![default_ld_objdump $objdump $object $outputfile ] { |
verbose -log "failure in objdump" |
fail $testname |
return |
} |
|
set file [open $outputfile r] |
while { [gets $file line] != -1 } { |
# verbose "$line" 2 |
if [regexp "l32r" $line] { |
verbose -log "Found an l32r in the linked object" |
verbose -log "$line" |
fail $testname |
} |
} |
close $file |
pass $testname |
|
|
set testname "LCALL2" |
set file [open $outputfile r] |
set found 0 |
|
while { [gets $file line] != -1 } { |
# verbose "$line" 2 |
if [regexp "^00000004 <label1>:" $line] { |
set found 1 |
} |
} |
close $file |
if $found { |
pass $testname |
} else { |
fail $testname |
} |
|
/tlspic.dd
0,0 → 1,81
#source: tlspic1.s |
#source: tlspic2.s |
#as: |
#ld: -shared -melf32xtensa |
#objdump: -drj.text --start-address=0x350 |
#target: xtensa*-*-linux* |
|
.*: +file format elf32-xtensa-.e |
|
Disassembly of section \.text: |
|
0+350 <_start>: |
[0-9a-f]+: [0-9a-f]+[ ]+entry a1, 32 |
# GD |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a8, 2e0 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 2e4 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+callx8 a8 |
# GD -> IE because variable is referenced through IE too |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 2ec <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD against local variable |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a8, 2f0 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 2f4 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+callx8 a8 |
# GD -> IE against local variable referenced through IE too |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 2fc <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD against hidden and local variable |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a8, 300 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 304 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+callx8 a8 |
# GD -> IE against hidden and local variable referenced through IE too |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 30c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# GD against hidden but not local variable |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a8, 310 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 314 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+callx8 a8 |
# GD -> IE against hidden but not local variable referenced through IE too |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 31c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a10, a10, a8 |
# LD |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a8, 320 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a10, 324 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+callx8 a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a12, 328 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a12, a12, a10 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a13, 32c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a13, a13, a10 |
# LD against hidden and local variables |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a12, 330 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a12, a12, a10 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a13, 334 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a13, a13, a10 |
# LD against hidden but not local variables |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a12, 338 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a12, a12, a10 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a13, 33c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a13, a13, a10 |
# IE against global var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a2 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a3, 340 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a3, a3, a2 |
# IE against local var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a4 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a5, 344 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a5, a5, a4 |
# IE against hidden and local var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a6 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a7, 348 <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a7, a7, a6 |
# IE against hidden but not local var |
[0-9a-f]+: [0-9a-f]+[ ]+rur.threadptr a8 |
[0-9a-f]+: [0-9a-f]+[ ]+l32r a9, 34c <.*> |
[0-9a-f]+: [0-9a-f]+[ ]+add.* a9, a9, a8 |
# |
[0-9a-f]+: [0-9a-f]+[ ]+retw.* |
/lcall.t
0,0 → 1,6
SECTIONS |
{ |
.text 0x00000000 : { |
*(.literal .text) |
} |
} |
/tlslib.s
0,0 → 1,18
.section ".tdata", "awT", @progbits |
.global sG1, sG2, sG3, sG4, sG5, sG6, sG7, sG8 |
sG1: .long 513 |
sG2: .long 514 |
sG3: .long 515 |
sG4: .long 516 |
sG5: .long 517 |
sG6: .long 518 |
sG7: .long 519 |
sG8: .long 520 |
|
.text |
/* Dummy. */ |
.global __tls_get_addr |
.type __tls_get_addr, @function |
__tls_get_addr: |
entry sp, 16 |
retw |
/tlsbin.s
0,0 → 1,98
.section ".tdata", "awT", @progbits |
.global sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8 |
.global sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8 |
.align 4 |
sg1: .long 17 |
sg2: .long 18 |
sg3: .long 19 |
sg4: .long 20 |
sg5: .long 21 |
sg6: .long 22 |
sg7: .long 23 |
sg8: .long 24 |
sl1: .long 65 |
sl2: .long 66 |
sl3: .long 67 |
sl4: .long 68 |
sl5: .long 69 |
sl6: .long 70 |
sl7: .long 71 |
sl8: .long 72 |
sh1: .long 157 |
sh2: .long 158 |
sh3: .long 159 |
sh4: .long 160 |
sh5: .long 161 |
sh6: .long 162 |
sh7: .long 163 |
sh8: .long 164 |
|
.text |
.global _start |
.type _start, @function |
_start: |
entry sp, 32 |
|
/* GD -> IE because variable is not defined in executable */ |
movi a8, sG1@tlsfunc |
movi a10, sG1@tlsarg |
callx8.tls a8, sG1@tlscall |
|
/* GD -> IE because variable is not defined in executable where |
the variable is referenced through IE too */ |
movi a8, sG2@tlsfunc |
movi a10, sG2@tlsarg |
callx8.tls a8, sG2@tlscall |
|
/* GD -> LE with global variable defined in executable */ |
movi a8, sg1@tlsfunc |
movi a10, sg1@tlsarg |
callx8.tls a8, sg1@tlscall |
|
/* GD -> LE with local variable defined in executable */ |
movi a8, sl1@tlsfunc |
movi a10, sl1@tlsarg |
callx8.tls a8, sl1@tlscall |
|
/* GD -> LE with hidden variable defined in executable */ |
movi a8, sh1@tlsfunc |
movi a10, sh1@tlsarg |
callx8.tls a8, sh1@tlscall |
|
/* LD -> LE */ |
movi a8, _TLS_MODULE_BASE_@tlsfunc |
movi a10, _TLS_MODULE_BASE_@tlsarg |
callx8.tls a8, _TLS_MODULE_BASE_@tlscall |
movi a12, 1+sl1@dtpoff |
add a12, a12, a10 |
movi a13, sl2@dtpoff+2 |
add a13, a13, a10 |
|
/* LD -> LE against hidden variables */ |
movi a12, sh1@dtpoff |
add a12, a12, a10 |
movi a13, 3+sh2@dtpoff |
add a13, a13, a10 |
|
/* IE against global var */ |
rur a2, THREADPTR |
movi a3, sG2@tpoff |
add a3, a3, a2 |
|
/* IE -> LE against global var defined in exec */ |
rur a4, THREADPTR |
movi a5, sg1@tpoff |
add a5, a5, a4 |
|
/* IE -> LE against local var */ |
rur a6, THREADPTR |
movi a7, sl1@tpoff |
add a7, a7, a6 |
|
/* IE -> LE against hidden var */ |
rur a8, THREADPTR |
movi a9, sh1@tpoff |
add a9, a9, a8 |
|
retw |
/xtensa.exp
0,0 → 1,54
# Expect script for ld-xtensa tests |
# Copyright (C) 2008 Free Software Foundation |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
# |
|
if { !([istarget "xtensa*-*-linux*"]) } { |
return |
} |
|
# List contains test-items with 3 items followed by 2 lists: |
# 0:name 1:ld options 2:assembler options |
# 3:filenames of assembler files 4: action and options. 5: name of output file |
|
# Actions: |
# objdump: Apply objdump options on result. Compare with regex (last arg). |
# nm: Apply nm options on result. Compare with regex (last arg). |
# readelf: Apply readelf options on result. Compare with regex (last arg). |
|
set xtensatests { |
{"TLS -shared transitions" |
"-shared -melf32xtensa" "" {tlspic1.s tlspic2.s} |
{{readelf -WSsrl tlspic.rd} |
{objdump "-drj.text --start-address=0x350" tlspic.dd} |
{objdump "-sj.text --stop-address=0x350" tlspic.sd} |
{objdump -sj.tdata tlspic.td}} |
"libtlspic.so"} |
{"Helper shared library" "-shared -melf32xtensa" |
"" {tlslib.s} {} "libtlslib.so"} |
{"TLS exec transitions" |
"-melf32xtensa tmpdir/libtlslib.so" "" {tlsbin.s} |
{{readelf -WSsrl tlsbin.rd} |
{objdump "-drj.text --start-address=0x400238" tlsbin.dd} |
{objdump "-sj.text --stop-address=0x400238" tlsbin.sd} |
{objdump -sj.tdata tlsbin.td}} |
"tlsbin"} |
} |
|
run_ld_link_tests $xtensatests |
/tlsbin.rd
0,0 → 1,118
#source: tlsbin.s |
#as: |
#ld: -melf32xtensa |
#readelf: -WSsrl |
#target: xtensa*-*-linux* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 |
+\[[ 0-9]+\] .interp +.* |
+\[[ 0-9]+\] .hash +.* |
+\[[ 0-9]+\] .dynsym +.* |
+\[[ 0-9]+\] .dynstr +.* |
+\[[ 0-9]+\] .rela.dyn +.* |
+\[[ 0-9]+\] .text +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +AX +0 +0 +4 |
+\[[ 0-9]+\] .got.loc +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +A +0 +0 +4 |
+\[[ 0-9]+\] .tdata +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WAT +0 +0 +4 |
+\[[ 0-9]+\] .dynamic +DYNAMIC +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 08 +WA +4 +0 +4 |
+\[[ 0-9]+\] .got +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA +0 +0 +4 |
+\[[ 0-9]+\] .xt.lit +PROGBITS +0+ .* |
+\[[ 0-9]+\] .xt.prop +PROGBITS +0+ .* |
+\[[ 0-9]+\] .xtensa.info +NOTE +0+ .* |
+\[[ 0-9]+\] .shstrtab +.* |
+\[[ 0-9]+\] .symtab +.* |
+\[[ 0-9]+\] .strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is EXEC \(Executable file\) |
Entry point 0x[0-9a-f]+ |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
PHDR.* |
INTERP.* |
.*Requesting program interpreter.* |
LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000 |
LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW 0x1000 |
DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x4 |
TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4 |
|
Section to Segment mapping: |
Segment Sections... |
00 * |
01 +.interp * |
02 +.interp .hash .dynsym .dynstr .rela.dyn .text .got.loc * |
03 +.tdata .dynamic .got * |
04 +.dynamic * |
05 +.tdata * |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries: |
+Offset +Info +Type +Sym\. Value Symbol's Name \+ Addend |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+ +sG1 \+ 0 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+ +sG2 \+ 0 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+ +sG2 \+ 0 |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size Type +Bind +Vis +Ndx Name |
+[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * |
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 |
+[0-9]+: 0+[0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start |
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 |
+[0-9]+: 0+[0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata |
+[0-9]+: 0+[0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size Type +Bind +Vis +Ndx Name |
+[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 * |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl1 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl2 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl3 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl4 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl5 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl6 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl7 |
+[0-9]+: [0-9a-f]+ +0 TLS +LOCAL DEFAULT +8 sl8 |
+[0-9]+: 0+ +0 TLS +LOCAL HIDDEN +8 _TLS_MODULE_BASE_ |
+[0-9]+: [0-9a-f]+ +0 OBJECT +LOCAL +HIDDEN +9 _DYNAMIC |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg8 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg3 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh3 |
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG2 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg4 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg5 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh7 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh8 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg1 |
+[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +6 _start |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh4 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh5 |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg2 |
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT UND sG1 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh1 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg6 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL DEFAULT +8 sg7 |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh2 |
+[0-9]+: [0-9a-f]+ +0 TLS +GLOBAL HIDDEN +8 sh6 |
/coalesce1.s
0,0 → 1,15
.global foo |
.data |
.global g_name |
.align 4 |
g_name: |
.word 0xffffffff |
.text |
.global main |
.align 4 |
main: |
entry a5,16 |
movi a5,20000 |
movi a6,g_name |
call8 foo |
ret |
/tlsbin.sd
0,0 → 1,14
#source: tlsbin.s |
#as: |
#ld: -melf32xtensa |
#objdump: -sj.text --stop-address=0x400238 |
#target: xtensa*-*-linux* |
|
.*: +file format elf32-xtensa-.e |
|
Contents of section .text: |
*[0-9a-f]+ 0+ 0+ 0+ 0+ .* |
*[0-9a-f]+ 0+ 0*080* 0+ 0*280* .* |
*[0-9a-f]+ 0+ 0*480* 0+ 0*080* .* |
*[0-9a-f]+ 0*290* 0*2e0* 0*480* 0*4f0* .* |
*[0-9a-f]+ 0+ 0*080* 0*280* 0*480* .* |
/coalesce2.s
0,0 → 1,10
.text |
.global foo |
.global g_name |
.align 4 |
foo: |
entry a5,16 |
movi a5,20000 |
movi a6,g_name |
movi a7,50000 |
ret |
/tlsbin.td
0,0 → 1,14
#source: tlsbin.s |
#ld: -melf32xtensa |
#objdump: -sj.tdata |
#target: xtensa*-*-linux* |
|
.*: +file format elf32-xtensa-.e |
|
Contents of section .tdata: |
*[0-9a-f]+ 0*110* 0*120* 0*130* 0*140* .* |
*[0-9a-f]+ 0*150* 0*160* 0*170* 0*180* .* |
*[0-9a-f]+ 0*410* 0*420* 0*430* 0*440* .* |
*[0-9a-f]+ 0*450* 0*460* 0*470* 0*480* .* |
*[0-9a-f]+ 0*9d0* 0*9e0* 0*9f0* 0*a00* .* |
*[0-9a-f]+ 0*a10* 0*a20* 0*a30* 0*a40* .* |
/tlspic.rd
0,0 → 1,142
#source: tlspic1.s |
#source: tlspic2.s |
#as: |
#ld: -shared -melf32xtensa |
#readelf: -WSsrl |
#target: xtensa*-*-linux* |
|
There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+: |
|
Section Headers: |
\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al |
+\[[ 0-9]+\] +NULL +0+ 0+ 0+ 00 +0 +0 +0 |
+\[[ 0-9]+\] .hash +.* |
+\[[ 0-9]+\] .dynsym +.* |
+\[[ 0-9]+\] .dynstr +.* |
+\[[ 0-9]+\] .rela.dyn +.* |
+\[[ 0-9]+\] .text +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +AX +0 +0 +4 |
+\[[ 0-9]+\] .got.loc +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +A +0 +0 +4 |
+\[[ 0-9]+\] .tdata +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WAT +0 +0 +4 |
+\[[ 0-9]+\] .tbss +NOBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WAT +0 +0 +4 |
+\[[ 0-9]+\] .dynamic +DYNAMIC +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 08 +WA +3 +0 +4 |
+\[[ 0-9]+\] .got +PROGBITS +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA +0 +0 +4 |
+\[[ 0-9]+\] .xt.lit +PROGBITS +0+ .* |
+\[[ 0-9]+\] .xt.prop +PROGBITS +0+ .* |
+\[[ 0-9]+\] .xtensa.info +NOTE +0+ .* |
+\[[ 0-9]+\] .shstrtab +.* |
+\[[ 0-9]+\] .symtab +.* |
+\[[ 0-9]+\] .strtab +.* |
Key to Flags: |
.* |
.* |
.* |
|
Elf file type is DYN \(Shared object file\) |
Entry point 0x[0-9a-f]+ |
There are [0-9]+ program headers, starting at offset [0-9]+ |
|
Program Headers: |
Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align |
LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000 |
LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW 0x1000 |
DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x4 |
TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4 |
|
Section to Segment mapping: |
Segment Sections... |
00 +.hash .dynsym .dynstr .rela.dyn .text .got.loc * |
01 +.tdata .dynamic .got * |
02 +.dynamic * |
03 +.tdata .tbss * |
|
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 18 entries: |
+Offset +Info +Type +Sym\. Value Symbol's Name \+ Addend |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_FN +0+ +sg1 \+ 0 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_ARG +0+ +sg1 \+ 0 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+4 +sg2 \+ 0 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+4 +sg2 \+ 0 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_FN +0+20 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_ARG +0+20 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+24 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_FN +0+40 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_ARG +0+40 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+44 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_FN +0+60 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_ARG +0+60 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+64 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_FN +0+ |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLSDESC_ARG +0+ |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+24 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+44 |
[0-9a-f]+ [0-9a-f]+ R_XTENSA_TLS_TPOFF +0+64 |
|
Symbol table '\.dynsym' contains [0-9]+ entries: |
+Num: +Value +Size Type +Bind +Vis +Ndx Name |
+[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * |
+[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 |
+[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3 |
+[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4 |
+[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 |
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 |
+[0-9]+: 0+350 +0 FUNC +GLOBAL DEFAULT +5 _start |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start |
+[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +7 sg2 |
+[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 |
+[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end |
|
Symbol table '\.symtab' contains [0-9]+ entries: |
+Num: +Value +Size Type +Bind +Vis +Ndx Name |
+[0-9]+: 0+ +0 NOTYPE LOCAL DEFAULT UND * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +1 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +2 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +3 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +4 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +5 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +6 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +7 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +8 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +9 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +10 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +11 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +12 * |
+[0-9]+: [0-9a-f]+ +0 SECTION LOCAL DEFAULT +13 * |
+[0-9]+: 0+20 +0 TLS +LOCAL DEFAULT +7 sl1 |
+[0-9]+: 0+24 +0 TLS +LOCAL DEFAULT +7 sl2 |
+[0-9]+: 0+28 +0 TLS +LOCAL DEFAULT +7 sl3 |
+[0-9]+: 0+2c +0 TLS +LOCAL DEFAULT +7 sl4 |
+[0-9]+: 0+30 +0 TLS +LOCAL DEFAULT +7 sl5 |
+[0-9]+: 0+34 +0 TLS +LOCAL DEFAULT +7 sl6 |
+[0-9]+: 0+38 +0 TLS +LOCAL DEFAULT +7 sl7 |
+[0-9]+: 0+3c +0 TLS +LOCAL DEFAULT +7 sl8 |
+[0-9]+: 0+60 +0 TLS +LOCAL HIDDEN +8 sH1 |
+[0-9]+: 0+ +0 TLS +LOCAL HIDDEN +7 _TLS_MODULE_BASE_ |
+[0-9]+: 0+144c +0 OBJECT LOCAL HIDDEN ABS _DYNAMIC |
+[0-9]+: 0+48 +0 TLS +LOCAL HIDDEN +7 sh3 |
+[0-9]+: 0+64 +0 TLS +LOCAL HIDDEN +8 sH2 |
+[0-9]+: 0+78 +0 TLS +LOCAL HIDDEN +8 sH7 |
+[0-9]+: 0+58 +0 TLS +LOCAL HIDDEN +7 sh7 |
+[0-9]+: 0+5c +0 TLS +LOCAL HIDDEN +7 sh8 |
+[0-9]+: 0+6c +0 TLS +LOCAL HIDDEN +8 sH4 |
+[0-9]+: 0+4c +0 TLS +LOCAL HIDDEN +7 sh4 |
+[0-9]+: 0+68 +0 TLS +LOCAL HIDDEN +8 sH3 |
+[0-9]+: 0+50 +0 TLS +LOCAL HIDDEN +7 sh5 |
+[0-9]+: 0+70 +0 TLS +LOCAL HIDDEN +8 sH5 |
+[0-9]+: 0+74 +0 TLS +LOCAL HIDDEN +8 sH6 |
+[0-9]+: 0+7c +0 TLS +LOCAL HIDDEN +8 sH8 |
+[0-9]+: 0+40 +0 TLS +LOCAL HIDDEN +7 sh1 |
+[0-9]+: 0+44 +0 TLS +LOCAL HIDDEN +7 sh2 |
+[0-9]+: 0+54 +0 TLS +LOCAL HIDDEN +7 sh6 |
+[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8 |
+[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3 |
+[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4 |
+[0-9]+: 0+10 +0 TLS +GLOBAL DEFAULT +7 sg5 |
+[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1 |
+[0-9]+: 0+350 +0 FUNC +GLOBAL DEFAULT +5 _start |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS __bss_start |
+[0-9]+: 0+4 +0 TLS +GLOBAL DEFAULT +7 sg2 |
+[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6 |
+[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7 |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _edata |
+[0-9]+: [0-9a-f]+ +0 NOTYPE GLOBAL DEFAULT ABS _end |
/tlspic.sd
0,0 → 1,17
#source: tlspic1.s |
#source: tlspic2.s |
#as: |
#ld: -shared -melf32xtensa |
#objdump: -sj.text --stop-address=0x350 |
#target: xtensa*-*-linux* |
|
.*: +file format elf32-xtensa-.e |
|
Contents of section .text: |
0+2e0 0+ 0+ 0+ 0+ .* |
0+2f0 0+ 0+ 0+ 0+ .* |
0+300 0+ 0+ 0+ 0+ .* |
0+310 0+ 0+ 0+ 0+ .* |
0+320 0+ 0+ 0*200* 0*260* .* |
0+330 0*400* 0*470* 0*600* 0*650* .* |
0+340 0+ 0+ 0+ 0+ .* |
/tlspic.td
0,0 → 1,16
#source: tlspic1.s |
#source: tlspic2.s |
#as: |
#ld: -shared -melf32xtensa |
#objdump: -sj.tdata |
#target: xtensa*-*-linux* |
|
.*: +file format elf32-xtensa-.e |
|
Contents of section .tdata: |
*[0-9a-f]+ 0*110* 0*120* 0*130* 0*140* .* |
*[0-9a-f]+ 0*150* 0*160* 0*170* 0*180* .* |
*[0-9a-f]+ 0*410* 0*420* 0*430* 0*440* .* |
*[0-9a-f]+ 0*450* 0*460* 0*470* 0*480* .* |
*[0-9a-f]+ 0*9d0* 0*9e0* 0*9f0* 0*a00* .* |
*[0-9a-f]+ 0*a10* 0*a20* 0*a30* 0*a40* .* |
/lcall1.s
0,0 → 1,10
.global foo |
.text |
.align 4 |
label1: |
.literal .Lunused, 0xffffffff |
entry a5,16 |
.begin longcalls |
call4 foo |
.end longcalls |
nop |
/coalesce.exp
0,0 → 1,100
# Test literal coaslescing for Xtensa targets. |
# By David Heine, Tensilica, Inc. |
# Copyright 2002, 2003, 2005, 2007, 2008 |
# Free Software Foundation, Inc. |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
|
if ![istarget "xtensa*-*-*"] { |
return |
} |
|
set testname "COALESCE" |
|
set OBJDUMPFLAGS "-dr" |
|
# |
# default_ld_objdump |
# run objdump on a file |
# |
proc default_ld_objdump { objdump object outputfile } { |
global OBJDUMPFLAGS |
global objdump_output |
global host_triplet |
|
if {[which $objdump] == 0} then { |
perror "$objdump does not exist" |
return 0 |
} |
|
if ![info exists OBJDUMPFLAGS] { set OBJDUMPFLAGS "" } |
|
verbose -log "$objdump $OBJDUMPFLAGS $object >$outputfile" |
|
catch "exec $objdump $OBJDUMPFLAGS $object >$outputfile" exec_output |
set exec_output [prune_warnings $exec_output] |
if [string match "" $exec_output] then { |
return 1 |
} else { |
verbose -log "$exec_output" |
perror "$object: objdump failed" |
return 0 |
} |
} |
|
|
if ![ld_assemble $as $srcdir/$subdir/coalesce1.s tmpdir/coalesce1.o] { |
unresolved $testname |
return |
} |
if ![ld_assemble $as $srcdir/$subdir/coalesce2.s tmpdir/coalesce2.o] { |
unresolved $testname |
return |
} |
|
set object "tmpdir/coalesce" |
set outputfile "$object.txt" |
|
if ![ld_simple_link $ld $object "-T $srcdir/$subdir/coalesce.t tmpdir/coalesce1.o tmpdir/coalesce2.o"] { |
verbose -log "failure in ld" |
fail $testname |
return |
} |
|
if ![default_ld_objdump $objdump $object $outputfile ] { |
verbose -log "failure in objdump" |
fail $testname |
return |
} |
|
set file [open $outputfile r] |
set found 0 |
|
while { [gets $file line] != -1 } { |
# verbose "$line" 2 |
if [regexp "^0000000c <main>:" $line] { |
set found 1 |
} |
} |
close $file |
if $found { |
pass $testname |
} else { |
fail $testname |
} |
|
/lcall2.s
0,0 → 1,6
.global foo |
.align 4 |
foo: |
entry a5,16 |
nop |
ret |