diff options
Diffstat (limited to 'ld')
84 files changed, 3426 insertions, 9 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index e41fc13..4fb826d 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,17 @@ +2011-03-31 Bernd Schmidt <bernds@codesourcery.com> + + * emulparams/elf32_tic6x_le.sh (BIG_OUTPUT_FORMAT, EXTRA_EM_FILE, + GENERATE_SHLIB_SCRIPT): New defines. + (TEXT_START_ADDR): Define differently depending on target. + (.got): Redefine to include "*(.dsbt)". + (SDATA_START_SYMBOLS): Remove, replace with + (OTHER_GOT_SYMBOLS): New. + (OTHER_BSS_SECTIONS): Define only for ELF targets. + * emultempl/tic6xdsbt.em: New file. + * gen-doc.texi: Set C6X. + * ld.texinfo: Likewise. + (Options specific to C6X uClinux targets): New section. + 2011-03-29 Alan Modra <amodra@gmail.com> PR ld/12613 diff --git a/ld/emulparams/elf32_tic6x_le.sh b/ld/emulparams/elf32_tic6x_le.sh index 7a78a2c..335bc0f 100644 --- a/ld/emulparams/elf32_tic6x_le.sh +++ b/ld/emulparams/elf32_tic6x_le.sh @@ -1,14 +1,29 @@ SCRIPT_NAME=elf TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf32-tic6x-le" +BIG_OUTPUT_FORMAT="elf32-tic6x-be" +EXTRA_EM_FILE=tic6xdsbt +GENERATE_SHLIB_SCRIPT=yes # This address is an arbitrary value expected to be suitable for # semihosting simulator use, but not on hardware where it is expected # to be overridden. -TEXT_START_ADDR=0x8000 +case ${target} in + *-elf) + TEXT_START_ADDR=0x8000 + ;; + *-uclinux) + TEXT_START_ADDR=0x0 + GOT=" +.got ${RELOCATING-0} : { + *(.dsbt) + *(.got.plt) *(.igot.plt) *(.got) *(.igot) +}" + ;; +esac MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=tic6x EXECUTABLE_SYMBOLS="EXTERN (__c6xabi_DSBT_BASE);" -SDATA_START_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);" +OTHER_GOT_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);" # ".bss" is near (small) BSS, ".far" is far (normal) BSS, ".const" is # far read-only data, ".rodata" is near read-only data. ".neardata" # is near (small) data, ".fardata" is (along with .data) far data. @@ -24,7 +39,9 @@ OTHER_READWRITE_SECTIONS=".fardata ${RELOCATING-0} : { *(.fardata${RELOCATING+ . OTHER_READWRITE_RELOC_SECTIONS=" .rel.fardata ${RELOCATING-0} : { *(.rel.fardata${RELOCATING+ .rel.fardata.*}) } .rela.fardata ${RELOCATING-0} : { *(.rela.fardata${RELOCATING+ .rela.fardata.*}) }" -OTHER_BSS_SECTIONS=" +case ${target} in + *-elf) + OTHER_BSS_SECTIONS=" .heap : { . = ALIGN(4); @@ -37,4 +54,6 @@ OTHER_BSS_SECTIONS=" . += 0x100000; _STACK_START = .; }" + ;; +esac ATTRS_SECTIONS='.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }' diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em new file mode 100644 index 0000000..875148e --- /dev/null +++ b/ld/emultempl/tic6xdsbt.em @@ -0,0 +1,105 @@ +# This shell script emits a C file. -*- C -*- +# Copyright 2011 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. +# + +# This file is sourced from elf32.em, and defines extra C6X DSBT specific +# features. +# +fragment <<EOF +#include "ldctor.h" +#include "elf32-tic6x.h" + +static struct elf32_tic6x_params params = +{ + 0, 64 +}; + +static int +is_tic6x_target (void) +{ + extern const bfd_target bfd_elf32_tic6x_le_vec; + extern const bfd_target bfd_elf32_tic6x_be_vec; + + return (link_info.output_bfd->xvec == &bfd_elf32_tic6x_le_vec + || link_info.output_bfd->xvec == &bfd_elf32_tic6x_be_vec); +} + +/* Pass params to backend. */ + +static void +tic6x_after_open (void) +{ + if (is_tic6x_target ()) + { + if (params.dsbt_index >= params.dsbt_size) + { + einfo (_("%P%F: invalid --dsbt-index %d, outside DSBT size.\n"), + params.dsbt_index); + } + elf32_tic6x_setup (&link_info, ¶ms); + } + + gld${EMULATION_NAME}_after_open (); +} +EOF + +# This code gets inserted into the generic elf32.sc linker script +# and allows us to define our own command line switches. +PARSE_AND_LIST_PROLOGUE=' +#define OPTION_DSBT_INDEX 300 +#define OPTION_DSBT_SIZE 301 +' + +PARSE_AND_LIST_LONGOPTS=' + {"dsbt-index", required_argument, NULL, OPTION_DSBT_INDEX}, + {"dsbt-size", required_argument, NULL, OPTION_DSBT_SIZE}, +' + +PARSE_AND_LIST_OPTIONS=' + fprintf (file, _(" --dsbt-index <index>\n")); + fprintf (file, _("\t\t\tUse this as the DSBT index for the output object\n")); + fprintf (file, _(" --dsbt-size <index>\n")); + fprintf (file, _("\t\t\tUse this as the number of entries in the DSBT table\n")); +' + +PARSE_AND_LIST_ARGS_CASES=' + case OPTION_DSBT_INDEX: + { + char *end; + params.dsbt_index = strtol (optarg, &end, 0); + if (*end == 0 + && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff) + break; + einfo (_("%P%F: invalid --dsbt-index %s\n"), optarg); + } + break; + case OPTION_DSBT_SIZE: + { + char *end; + params.dsbt_size = strtol (optarg, &end, 0); + if (*end == 0 + && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff) + break; + einfo (_("%P%F: invalid --dsbt-size %s\n"), optarg); + } + break; +' + +LDEMUL_AFTER_OPEN=tic6x_after_open diff --git a/ld/gen-doc.texi b/ld/gen-doc.texi index 7434edb..5a6bfd5 100644 --- a/ld/gen-doc.texi +++ b/ld/gen-doc.texi @@ -4,6 +4,7 @@ @c 2. Specific target machines @set ARM +@set C6X @set H8300 @set HPPA @set I960 diff --git a/ld/ld.texinfo b/ld/ld.texinfo index ed79923..800f0d4 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -22,6 +22,7 @@ @set UsesEnvVars @set GENERIC @set ARM +@set C6X @set H8300 @set HPPA @set I960 @@ -2612,6 +2613,35 @@ The image is Terminal Server aware. @c man end +@ifset C6X +@subsection Options specific to C6X uClinux targets + +@c man begin OPTIONS + +The C6X uClinux target uses a binary format called DSBT to support shared +libraries. Each shared library in the system needs to have a unique index; +all executables use an index of 0. + +@table @gcctabopt + +@kindex --dsbt-size +@item --dsbt-size @var{size} +This option sets the number of entires in the DSBT of the current executable +or shared library to @var{size}. The default is to create a table with 64 +entries. + +@kindex --dsbt-index +@item --dsbt-index @var{index} +This option sets the DSBT index of the current executable or shared library +to @var{index}. The default is 0, which is appropriate for generating +executables. If a shared library is generated with a DSBT index of 0, the +@code{R_C6000_DSBT_INDEX} relocs are copied into the output file. + +@end table + +@c man end +@end ifset + @ifset M68HC11 @subsection Options specific to Motorola 68HC11 and 68HC12 targets diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index f90788f..4d41d8c 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,87 @@ +2011-03-31 Bernd Schmidt <bernds@codesourcery.com> + + * ld-scripts/crossref.exp: Add CFLAGS for tic6x*-*-*. + * ld-elf/sec-to-seg.exp: Remove tic6x from list of targets defining + pagesize to 1. + * ld-tic6x/tic6x.exp: Add support for DSBT shared library/executable + linking tests. + * ld-tic6x/dsbt.ld: New linker script. + * ld-tic6x/dsbt-be.ld: New linker script. + * ld-tic6x/dsbt-overflow.ld: New linker script. + * ld-tic6x/dsbt-inrange.ld: New linker script. + * ld-tic6x/shlib-1.s: New test. + * ld-tic6x/shlib-2.s: New test. + * ld-tic6x/shlib-app-1r.s: New test. + * ld-tic6x/shlib-app-1.s: New test. + * ld-tic6x/shlib-1.sd: New test. + * ld-tic6x/shlib-1.dd: New test. + * ld-tic6x/shlib-app-1.rd: New test. + * ld-tic6x/shlib-app-1rb.rd: New test. + * ld-tic6x/shlib-app-1.sd: New test. + * ld-tic6x/static-app-1rb.od: New test. + * ld-tic6x/shlib-app-1.dd: New test. + * ld-tic6x/shlib-app-1rb.sd: New test. + * ld-tic6x/static-app-1b.od: New test. + * ld-tic6x/static-app-1r.od: New test. + * ld-tic6x/shlib-1rb.rd: New test. + * ld-tic6x/shlib-app-1rb.dd: New test. + * ld-tic6x/shlib-1rb.sd: New test. + * ld-tic6x/shlib-1rb.dd: New test. + * ld-tic6x/shlib-app-1b.od: New test. + * ld-tic6x/tic6x.exp: New test. + * ld-tic6x/static-app-1rb.rd: New test. + * ld-tic6x/shlib-app-1r.od: New test. + * ld-tic6x/static-app-1.od: New test. + * ld-tic6x/static-app-1b.rd: New test. + * ld-tic6x/static-app-1r.rd: New test. + * ld-tic6x/static-app-1rb.sd: New test. + * ld-tic6x/static-app-1b.sd: New test. + * ld-tic6x/static-app-1rb.dd: New test. + * ld-tic6x/static-app-1r.sd: New test. + * ld-tic6x/static-app-1b.dd: New test. + * ld-tic6x/shlib-1b.rd: New test. + * ld-tic6x/static-app-1r.dd: New test. + * ld-tic6x/shlib-app-1b.rd: New test. + * ld-tic6x/shlib-1r.rd: New test. + * ld-tic6x/shlib-app-1r.rd: New test. + * ld-tic6x/shlib-1b.sd: New test. + * ld-tic6x/static-app-1.rd: New test. + * ld-tic6x/shlib-app-1b.sd: New test. + * ld-tic6x/shlib-1r.sd: New test. + * ld-tic6x/shlib-1b.dd: New test. + * ld-tic6x/shlib-app-1r.sd: New test. + * ld-tic6x/shlib-app-1b.dd: New test. + * ld-tic6x/shlib-1r.dd: New test. + * ld-tic6x/static-app-1.sd: New test. + * ld-tic6x/shlib-app-1r.dd: New test. + * ld-tic6x/static-app-1.dd: New test. + * ld-tic6x/shlib-noindex.rd: New test. + * ld-tic6x/shlib-noindex.dd: New test. + * ld-tic6x/shlib-noindex.sd: New test. + * ld-tic6x/got-reloc-local-1.s: New test. + * ld-tic6x/got-reloc-local-2.s: New test. + * ld-tic6x/got-reloc-local-r.d: New test. + * ld-tic6x/got-reloc-global.s: New test. + * ld-tic6x/got-reloc-global-addend-1.d: New test. + * ld-tic6x/got-reloc-global-addend-1.s: New test. + * ld-tic6x/got-reloc-global-addend-2.d: New test. + * ld-tic6x/got-reloc-inrange.d: New test. + * ld-tic6x/got-reloc-overflow.d: New test. + * ld-tic6x/got-reloc-global-addend-2.s: New test. + * ld-tic6x/dsbt-index-error.d: New test. + * ld-tic6x/dsbt-index.d: New test. + * ld-tic6x/dsbt-index.s: New test. + * ld-tic6x/shlib-app-1.od: New test. + * ld-tic6x/shlib-app-1rb.od: New test. + * ld-tic6x/shlib-1.rd: New test. + * ld-tic6x/weak.d: New test. + * ld-tic6x/weak-be.d: New test. + * ld-tic6x/weak.s: New test. + * ld-tic6x/weak-data.d: New test. + * ld-tic6x/common.d: New test. + * ld-tic6x/common.ld: New test. + * ld-tic6x/common.s: New test. + 2011-03-30 Richard Henderson <rth@redhat.com> * ld-elf/elf.exp: Force 32-bit start address for alpha. diff --git a/ld/testsuite/ld-elf/sec-to-seg.exp b/ld/testsuite/ld-elf/sec-to-seg.exp index cd32e68..43c5ab1 100644 --- a/ld/testsuite/ld-elf/sec-to-seg.exp +++ b/ld/testsuite/ld-elf/sec-to-seg.exp @@ -87,7 +87,6 @@ if { [istarget avr-*-*] || [istarget moxie-*-*] || [istarget msp430-*-*] || [istarget mt-*-*] - || [istarget tic6x-*-*] } { set B_test_same_seg 0 } else { diff --git a/ld/testsuite/ld-scripts/crossref.exp b/ld/testsuite/ld-scripts/crossref.exp index 98178de..061b5aa 100644 --- a/ld/testsuite/ld-scripts/crossref.exp +++ b/ld/testsuite/ld-scripts/crossref.exp @@ -51,6 +51,12 @@ if [istarget mep*-*-elf] { set CFLAGS "-mtiny=0" } +# The .dsbt section and __c6xabi_DSBT_BASE are not defined in our test +# linker scripts. +if [istarget tic6x*-*-*] { + set CFLAGS "-mno-dsbt -msdata=none" +} + if { ![ld_compile $CC "$srcdir/$subdir/cross1.c" tmpdir/cross1.o] \ || ![ld_compile $CC "$srcdir/$subdir/cross2.c" tmpdir/cross2.o] } { unresolved $test1 diff --git a/ld/testsuite/ld-tic6x/common.d b/ld/testsuite/ld-tic6x/common.d new file mode 100644 index 0000000..68529f8 --- /dev/null +++ b/ld/testsuite/ld-tic6x/common.d @@ -0,0 +1,28 @@ +#name: C6X common symbols +#as: -mlittle-endian +#ld: -melf32_tic6x_le -Tcommon.ld +#source: common.s +#readelf: -Ss + +There are 6 section headers, starting at offset 0x7c: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.far NOBITS 00000080 000080 000008 00 WA 0 0 4 + \[ 2\] \.bss NOBITS 00000100 000080 000004 00 WA 0 0 4 + \[ 3\] \.shstrtab STRTAB 00000000 000054 000025 00 0 0 1 + \[ 4\] \.symtab SYMTAB 00000000 00016c 000050 10 5 3 4 + \[ 5\] \.strtab STRTAB 00000000 0001bc 000005 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Symbol table '\.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000080 0 SECTION LOCAL DEFAULT 1 + 2: 00000100 0 SECTION LOCAL DEFAULT 2 + 3: 00000100 4 OBJECT GLOBAL DEFAULT 2 x + 4: 00000080 8 OBJECT GLOBAL DEFAULT 1 y diff --git a/ld/testsuite/ld-tic6x/common.ld b/ld/testsuite/ld-tic6x/common.ld new file mode 100644 index 0000000..5597c3f --- /dev/null +++ b/ld/testsuite/ld-tic6x/common.ld @@ -0,0 +1,11 @@ +SECTIONS +{ + . = 0x80; + .far : { *(.far) *(COMMON) } + . = 0x100; + .bss : { *(.scommon) } + + . = 0x10000000; + .text : { *(.text*) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-tic6x/common.s b/ld/testsuite/ld-tic6x/common.s new file mode 100644 index 0000000..4743066 --- /dev/null +++ b/ld/testsuite/ld-tic6x/common.s @@ -0,0 +1,2 @@ + .scomm x,4,4 + .comm y,8,4 diff --git a/ld/testsuite/ld-tic6x/dsbt-be.ld b/ld/testsuite/ld-tic6x/dsbt-be.ld new file mode 100644 index 0000000..2a7795c --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt-be.ld @@ -0,0 +1,67 @@ +OUTPUT_FORMAT("elf32-tic6x-be", "elf32-tic6x-be", + "elf32-tic6x-be") +EXTERN (__c6xabi_DSBT_BASE); +SECTIONS +{ + PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS; + . = 0x8000; + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) } + .rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) } + .rel.rodata : { *(.rel.rodata .rel.rodata.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.fardata : { *(.rel.fardata .rel.fardata.*) } + .rela.fardata : { *(.rela.fardata .rela.fardata.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) } + .rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) } + .rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) } + .rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) } + .rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) } + .rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) } + .rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) } + .rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .data : { *(.data*) } + . = 0x10000000; + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .plt : { *(.plt) } + .text : { *(.text*) } + PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .); + .got : { *(.dsbt) *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + .neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) } + .rodata : { *(.rodata .rodata.*) } + .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) } + .far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) } + .c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-tic6x/dsbt-index-error.d b/ld/testsuite/ld-tic6x/dsbt-index-error.d new file mode 100644 index 0000000..5c9f96a --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt-index-error.d @@ -0,0 +1,5 @@ +#name: C6X invalid DSBT_INDEX +#as: -mlittle-endian +#ld: -melf32_tic6x_le -Tsbr.ld --dsbt-index 5 --dsbt-size 3 +#source: dsbt-index.s +#error: .*invalid --dsbt-index 5, outside DSBT size.* diff --git a/ld/testsuite/ld-tic6x/dsbt-index.d b/ld/testsuite/ld-tic6x/dsbt-index.d new file mode 100644 index 0000000..cc33c89 --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt-index.d @@ -0,0 +1,14 @@ +#name: C6X DSBT_INDEX reloc +#as: -mlittle-endian +#ld: -melf32_tic6x_le -Tsbr.ld --dsbt-index 5 +#source: dsbt-index.s +#objdump: -dr + +.*: *file format elf32-tic6x-le + + +Disassembly of section \.text: + +10000000 <[^>]*>: +10000000:[ \t]+0700056e[ \t]+ldw \.D2T2 \*\+b14\(20\),b14 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/dsbt-index.s b/ld/testsuite/ld-tic6x/dsbt-index.s new file mode 100644 index 0000000..16e3b76 --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt-index.s @@ -0,0 +1,3 @@ +.text +.nocmp + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 diff --git a/ld/testsuite/ld-tic6x/dsbt-inrange.ld b/ld/testsuite/ld-tic6x/dsbt-inrange.ld new file mode 100644 index 0000000..603f020 --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt-inrange.ld @@ -0,0 +1,68 @@ +EXTERN (__c6xabi_DSBT_BASE); +SECTIONS +{ + PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS; + . = 0x8000; + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) } + .rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) } + .rel.rodata : { *(.rel.rodata .rel.rodata.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.fardata : { *(.rel.fardata .rel.fardata.*) } + .rela.fardata : { *(.rela.fardata .rela.fardata.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) } + .rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) } + .rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) } + .rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) } + .rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) } + .rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) } + .rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) } + .rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .data : { *(.data*) } + . = 0x10000000; + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .plt : { *(.plt) } + .text : { *(.text*) } + . = 0x20000000; + PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .); + .dsbt : { *(.dsbt) } + . = 0x2001fff4; + .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + .neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) } + .rodata : { *(.rodata .rodata.*) } + .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) } + .far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) } + .c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-tic6x/dsbt-overflow.ld b/ld/testsuite/ld-tic6x/dsbt-overflow.ld new file mode 100644 index 0000000..3128a35 --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt-overflow.ld @@ -0,0 +1,68 @@ +EXTERN (__c6xabi_DSBT_BASE); +SECTIONS +{ + PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS; + . = 0x8000; + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) } + .rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) } + .rel.rodata : { *(.rel.rodata .rel.rodata.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.fardata : { *(.rel.fardata .rel.fardata.*) } + .rela.fardata : { *(.rela.fardata .rela.fardata.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) } + .rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) } + .rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) } + .rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) } + .rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) } + .rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) } + .rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) } + .rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .data : { *(.data*) } + . = 0x10000000; + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .plt : { *(.plt) } + .text : { *(.text*) } + . = 0x20000000; + PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .); + .dsbt : { *(.dsbt) } + . = 0x2001fff8; + .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + .neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) } + .rodata : { *(.rodata .rodata.*) } + .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) } + .far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) } + .c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-tic6x/dsbt.ld b/ld/testsuite/ld-tic6x/dsbt.ld new file mode 100644 index 0000000..fd41608 --- /dev/null +++ b/ld/testsuite/ld-tic6x/dsbt.ld @@ -0,0 +1,65 @@ +EXTERN (__c6xabi_DSBT_BASE); +SECTIONS +{ + PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0) + SIZEOF_HEADERS; + . = 0x8000; + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.const : { *(.rel.const .rel.const.* .rel.gnu.linkonce.r.*) } + .rela.const : { *(.rela.const .rela.const.* .rela.gnu.linkonce.r.*) } + .rel.rodata : { *(.rel.rodata .rel.rodata.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.fardata : { *(.rel.fardata .rel.fardata.*) } + .rela.fardata : { *(.rela.fardata .rela.fardata.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.neardata : { *(.rel.neardata .rel.neardata.* .rel.gnu.linkonce.s.*) } + .rela.neardata : { *(.rela.neardata .rela.neardata.* .rela.gnu.linkonce.s.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.sb.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.sb.*) } + .rel.neardata2 : { *(.rel.neardata2 .rel.neardata2.* .rel.gnu.linkonce.s2.*) } + .rela.neardata2 : { *(.rela.neardata2 .rela.neardata2.* .rela.gnu.linkonce.s2.*) } + .rel.bss2 : { *(.rel.bss2 .rel.bss2.* .rel.gnu.linkonce.sb2.*) } + .rela.bss2 : { *(.rela.bss2 .rela.bss2.* .rela.gnu.linkonce.sb2.*) } + .rel.far : { *(.rel.far .rel.far.* .rel.gnu.linkonce.b.*) } + .rela.far : { *(.rela.far .rela.far.* .rela.gnu.linkonce.b.*) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .data : { *(.data*) } + . = 0x10000000; + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .plt : { *(.plt) } + .text : { *(.text*) } + PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .); + .got : { *(.dsbt) *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + .neardata : { *(.neardata .neardata.* .gnu.linkonce.s.*) } + .rodata : { *(.rodata .rodata.*) } + .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.sb.*) *(.scommon) } + .far : { *(.dynfar) *(.far .far.* .gnu.linkonce.b.*) *(COMMON) } + .c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) } + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-tic6x/got-reloc-global-addend-1.d b/ld/testsuite/ld-tic6x/got-reloc-global-addend-1.d new file mode 100644 index 0000000..597e74d --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-global-addend-1.d @@ -0,0 +1,5 @@ +#name: C6X GOT relocations, addend +#as: -mlittle-endian -mdsbt +#ld: -melf32_tic6x_le -Tdsbt.ld --dsbt-index 4 -shared +#source: got-reloc-global-addend-1.s +#error: .*relocation R_C6000_SBR_GOT_U15_W with non-zero addend 4.* diff --git a/ld/testsuite/ld-tic6x/got-reloc-global-addend-1.s b/ld/testsuite/ld-tic6x/got-reloc-global-addend-1.s new file mode 100644 index 0000000..9b99805 --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-global-addend-1.s @@ -0,0 +1,11 @@ +.text +.nocmp + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + ldw .d2t1 *+B14($GOT(a)+4), A1 + + .global a + .section .neardata,"aw",@progbits + .align 2 + .type a, @object + .size a, 4 +a: diff --git a/ld/testsuite/ld-tic6x/got-reloc-global-addend-2.d b/ld/testsuite/ld-tic6x/got-reloc-global-addend-2.d new file mode 100644 index 0000000..44d6319 --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-global-addend-2.d @@ -0,0 +1,5 @@ +#name: C6X GOT relocations, addend +#as: -mlittle-endian -mdsbt +#ld: -melf32_tic6x_le -Tdsbt.ld --dsbt-index 4 -shared +#source: got-reloc-global-addend-2.s +#error: .*relocation R_C6000_SBR_GOT_L16_W with non-zero addend 4.* diff --git a/ld/testsuite/ld-tic6x/got-reloc-global-addend-2.s b/ld/testsuite/ld-tic6x/got-reloc-global-addend-2.s new file mode 100644 index 0000000..507cf84 --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-global-addend-2.s @@ -0,0 +1,11 @@ +.text +.nocmp + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + mvkl .s1 $DPR_GOT(a)+4, A1 + + .global a + .section .neardata,"aw",@progbits + .align 2 + .type a, @object + .size a, 4 +a: diff --git a/ld/testsuite/ld-tic6x/got-reloc-global.s b/ld/testsuite/ld-tic6x/got-reloc-global.s new file mode 100644 index 0000000..054c297 --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-global.s @@ -0,0 +1,11 @@ +.text +.nocmp + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + ldw .d2t1 *+B14($GOT(a)), A1 + + .global a + .section .neardata,"aw",@progbits + .align 2 + .type a, @object + .size a, 4 +a: diff --git a/ld/testsuite/ld-tic6x/got-reloc-inrange.d b/ld/testsuite/ld-tic6x/got-reloc-inrange.d new file mode 100644 index 0000000..e4fed04 --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-inrange.d @@ -0,0 +1,15 @@ +#name: C6X GOT relocations, no overflow +#as: -mlittle-endian -mdsbt +#ld: -melf32_tic6x_le -Tdsbt-inrange.ld --dsbt-index 4 -shared +#source: got-reloc-global.s +#objdump: -dr + +.*: *file format elf32-tic6x-le + + +Disassembly of section \.text: + +10000000 <[^>]*>: +10000000:[ \t]+0700046e[ \t]+ldw \.D2T2 \*\+b14\(16\),b14 +10000004:[ \t]+00ffff6c[ \t]+ldw \.D2T1 \*\+b14\(131068\),a1 +[ \t]+... diff --git a/ld/testsuite/ld-tic6x/got-reloc-local-1.s b/ld/testsuite/ld-tic6x/got-reloc-local-1.s new file mode 100644 index 0000000..bb3278e --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-local-1.s @@ -0,0 +1,8 @@ +.text +.nocmp + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + ldw .d2t1 *+B14($GOT(a)), A1 + +.data +a: + .word 0 diff --git a/ld/testsuite/ld-tic6x/got-reloc-local-2.s b/ld/testsuite/ld-tic6x/got-reloc-local-2.s new file mode 100644 index 0000000..81f651b --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-local-2.s @@ -0,0 +1,8 @@ +.text +.nocmp + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + ldw .d2t1 *+B14($GOT(b)), A1 + +.data +b: + .word 0 diff --git a/ld/testsuite/ld-tic6x/got-reloc-local-r.d b/ld/testsuite/ld-tic6x/got-reloc-local-r.d new file mode 100644 index 0000000..de13473 --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-local-r.d @@ -0,0 +1,23 @@ +#name: C6X GOT relocations, local symbols, -r +#as: -mlittle-endian +#ld: -r -melf32_tic6x_le +#source: got-reloc-local-1.s +#source: got-reloc-local-2.s +#objdump: -dr + +.*: *file format elf32-tic6x-le + + +Disassembly of section \.text: + +00000000 <\.text>: +[ ]*0:[ ]*0700006e[ ]*ldw \.D2T2 \*\+b14\(0\),b14 +[ ]*0:[ ]*R_C6000_DSBT_INDEX __c6xabi_DSBT_BASE +[ ]*4:[ ]*0080006c[ ]*ldw \.D2T1 \*\+b14\(0\),a1 +[ ]*4:[ ]*R_C6000_SBR_GOT_U15_W a + \.\.\. +[ ]*20:[ ]*0700006e[ ]*ldw \.D2T2 \*\+b14\(0\),b14 +[ ]*20: R_C6000_DSBT_INDEX __c6xabi_DSBT_BASE +[ ]*24:[ ]*0080006c[ ]*ldw \.D2T1 \*\+b14\(0\),a1 +[ ]*24:[ ]*R_C6000_SBR_GOT_U15_W b + \.\.\. diff --git a/ld/testsuite/ld-tic6x/got-reloc-overflow.d b/ld/testsuite/ld-tic6x/got-reloc-overflow.d new file mode 100644 index 0000000..12063ef --- /dev/null +++ b/ld/testsuite/ld-tic6x/got-reloc-overflow.d @@ -0,0 +1,5 @@ +#name: C6X GOT relocations, overflow +#as: -mlittle-endian -mdsbt +#ld: -melf32_tic6x_le -Tdsbt-overflow.ld --dsbt-index 4 -shared +#source: got-reloc-global.s +#error: .*relocation truncated to fit: R_C6000_SBR_GOT_U15_W.* diff --git a/ld/testsuite/ld-tic6x/shlib-1.dd b/ld/testsuite/ld-tic6x/shlib-1.dd new file mode 100644 index 0000000..d33887e --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1.dd @@ -0,0 +1,67 @@ + +tmpdir/libtest\.so: file format elf32-tic6x-le + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 + +10000050 <sub@plt>: +10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2 +10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0 +10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +1000005c:[ \t]*00002000[ \t]*nop 2 +10000060:[ \t]*00080362[ \t]*b \.S2 b2 +10000064:[ \t]*00008000[ \t]*nop 5 + \.\.\. + +Disassembly of section \.text: + +10000080 <sub1>: +10000080:[ \t]*000c0362[ \t]*b \.S2 b3 +10000084:[ \t]*00008000[ \t]*nop 5 + +10000088 <sub0>: +10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14 +10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt> +1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt> +100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1> +100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15 +100000b0:[ \t]*00004000[ \t]*nop 3 +100000b4:[ \t]*000c0362[ \t]*b \.S2 b3 +100000b8:[ \t]*00008000[ \t]*nop 5 +100000bc:[ \t]*00000000[ \t]*nop 1 + +100000c0 <sub>: +100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +100000cc:[ \t]*00006000[ \t]*nop 4 +100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +100000dc:[ \t]*000c0362[ \t]*b \.S2 b3 +100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6 +100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7 +100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8 +100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9 + \.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-1.rd b/ld/testsuite/ld-tic6x/shlib-1.rd new file mode 100644 index 0000000..a0232cd --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1.rd @@ -0,0 +1,123 @@ +There are 17 section headers, starting at offset 0x21c4: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4 + \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4 + \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4 + \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 + \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 + \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 + \[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4 + \[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4 + \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1 + \[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1 + \[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4 + \[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is DYN \(Shared object file\) +Entry point 0x10000080 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000 + DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x117c contains 16 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8118 + 0x00000006 \(SYMTAB\) 0x8048 + 0x0000000a \(STRSZ\) 37 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x70000000 \(C6000_DSBT_BASE\) 0x10000100 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x2 + 0x00000003 \(PLTGOT\) 0x1000010c + 0x00000002 \(PLTRELSZ\) 24 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x8140 + 0x00000008 \(RELASZ\) 84 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0 +1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0 +10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0 +1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0 +10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0 + +Symbol table '\.dynsym' contains 13 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 8 + 2: 10000080 0 SECTION LOCAL DEFAULT 9 + 3: 10000100 0 SECTION LOCAL DEFAULT 10 + 4: 10000128 0 SECTION LOCAL DEFAULT 11 + 5: 10000130 0 SECTION LOCAL DEFAULT 12 + 6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 00000000 0 NOTYPE WEAK DEFAULT UND b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008048 0 SECTION LOCAL DEFAULT 2 + 3: 00008118 0 SECTION LOCAL DEFAULT 3 + 4: 00008140 0 SECTION LOCAL DEFAULT 4 + 5: 00008164 0 SECTION LOCAL DEFAULT 5 + 6: 0000817c 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 10000020 0 SECTION LOCAL DEFAULT 8 + 9: 10000080 0 SECTION LOCAL DEFAULT 9 + 10: 10000100 0 SECTION LOCAL DEFAULT 10 + 11: 10000128 0 SECTION LOCAL DEFAULT 11 + 12: 10000130 0 SECTION LOCAL DEFAULT 12 + 13: 00000000 0 SECTION LOCAL DEFAULT 13 + 14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1 + 15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 16: 10000130 4 OBJECT LOCAL DEFAULT 12 c + 17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 19: 00000000 0 NOTYPE WEAK DEFAULT UND b + 20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 21: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub diff --git a/ld/testsuite/ld-tic6x/shlib-1.s b/ld/testsuite/ld-tic6x/shlib-1.s new file mode 100644 index 0000000..cb065a2 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1.s @@ -0,0 +1,44 @@ + .text + .nocmp + .align 2 + .hidden sub1 + .type sub1, @function +sub1: + ret .s2 B3 + nop 5 + + .global sub0 + .type sub0, @function +sub0: + sub .d2 B15, 16, B15 + stw .d2t2 B3, *+B15(12) + stw .d2t2 B14, *+B15(16) + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + call .s2 (sub) + call .s2 (sub0) + call .s2 (sub1) +.L2: + ldw .d2t2 *+B15(12), B3 + ldw .d2t2 *+B15(16), B14 + addk .s2 16, B15 + nop 3 + ret .s2 B3 + nop 5 + .size sub0, .-sub0 + + .global a + .section .neardata,"aw",@progbits + .align 2 + .type a, @object + .size a, 4 +a: + .long sub0 + .weak g1 + .global g2 + .type g2, @object + .size g2, 4 +g2: + .long g1 + + .hidden c + .scomm c,4,4 diff --git a/ld/testsuite/ld-tic6x/shlib-1.sd b/ld/testsuite/ld-tic6x/shlib-1.sd new file mode 100644 index 0000000..850e383 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1.sd @@ -0,0 +1,7 @@ + +tmpdir/libtest\.so: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*10000100 00000000 00000000 00000000 00000000 .* +[ \t]*10000110 00000000 20000010 20000010 00000000 .* +[ \t]*10000120 30010010 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-1b.dd b/ld/testsuite/ld-tic6x/shlib-1b.dd new file mode 100644 index 0000000..658da73 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1b.dd @@ -0,0 +1,67 @@ + +tmpdir/libtestb\.so: file format elf32-tic6x-be + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 + +10000050 <sub@plt>: +10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2 +10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0 +10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +1000005c:[ \t]*00002000[ \t]*nop 2 +10000060:[ \t]*00080362[ \t]*b \.S2 b2 +10000064:[ \t]*00008000[ \t]*nop 5 + \.\.\. + +Disassembly of section \.text: + +10000080 <sub1>: +10000080:[ \t]*000c0362[ \t]*b \.S2 b3 +10000084:[ \t]*00008000[ \t]*nop 5 + +10000088 <sub0>: +10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14 +10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt> +1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt> +100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1> +100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15 +100000b0:[ \t]*00004000[ \t]*nop 3 +100000b4:[ \t]*000c0362[ \t]*b \.S2 b3 +100000b8:[ \t]*00008000[ \t]*nop 5 +100000bc:[ \t]*00000000[ \t]*nop 1 + +100000c0 <sub>: +100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +100000cc:[ \t]*00006000[ \t]*nop 4 +100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +100000dc:[ \t]*000c0362[ \t]*b \.S2 b3 +100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6 +100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7 +100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8 +100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9 + \.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-1b.rd b/ld/testsuite/ld-tic6x/shlib-1b.rd new file mode 100644 index 0000000..a0232cd --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1b.rd @@ -0,0 +1,123 @@ +There are 17 section headers, starting at offset 0x21c4: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4 + \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4 + \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4 + \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 + \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 + \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 + \[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4 + \[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4 + \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1 + \[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1 + \[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4 + \[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is DYN \(Shared object file\) +Entry point 0x10000080 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000 + DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x117c contains 16 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8118 + 0x00000006 \(SYMTAB\) 0x8048 + 0x0000000a \(STRSZ\) 37 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x70000000 \(C6000_DSBT_BASE\) 0x10000100 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x2 + 0x00000003 \(PLTGOT\) 0x1000010c + 0x00000002 \(PLTRELSZ\) 24 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x8140 + 0x00000008 \(RELASZ\) 84 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0 +1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0 +10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0 +1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0 +10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0 + +Symbol table '\.dynsym' contains 13 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 8 + 2: 10000080 0 SECTION LOCAL DEFAULT 9 + 3: 10000100 0 SECTION LOCAL DEFAULT 10 + 4: 10000128 0 SECTION LOCAL DEFAULT 11 + 5: 10000130 0 SECTION LOCAL DEFAULT 12 + 6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 00000000 0 NOTYPE WEAK DEFAULT UND b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008048 0 SECTION LOCAL DEFAULT 2 + 3: 00008118 0 SECTION LOCAL DEFAULT 3 + 4: 00008140 0 SECTION LOCAL DEFAULT 4 + 5: 00008164 0 SECTION LOCAL DEFAULT 5 + 6: 0000817c 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 10000020 0 SECTION LOCAL DEFAULT 8 + 9: 10000080 0 SECTION LOCAL DEFAULT 9 + 10: 10000100 0 SECTION LOCAL DEFAULT 10 + 11: 10000128 0 SECTION LOCAL DEFAULT 11 + 12: 10000130 0 SECTION LOCAL DEFAULT 12 + 13: 00000000 0 SECTION LOCAL DEFAULT 13 + 14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1 + 15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 16: 10000130 4 OBJECT LOCAL DEFAULT 12 c + 17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 19: 00000000 0 NOTYPE WEAK DEFAULT UND b + 20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 21: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub diff --git a/ld/testsuite/ld-tic6x/shlib-1b.sd b/ld/testsuite/ld-tic6x/shlib-1b.sd new file mode 100644 index 0000000..e1ee8ed --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1b.sd @@ -0,0 +1,7 @@ + +tmpdir/libtestb\.so: file format elf32-tic6x-be + +Contents of section \.got: +[ \t]*10000100 00000000 00000000 00000000 00000000 .* +[ \t]*10000110 00000000 10000020 10000020 00000000 .* +[ \t]*10000120 10000130 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-1r.dd b/ld/testsuite/ld-tic6x/shlib-1r.dd new file mode 100644 index 0000000..e20eb74 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1r.dd @@ -0,0 +1,67 @@ + +tmpdir/libtestr\.so: file format elf32-tic6x-le + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 + +10000050 <sub@plt>: +10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2 +10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0 +10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +1000005c:[ \t]*00002000[ \t]*nop 2 +10000060:[ \t]*00080362[ \t]*b \.S2 b2 +10000064:[ \t]*00008000[ \t]*nop 5 + \.\.\. + +Disassembly of section \.text: + +10000080 <sub1>: +10000080:[ \t]*000c0362[ \t]*b \.S2 b3 +10000084:[ \t]*00008000[ \t]*nop 5 + +10000088 <sub0>: +10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14 +10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt> +1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt> +100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1> +100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15 +100000b0:[ \t]*00004000[ \t]*nop 3 +100000b4:[ \t]*000c0362[ \t]*b \.S2 b3 +100000b8:[ \t]*00008000[ \t]*nop 5 +100000bc:[ \t]*00000000[ \t]*nop 1 + +100000c0 <sub>: +100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +100000cc:[ \t]*00006000[ \t]*nop 4 +100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +100000dc:[ \t]*000c0362[ \t]*b \.S2 b3 +100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6 +100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7 +100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8 +100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9 + \.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-1r.rd b/ld/testsuite/ld-tic6x/shlib-1r.rd new file mode 100644 index 0000000..a0232cd --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1r.rd @@ -0,0 +1,123 @@ +There are 17 section headers, starting at offset 0x21c4: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4 + \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4 + \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4 + \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 + \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 + \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 + \[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4 + \[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4 + \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1 + \[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1 + \[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4 + \[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is DYN \(Shared object file\) +Entry point 0x10000080 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000 + DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x117c contains 16 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8118 + 0x00000006 \(SYMTAB\) 0x8048 + 0x0000000a \(STRSZ\) 37 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x70000000 \(C6000_DSBT_BASE\) 0x10000100 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x2 + 0x00000003 \(PLTGOT\) 0x1000010c + 0x00000002 \(PLTRELSZ\) 24 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x8140 + 0x00000008 \(RELASZ\) 84 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0 +1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0 +10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0 +1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0 +10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0 + +Symbol table '\.dynsym' contains 13 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 8 + 2: 10000080 0 SECTION LOCAL DEFAULT 9 + 3: 10000100 0 SECTION LOCAL DEFAULT 10 + 4: 10000128 0 SECTION LOCAL DEFAULT 11 + 5: 10000130 0 SECTION LOCAL DEFAULT 12 + 6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 00000000 0 NOTYPE WEAK DEFAULT UND b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008048 0 SECTION LOCAL DEFAULT 2 + 3: 00008118 0 SECTION LOCAL DEFAULT 3 + 4: 00008140 0 SECTION LOCAL DEFAULT 4 + 5: 00008164 0 SECTION LOCAL DEFAULT 5 + 6: 0000817c 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 10000020 0 SECTION LOCAL DEFAULT 8 + 9: 10000080 0 SECTION LOCAL DEFAULT 9 + 10: 10000100 0 SECTION LOCAL DEFAULT 10 + 11: 10000128 0 SECTION LOCAL DEFAULT 11 + 12: 10000130 0 SECTION LOCAL DEFAULT 12 + 13: 00000000 0 SECTION LOCAL DEFAULT 13 + 14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1 + 15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 16: 10000130 4 OBJECT LOCAL DEFAULT 12 c + 17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 19: 00000000 0 NOTYPE WEAK DEFAULT UND b + 20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 21: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub diff --git a/ld/testsuite/ld-tic6x/shlib-1r.sd b/ld/testsuite/ld-tic6x/shlib-1r.sd new file mode 100644 index 0000000..3b3b839 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1r.sd @@ -0,0 +1,7 @@ + +tmpdir/libtestr\.so: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*10000100 00000000 00000000 00000000 00000000 .* +[ \t]*10000110 00000000 20000010 20000010 00000000 .* +[ \t]*10000120 30010010 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.dd b/ld/testsuite/ld-tic6x/shlib-1rb.dd new file mode 100644 index 0000000..ee1a607 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1rb.dd @@ -0,0 +1,67 @@ + +tmpdir/libtestrb\.so: file format elf32-tic6x-be + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 + +10000050 <sub@plt>: +10000050:[ \t]*0100066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b2 +10000054:[ \t]*0000062a[ \t]*mvk \.S2 12,b0 +10000058:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +1000005c:[ \t]*00002000[ \t]*nop 2 +10000060:[ \t]*00080362[ \t]*b \.S2 b2 +10000064:[ \t]*00008000[ \t]*nop 5 + \.\.\. + +Disassembly of section \.text: + +10000080 <sub1>: +10000080:[ \t]*000c0362[ \t]*b \.S2 b3 +10000084:[ \t]*00008000[ \t]*nop 5 + +10000088 <sub0>: +10000088:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000008c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000090:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14 +10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt> +1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt> +100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1> +100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15 +100000b0:[ \t]*00004000[ \t]*nop 3 +100000b4:[ \t]*000c0362[ \t]*b \.S2 b3 +100000b8:[ \t]*00008000[ \t]*nop 5 +100000bc:[ \t]*00000000[ \t]*nop 1 + +100000c0 <sub>: +100000c0:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +100000c4:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +100000c8:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +100000cc:[ \t]*00006000[ \t]*nop 4 +100000d0:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +100000d4:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +100000d8:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +100000dc:[ \t]*000c0362[ \t]*b \.S2 b3 +100000e0:[ \t]*0300096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b6 +100000e4:[ \t]*0380076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b7 +100000e8:[ \t]*0400086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b8 +100000ec:[ \t]*04800c6e[ \t]*ldw \.D2T2 \*\+b14\(48\),b9 + \.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.rd b/ld/testsuite/ld-tic6x/shlib-1rb.rd new file mode 100644 index 0000000..a0232cd --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1rb.rd @@ -0,0 +1,123 @@ +There are 17 section headers, starting at offset 0x21c4: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 00008140 001140 000024 0c A 2 10 4 + \[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c A 2 11 4 + \[ 6\] \.dynamic DYNAMIC 0000817c 00117c 0000a8 08 WA 3 0 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 8 4 + \[ 8\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 + \[ 9\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 + \[10\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 + \[11\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4 + \[12\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4 + \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1 + \[14\] \.shstrtab STRTAB 00000000 002149 00007b 00 0 0 1 + \[15\] \.symtab SYMTAB 00000000 00246c 0001a0 10 16 19 4 + \[16\] \.strtab STRTAB 00000000 00260c 000059 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is DYN \(Shared object file\) +Entry point 0x10000080 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00224 0x00224 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000 + DYNAMIC 0x00117c 0x0000817c 0x0000817c 0x000a8 0x000a8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x117c contains 16 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8118 + 0x00000006 \(SYMTAB\) 0x8048 + 0x0000000a \(STRSZ\) 37 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x70000000 \(C6000_DSBT_BASE\) 0x10000100 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x2 + 0x00000003 \(PLTGOT\) 0x1000010c + 0x00000002 \(PLTRELSZ\) 24 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x8140 + 0x00000008 \(RELASZ\) 84 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x1140 contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0 +1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0 +10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1164 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0 +1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0 +10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0 + +Symbol table '\.dynsym' contains 13 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 8 + 2: 10000080 0 SECTION LOCAL DEFAULT 9 + 3: 10000100 0 SECTION LOCAL DEFAULT 10 + 4: 10000128 0 SECTION LOCAL DEFAULT 11 + 5: 10000130 0 SECTION LOCAL DEFAULT 12 + 6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 00000000 0 NOTYPE WEAK DEFAULT UND b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 10: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 11: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 12: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008048 0 SECTION LOCAL DEFAULT 2 + 3: 00008118 0 SECTION LOCAL DEFAULT 3 + 4: 00008140 0 SECTION LOCAL DEFAULT 4 + 5: 00008164 0 SECTION LOCAL DEFAULT 5 + 6: 0000817c 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 10000020 0 SECTION LOCAL DEFAULT 8 + 9: 10000080 0 SECTION LOCAL DEFAULT 9 + 10: 10000100 0 SECTION LOCAL DEFAULT 10 + 11: 10000128 0 SECTION LOCAL DEFAULT 11 + 12: 10000130 0 SECTION LOCAL DEFAULT 12 + 13: 00000000 0 SECTION LOCAL DEFAULT 13 + 14: 10000080 0 FUNC LOCAL HIDDEN 9 sub1 + 15: 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 16: 10000130 4 OBJECT LOCAL DEFAULT 12 c + 17: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 18: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 19: 00000000 0 NOTYPE WEAK DEFAULT UND b + 20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 21: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 22: 1000012c 4 OBJECT GLOBAL DEFAULT 11 g2 + 23: 10000088 52 FUNC GLOBAL DEFAULT 9 sub0 + 24: 10000128 4 OBJECT GLOBAL DEFAULT 11 a + 25: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.sd b/ld/testsuite/ld-tic6x/shlib-1rb.sd new file mode 100644 index 0000000..5575ff5 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-1rb.sd @@ -0,0 +1,7 @@ + +tmpdir/libtestrb\.so: file format elf32-tic6x-be + +Contents of section \.got: +[ \t]*10000100 00000000 00000000 00000000 00000000 .* +[ \t]*10000110 00000000 10000020 10000020 00000000 .* +[ \t]*10000120 10000130 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-2.s b/ld/testsuite/ld-tic6x/shlib-2.s new file mode 100644 index 0000000..3d786dd --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-2.s @@ -0,0 +1,23 @@ + .weak a + .weak b + + .text + .nocmp + .align 2 + .global sub + .type sub, @function +sub: + sub .d2 B15, 16, B15 + stw .d2t1 A4, *+B15(12) + ldw .d2t1 *+B15(12), A0 + nop 4 + add .d1 A0, 10, A0 + mv .d1 A0, A4 + add .d2 B15, 16, B15 + ret .s2 B3 + ldw .d2t2 *+B14($GOT(a)), B6 + ldw .d2t2 *+B14($GOT(b)), B7 + ldw .d2t2 *+B14($GOT(c)), B8 + ldw .d2t2 *+B14(c), B9 + nop 1 + .size sub, .-sub diff --git a/ld/testsuite/ld-tic6x/shlib-app-1.dd b/ld/testsuite/ld-tic6x/shlib-app-1.dd new file mode 100644 index 0000000..411d47f --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1.dd @@ -0,0 +1,40 @@ + +tmpdir/shlib-dynapp-1: file format elf32-tic6x-le + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 +[ \t]*\.\.\. + +Disassembly of section \.text: + +10000060 <fish>: +10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3 +10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt> +1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3 +10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish> +10000074:[ \t]*02000b6e[ \t]*ldw \.D2T2 \*\+b14\(44\),b4 +10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5 +1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6 +10000084:[ \t]*020003a8[ \t]*mvk \.S1 7,a4 +10000088:[ \t]*02000068[ \t]*mvkh \.S1 0,a4 +1000008c:[ \t]*02800328[ \t]*mvk \.S1 6,a5 +10000090:[ \t]*02800068[ \t]*mvkh \.S1 0,a5 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-app-1.od b/ld/testsuite/ld-tic6x/shlib-app-1.od new file mode 100644 index 0000000..f2f5cab --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1.od @@ -0,0 +1,13 @@ + +tmpdir/shlib-dynapp-1: file format elf32-tic6x-le + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000b8 R_C6000_ABS32 b +100000bc R_C6000_ABS32 a +100000c4 R_C6000_ABS32 g1 +100000c8 R_C6000_ABS32 g2 +100000cc R_C6000_COPY a +100000b4 R_C6000_JUMP_SLOT sub0 + + diff --git a/ld/testsuite/ld-tic6x/shlib-app-1.rd b/ld/testsuite/ld-tic6x/shlib-app-1.rd new file mode 100644 index 0000000..e1809af --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1.rd @@ -0,0 +1,127 @@ +There are 18 section headers, starting at offset 0x2168: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000044 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008104 001104 000035 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 0000813c 00113c 000018 0c A 2 11 4 + \[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c A 2 12 4 + \[ 6\] \.rela\.bss RELA 0000816c 00116c 00000c 0c A 2 13 4 + \[ 7\] \.dynamic DYNAMIC 00008178 001178 0000b8 08 WA 3 0 4 + \[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 9 4 + \[ 9\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 + \[10\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 + \[11\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 + \[12\] \.neardata PROGBITS 100000c0 0020c0 00000c 00 WA 0 0 4 + \[13\] \.bss NOBITS 100000cc 0020cc 000004 00 WA 0 0 4 + \[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020cc 000019 00 0 0 1 + \[15\] \.shstrtab STRTAB 00000000 0020e5 000080 00 0 0 1 + \[16\] \.symtab SYMTAB 00000000 002438 0001a0 10 17 20 4 + \[17\] \.strtab STRTAB 00000000 0025d8 000055 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000060 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00230 0x00230 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000cc 0x000d0 RWE 0x1000 + DYNAMIC 0x001178 0x00008178 0x00008178 0x000b8 0x000b8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.rela\.bss \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1178 contains 18 entries: + Tag Type Name/Value + 0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtest\.so\] + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8104 + 0x00000006 \(SYMTAB\) 0x8044 + 0x0000000a \(STRSZ\) 53 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000a0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000003 \(PLTGOT\) 0x100000ac + 0x00000002 \(PLTRELSZ\) 12 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x813c + 0x00000008 \(RELASZ\) 72 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x113c contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0 +100000bc 00000b01 R_C6000_ABS32 100000cc a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1154 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000c4 00000801 R_C6000_ABS32 00000000 g1 \+ 0 +100000c8 00000901 R_C6000_ABS32 00000000 g2 \+ 0 + +Relocation section '\.rela\.bss' at offset 0x116c contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000cc 00000b1a R_C6000_COPY 100000cc a \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b4 00000a1b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0 + +Symbol table '\.dynsym' contains 12 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 9 + 2: 10000060 0 SECTION LOCAL DEFAULT 10 + 3: 100000a0 0 SECTION LOCAL DEFAULT 11 + 4: 100000c0 0 SECTION LOCAL DEFAULT 12 + 5: 100000cc 0 SECTION LOCAL DEFAULT 13 + 6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 00000000 0 OBJECT WEAK DEFAULT UND g2 + 10: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 11: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008044 0 SECTION LOCAL DEFAULT 2 + 3: 00008104 0 SECTION LOCAL DEFAULT 3 + 4: 0000813c 0 SECTION LOCAL DEFAULT 4 + 5: 00008154 0 SECTION LOCAL DEFAULT 5 + 6: 0000816c 0 SECTION LOCAL DEFAULT 6 + 7: 00008178 0 SECTION LOCAL DEFAULT 7 + 8: 10000000 0 SECTION LOCAL DEFAULT 8 + 9: 10000020 0 SECTION LOCAL DEFAULT 9 + 10: 10000060 0 SECTION LOCAL DEFAULT 10 + 11: 100000a0 0 SECTION LOCAL DEFAULT 11 + 12: 100000c0 0 SECTION LOCAL DEFAULT 12 + 13: 100000cc 0 SECTION LOCAL DEFAULT 13 + 14: 00000000 0 SECTION LOCAL DEFAULT 14 + 15: 10000060 0 NOTYPE LOCAL DEFAULT 10 fish + 16: 100000c4 8 OBJECT LOCAL DEFAULT 12 w + 17: 00008178 0 OBJECT LOCAL DEFAULT 7 _DYNAMIC + 18: 100000ac 0 OBJECT LOCAL DEFAULT 11 _GLOBAL_OFFSET_TABLE_ + 19: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 20: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b + 21: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 22: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 23: 00000000 0 OBJECT WEAK DEFAULT UND g2 + 24: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 25: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a diff --git a/ld/testsuite/ld-tic6x/shlib-app-1.s b/ld/testsuite/ld-tic6x/shlib-app-1.s new file mode 100644 index 0000000..fe254bb --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1.s @@ -0,0 +1,31 @@ + .global a + .text + .nocmp +fish: + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + callp .s2 sub0, B3 + b .s2 sub0 + callp .s2 fish, B3 + b .s2 fish + ldw .d2t2 *+B14(a), B4 + ldw .d2t2 *+B14(b), B5 + ldw .d2t2 *+B14($GOT(a)), B6 + ldw .d2t2 *+B14($GOT(b)), B6 + mvkl .s1 $DPR_GOT(a), A4 + mvkh .s1 $DPR_GOT(a), A4 + mvkl .s1 $DPR_GOT(b), A5 + mvkh .s1 $DPR_GOT(b), A5 + .global b + .section .neardata,"aw",@progbits + .align 2 + .type b, @object + .size b, 4 +b: + .long 0x12345678 + .weak g1 + .weak g2 + .type w, @object + .size w, 8 +w: + .long g1 + .long g2 diff --git a/ld/testsuite/ld-tic6x/shlib-app-1.sd b/ld/testsuite/ld-tic6x/shlib-app-1.sd new file mode 100644 index 0000000..4ed3c75 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1.sd @@ -0,0 +1,6 @@ + +tmpdir/shlib-dynapp-1: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*100000a0 00000000 00000000 00000000 00000000 .* +[ \t]*100000b0 00000000 20000010 00000000 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-app-1b.dd b/ld/testsuite/ld-tic6x/shlib-app-1b.dd new file mode 100644 index 0000000..5312ff8 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1b.dd @@ -0,0 +1,40 @@ + +tmpdir/shlib-dynapp-1b: file format elf32-tic6x-be + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 +[ \t]*\.\.\. + +Disassembly of section \.text: + +10000060 <fish>: +10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3 +10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt> +1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3 +10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish> +10000074:[ \t]*02000b6e[ \t]*ldw \.D2T2 \*\+b14\(44\),b4 +10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5 +1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6 +10000084:[ \t]*020003a8[ \t]*mvk \.S1 7,a4 +10000088:[ \t]*02000068[ \t]*mvkh \.S1 0,a4 +1000008c:[ \t]*02800328[ \t]*mvk \.S1 6,a5 +10000090:[ \t]*02800068[ \t]*mvkh \.S1 0,a5 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-app-1b.od b/ld/testsuite/ld-tic6x/shlib-app-1b.od new file mode 100644 index 0000000..4a9c60b --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1b.od @@ -0,0 +1,13 @@ + +tmpdir/shlib-dynapp-1b: file format elf32-tic6x-be + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000b8 R_C6000_ABS32 b +100000bc R_C6000_ABS32 a +100000c4 R_C6000_ABS32 g1 +100000c8 R_C6000_ABS32 g2 +100000cc R_C6000_COPY a +100000b4 R_C6000_JUMP_SLOT sub0 + + diff --git a/ld/testsuite/ld-tic6x/shlib-app-1b.rd b/ld/testsuite/ld-tic6x/shlib-app-1b.rd new file mode 100644 index 0000000..95547b0 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1b.rd @@ -0,0 +1,127 @@ +There are 18 section headers, starting at offset 0x2168: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000044 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008104 001104 000036 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 0000813c 00113c 000018 0c A 2 11 4 + \[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c A 2 12 4 + \[ 6\] \.rela\.bss RELA 0000816c 00116c 00000c 0c A 2 13 4 + \[ 7\] \.dynamic DYNAMIC 00008178 001178 0000b8 08 WA 3 0 4 + \[ 8\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 9 4 + \[ 9\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 + \[10\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 + \[11\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 + \[12\] \.neardata PROGBITS 100000c0 0020c0 00000c 00 WA 0 0 4 + \[13\] \.bss NOBITS 100000cc 0020cc 000004 00 WA 0 0 4 + \[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020cc 000019 00 0 0 1 + \[15\] \.shstrtab STRTAB 00000000 0020e5 000080 00 0 0 1 + \[16\] \.symtab SYMTAB 00000000 002438 0001a0 10 17 20 4 + \[17\] \.strtab STRTAB 00000000 0025d8 000055 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000060 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00230 0x00230 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000cc 0x000d0 RWE 0x1000 + DYNAMIC 0x001178 0x00008178 0x00008178 0x000b8 0x000b8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.rela\.bss \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1178 contains 18 entries: + Tag Type Name/Value + 0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtestb\.so\] + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8104 + 0x00000006 \(SYMTAB\) 0x8044 + 0x0000000a \(STRSZ\) 54 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000a0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000003 \(PLTGOT\) 0x100000ac + 0x00000002 \(PLTRELSZ\) 12 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x813c + 0x00000008 \(RELASZ\) 72 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x113c contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0 +100000bc 00000b01 R_C6000_ABS32 100000cc a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1154 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000c4 00000801 R_C6000_ABS32 00000000 g1 \+ 0 +100000c8 00000901 R_C6000_ABS32 00000000 g2 \+ 0 + +Relocation section '\.rela\.bss' at offset 0x116c contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000cc 00000b1a R_C6000_COPY 100000cc a \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b4 00000a1b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0 + +Symbol table '\.dynsym' contains 12 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 9 + 2: 10000060 0 SECTION LOCAL DEFAULT 10 + 3: 100000a0 0 SECTION LOCAL DEFAULT 11 + 4: 100000c0 0 SECTION LOCAL DEFAULT 12 + 5: 100000cc 0 SECTION LOCAL DEFAULT 13 + 6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 00000000 0 OBJECT WEAK DEFAULT UND g2 + 10: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 11: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008044 0 SECTION LOCAL DEFAULT 2 + 3: 00008104 0 SECTION LOCAL DEFAULT 3 + 4: 0000813c 0 SECTION LOCAL DEFAULT 4 + 5: 00008154 0 SECTION LOCAL DEFAULT 5 + 6: 0000816c 0 SECTION LOCAL DEFAULT 6 + 7: 00008178 0 SECTION LOCAL DEFAULT 7 + 8: 10000000 0 SECTION LOCAL DEFAULT 8 + 9: 10000020 0 SECTION LOCAL DEFAULT 9 + 10: 10000060 0 SECTION LOCAL DEFAULT 10 + 11: 100000a0 0 SECTION LOCAL DEFAULT 11 + 12: 100000c0 0 SECTION LOCAL DEFAULT 12 + 13: 100000cc 0 SECTION LOCAL DEFAULT 13 + 14: 00000000 0 SECTION LOCAL DEFAULT 14 + 15: 10000060 0 NOTYPE LOCAL DEFAULT 10 fish + 16: 100000c4 8 OBJECT LOCAL DEFAULT 12 w + 17: 00008178 0 OBJECT LOCAL DEFAULT 7 _DYNAMIC + 18: 100000ac 0 OBJECT LOCAL DEFAULT 11 _GLOBAL_OFFSET_TABLE_ + 19: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 20: 100000c0 4 OBJECT GLOBAL DEFAULT 12 b + 21: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 22: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 23: 00000000 0 OBJECT WEAK DEFAULT UND g2 + 24: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 25: 100000cc 4 OBJECT GLOBAL DEFAULT 13 a diff --git a/ld/testsuite/ld-tic6x/shlib-app-1b.sd b/ld/testsuite/ld-tic6x/shlib-app-1b.sd new file mode 100644 index 0000000..1abc406 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1b.sd @@ -0,0 +1,6 @@ + +tmpdir/shlib-dynapp-1b: file format elf32-tic6x-be + +Contents of section \.got: +[ \t]*100000a0 00000000 00000000 00000000 00000000 .* +[ \t]*100000b0 00000000 10000020 00000000 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-app-1r.dd b/ld/testsuite/ld-tic6x/shlib-app-1r.dd new file mode 100644 index 0000000..3e68bf2 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1r.dd @@ -0,0 +1,36 @@ + +tmpdir/shlib-dynapp-1r: file format elf32-tic6x-le + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 +[ \t]*\.\.\. + +Disassembly of section \.text: + +10000060 <fish>: +10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3 +10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt> +1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3 +10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish> +10000074:[ \t]*0200096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b4 +10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5 +1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-app-1r.od b/ld/testsuite/ld-tic6x/shlib-app-1r.od new file mode 100644 index 0000000..15c2973 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1r.od @@ -0,0 +1,11 @@ + +tmpdir/shlib-dynapp-1r: file format elf32-tic6x-le + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000b8 R_C6000_ABS32 b +100000bc R_C6000_ABS32 a +100000c4 R_C6000_COPY a +100000b4 R_C6000_JUMP_SLOT sub0 + + diff --git a/ld/testsuite/ld-tic6x/shlib-app-1r.rd b/ld/testsuite/ld-tic6x/shlib-app-1r.rd new file mode 100644 index 0000000..566f2f9 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1r.rd @@ -0,0 +1,115 @@ +There are 17 section headers, starting at offset 0x2158: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 000080dc 0010dc 000030 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 0000810c 00110c 000018 0c A 2 10 4 + \[ 5\] \.rela\.bss RELA 00008124 001124 00000c 0c A 2 12 4 + \[ 6\] \.dynamic DYNAMIC 00008130 001130 0000b8 08 WA 3 0 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 8 4 + \[ 8\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 + \[ 9\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 + \[10\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 + \[11\] \.neardata PROGBITS 100000c0 0020c0 000004 00 WA 0 0 4 + \[12\] \.bss NOBITS 100000c4 0020c4 000004 00 WA 0 0 4 + \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020c4 000019 00 0 0 1 + \[14\] \.shstrtab STRTAB 00000000 0020dd 00007b 00 0 0 1 + \[15\] \.symtab SYMTAB 00000000 002400 000160 10 16 18 4 + \[16\] \.strtab STRTAB 00000000 002560 00004d 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000060 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x001e8 0x001e8 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000c4 0x000c8 RWE 0x1000 + DYNAMIC 0x001130 0x00008130 0x00008130 0x000b8 0x000b8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.bss \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1130 contains 18 entries: + Tag Type Name/Value + 0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtestr\.so\] + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x80dc + 0x00000006 \(SYMTAB\) 0x803c + 0x0000000a \(STRSZ\) 48 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000a0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000003 \(PLTGOT\) 0x100000ac + 0x00000002 \(PLTRELSZ\) 12 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x810c + 0x00000008 \(RELASZ\) 48 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x110c contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0 +100000bc 00000901 R_C6000_ABS32 100000c4 a \+ 0 + +Relocation section '\.rela\.bss' at offset 0x1124 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000c4 0000091a R_C6000_COPY 100000c4 a \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b4 0000081b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0 + +Symbol table '\.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 8 + 2: 10000060 0 SECTION LOCAL DEFAULT 9 + 3: 100000a0 0 SECTION LOCAL DEFAULT 10 + 4: 100000c0 0 SECTION LOCAL DEFAULT 11 + 5: 100000c4 0 SECTION LOCAL DEFAULT 12 + 6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b + 8: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 9: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a + +Symbol table '\.symtab' contains 22 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 0000803c 0 SECTION LOCAL DEFAULT 2 + 3: 000080dc 0 SECTION LOCAL DEFAULT 3 + 4: 0000810c 0 SECTION LOCAL DEFAULT 4 + 5: 00008124 0 SECTION LOCAL DEFAULT 5 + 6: 00008130 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 10000020 0 SECTION LOCAL DEFAULT 8 + 9: 10000060 0 SECTION LOCAL DEFAULT 9 + 10: 100000a0 0 SECTION LOCAL DEFAULT 10 + 11: 100000c0 0 SECTION LOCAL DEFAULT 11 + 12: 100000c4 0 SECTION LOCAL DEFAULT 12 + 13: 00000000 0 SECTION LOCAL DEFAULT 13 + 14: 10000060 0 NOTYPE LOCAL DEFAULT 9 fish + 15: 00008130 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC + 16: 100000ac 0 OBJECT LOCAL DEFAULT 10 _GLOBAL_OFFSET_TABLE_ + 17: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 18: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b + 19: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 20: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 21: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a diff --git a/ld/testsuite/ld-tic6x/shlib-app-1r.s b/ld/testsuite/ld-tic6x/shlib-app-1r.s new file mode 100644 index 0000000..a6de900 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1r.s @@ -0,0 +1,19 @@ + .global a +.text +fish: + ldw .d2t2 *+B14($DSBT_index(__c6xabi_DSBT_BASE)), B14 + callp .s2 sub0, B3 + b .s2 sub0 + callp .s2 fish, B3 + b .s2 fish + ldw .d2t2 *+B14(a), B4 + ldw .d2t2 *+B14(b), B5 + ldw .d2t2 *+B14($GOT(a)), B6 + ldw .d2t2 *+B14($GOT(b)), B6 + .global b + .section .neardata,"aw",@progbits + .align 2 + .type b, @object + .size b, 4 +b: + .long 0x12345678 diff --git a/ld/testsuite/ld-tic6x/shlib-app-1r.sd b/ld/testsuite/ld-tic6x/shlib-app-1r.sd new file mode 100644 index 0000000..2a849af --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1r.sd @@ -0,0 +1,6 @@ + +tmpdir/shlib-dynapp-1r: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*100000a0 00000000 00000000 00000000 00000000 .* +[ \t]*100000b0 00000000 20000010 00000000 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-app-1rb.dd b/ld/testsuite/ld-tic6x/shlib-app-1rb.dd new file mode 100644 index 0000000..ad1f28e --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1rb.dd @@ -0,0 +1,36 @@ + +tmpdir/shlib-dynapp-1rb: file format elf32-tic6x-be + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020:[ \t]*0100036e[ \t]*ldw \.D2T2 \*\+b14\(12\),b2 +10000024:[ \t]*0080046e[ \t]*ldw \.D2T2 \*\+b14\(16\),b1 +10000028:[ \t]*00004000[ \t]*nop 3 +1000002c:[ \t]*00080362[ \t]*b \.S2 b2 +10000030:[ \t]*00008000[ \t]*nop 5 +10000034:[ \t]*00000000[ \t]*nop 1 + +10000038 <sub0@plt>: +10000038:[ \t]*0100056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b2 +1000003c:[ \t]*0000002a[ \t]*mvk \.S2 0,b0 +10000040:[ \t]*0000006a[ \t]*mvkh \.S2 0,b0 +10000044:[ \t]*00002000[ \t]*nop 2 +10000048:[ \t]*00080362[ \t]*b \.S2 b2 +1000004c:[ \t]*00008000[ \t]*nop 5 +[ \t]*\.\.\. + +Disassembly of section \.text: + +10000060 <fish>: +10000060:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000064:[ \t]*1ffffb12[ \t]*callp \.S2 10000038 <sub0@plt>,b3 +10000068:[ \t]*0ffffb12[ \t]*b \.S2 10000038 <sub0@plt> +1000006c:[ \t]*10000012[ \t]*callp \.S2 10000060 <fish>,b3 +10000070:[ \t]*00000012[ \t]*b \.S2 10000060 <fish> +10000074:[ \t]*0200096e[ \t]*ldw \.D2T2 \*\+b14\(36\),b4 +10000078:[ \t]*0280086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b5 +1000007c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000080:[ \t]*0300066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b6 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-app-1rb.od b/ld/testsuite/ld-tic6x/shlib-app-1rb.od new file mode 100644 index 0000000..c313ed7 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1rb.od @@ -0,0 +1,11 @@ + +tmpdir/shlib-dynapp-1rb: file format elf32-tic6x-be + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000b8 R_C6000_ABS32 b +100000bc R_C6000_ABS32 a +100000c4 R_C6000_COPY a +100000b4 R_C6000_JUMP_SLOT sub0 + + diff --git a/ld/testsuite/ld-tic6x/shlib-app-1rb.rd b/ld/testsuite/ld-tic6x/shlib-app-1rb.rd new file mode 100644 index 0000000..be163d9 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1rb.rd @@ -0,0 +1,115 @@ +There are 17 section headers, starting at offset 0x2158: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 000080dc 0010dc 000031 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 00008110 001110 000018 0c A 2 10 4 + \[ 5\] \.rela\.bss RELA 00008128 001128 00000c 0c A 2 12 4 + \[ 6\] \.dynamic DYNAMIC 00008134 001134 0000b8 08 WA 3 0 4 + \[ 7\] \.rela\.plt RELA 10000000 002000 00000c 0c A 2 8 4 + \[ 8\] \.plt PROGBITS 10000020 002020 000040 18 AX 0 0 32 + \[ 9\] \.text PROGBITS 10000060 002060 000040 00 AX 0 0 32 + \[10\] \.got PROGBITS 100000a0 0020a0 000020 00 WA 0 0 4 + \[11\] \.neardata PROGBITS 100000c0 0020c0 000004 00 WA 0 0 4 + \[12\] \.bss NOBITS 100000c4 0020c4 000004 00 WA 0 0 4 + \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020c4 000019 00 0 0 1 + \[14\] \.shstrtab STRTAB 00000000 0020dd 00007b 00 0 0 1 + \[15\] \.symtab SYMTAB 00000000 002400 000160 10 16 18 4 + \[16\] \.strtab STRTAB 00000000 002560 00004d 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000060 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x001ec 0x001ec RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000c4 0x000c8 RWE 0x1000 + DYNAMIC 0x001134 0x00008134 0x00008134 0x000b8 0x000b8 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.bss \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1134 contains 18 entries: + Tag Type Name/Value + 0x00000001 \(NEEDED\) Shared library: \[tmpdir/libtestrb\.so\] + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x80dc + 0x00000006 \(SYMTAB\) 0x803c + 0x0000000a \(STRSZ\) 49 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000a0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000003 \(PLTGOT\) 0x100000ac + 0x00000002 \(PLTRELSZ\) 12 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x8110 + 0x00000008 \(RELASZ\) 48 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x1110 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b8 00000701 R_C6000_ABS32 100000c0 b \+ 0 +100000bc 00000901 R_C6000_ABS32 100000c4 a \+ 0 + +Relocation section '\.rela\.bss' at offset 0x1128 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000c4 0000091a R_C6000_COPY 100000c4 a \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000b4 0000081b R_C6000_JUMP_SLOT 00000000 sub0 \+ 0 + +Symbol table '\.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 8 + 2: 10000060 0 SECTION LOCAL DEFAULT 9 + 3: 100000a0 0 SECTION LOCAL DEFAULT 10 + 4: 100000c0 0 SECTION LOCAL DEFAULT 11 + 5: 100000c4 0 SECTION LOCAL DEFAULT 12 + 6: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b + 8: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 9: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a + +Symbol table '\.symtab' contains 22 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 0000803c 0 SECTION LOCAL DEFAULT 2 + 3: 000080dc 0 SECTION LOCAL DEFAULT 3 + 4: 00008110 0 SECTION LOCAL DEFAULT 4 + 5: 00008128 0 SECTION LOCAL DEFAULT 5 + 6: 00008134 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 10000020 0 SECTION LOCAL DEFAULT 8 + 9: 10000060 0 SECTION LOCAL DEFAULT 9 + 10: 100000a0 0 SECTION LOCAL DEFAULT 10 + 11: 100000c0 0 SECTION LOCAL DEFAULT 11 + 12: 100000c4 0 SECTION LOCAL DEFAULT 12 + 13: 00000000 0 SECTION LOCAL DEFAULT 13 + 14: 10000060 0 NOTYPE LOCAL DEFAULT 9 fish + 15: 00008134 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC + 16: 100000ac 0 OBJECT LOCAL DEFAULT 10 _GLOBAL_OFFSET_TABLE_ + 17: 100000a0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 18: 100000c0 4 OBJECT GLOBAL DEFAULT 11 b + 19: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 20: 00000000 0 FUNC GLOBAL DEFAULT UND sub0 + 21: 100000c4 4 OBJECT GLOBAL DEFAULT 12 a diff --git a/ld/testsuite/ld-tic6x/shlib-app-1rb.sd b/ld/testsuite/ld-tic6x/shlib-app-1rb.sd new file mode 100644 index 0000000..60a4e8b --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-app-1rb.sd @@ -0,0 +1,6 @@ + +tmpdir/shlib-dynapp-1rb: file format elf32-tic6x-be + +Contents of section \.got: +[ \t]*100000a0 00000000 00000000 00000000 00000000 .* +[ \t]*100000b0 00000000 10000020 00000000 00000000 .* diff --git a/ld/testsuite/ld-tic6x/shlib-noindex.dd b/ld/testsuite/ld-tic6x/shlib-noindex.dd new file mode 100644 index 0000000..bfdf499 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-noindex.dd @@ -0,0 +1,67 @@ + +tmpdir/libtestn\.so: file format elf32-tic6x-le + + +Disassembly of section \.plt: + +10000020 <sub0@plt-0x18>: +10000020: 0100036e ldw \.D2T2 \*\+b14\(12\),b2 +10000024: 0080046e ldw \.D2T2 \*\+b14\(16\),b1 +10000028: 00004000 nop 3 +1000002c: 00080362 b \.S2 b2 +10000030: 00008000 nop 5 +10000034: 00000000 nop 1 + +10000038 <sub0@plt>: +10000038: 0100056e ldw \.D2T2 \*\+b14\(20\),b2 +1000003c: 0000002a mvk \.S2 0,b0 +10000040: 0000006a mvkh \.S2 0,b0 +10000044: 00002000 nop 2 +10000048: 00080362 b \.S2 b2 +1000004c: 00008000 nop 5 + +10000050 <sub@plt>: +10000050: 0100066e ldw \.D2T2 \*\+b14\(24\),b2 +10000054: 0000062a mvk \.S2 12,b0 +10000058: 0000006a mvkh \.S2 0,b0 +1000005c: 00002000 nop 2 +10000060: 00080362 b \.S2 b2 +10000064: 00008000 nop 5 + \.\.\. + +Disassembly of section \.text: + +10000080 <sub1>: +10000080: 000c0362 b \.S2 b3 +10000084: 00008000 nop 5 + +10000088 <sub0>: +10000088: 07be09c2 sub \.D2 b15,16,b15 +1000008c: 01bc62f6 stw \.D2T2 b3,\*\+b15\(12\) +10000090: 073c82f6 stw \.D2T2 b14,\*\+b15\(16\) +10000094: 0700006e ldw \.D2T2 \*\+b14\(0\),b14 +10000098: 0ffffa12 b \.S2 10000050 <sub@plt> +1000009c: 0ffff712 b \.S2 10000038 <sub0@plt> +100000a0: 0ffffc12 b \.S2 10000080 <sub1> +100000a4: 01bc62e6 ldw \.D2T2 \*\+b15\(12\),b3 +100000a8: 073c82e6 ldw \.D2T2 \*\+b15\(16\),b14 +100000ac: 07800852 addk \.S2 16,b15 +100000b0: 00004000 nop 3 +100000b4: 000c0362 b \.S2 b3 +100000b8: 00008000 nop 5 +100000bc: 00000000 nop 1 + +100000c0 <sub>: +100000c0: 07be09c2 sub \.D2 b15,16,b15 +100000c4: 023c62f4 stw \.D2T1 a4,\*\+b15\(12\) +100000c8: 003c62e4 ldw \.D2T1 \*\+b15\(12\),a0 +100000cc: 00006000 nop 4 +100000d0: 00014940 add \.D1 a0,10,a0 +100000d4: 020008f0 or \.D1 0,a0,a4 +100000d8: 07be0942 add \.D2 b15,16,b15 +100000dc: 000c0362 b \.S2 b3 +100000e0: 0300096e ldw \.D2T2 \*\+b14\(36\),b6 +100000e4: 0380076e ldw \.D2T2 \*\+b14\(28\),b7 +100000e8: 0400086e ldw \.D2T2 \*\+b14\(32\),b8 +100000ec: 04800c6e ldw \.D2T2 \*\+b14\(48\),b9 + \.\.\. diff --git a/ld/testsuite/ld-tic6x/shlib-noindex.rd b/ld/testsuite/ld-tic6x/shlib-noindex.rd new file mode 100644 index 0000000..e9b57c7 --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-noindex.rd @@ -0,0 +1,130 @@ +There are 18 section headers, starting at offset 0x21cc: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4 + \[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1 + \[ 4\] \.rela\.text RELA 00008140 001140 00000c 0c A 2 10 4 + \[ 5\] \.rela\.got RELA 0000814c 00114c 000024 0c A 2 11 4 + \[ 6\] \.rela\.neardata RELA 00008170 001170 000018 0c A 2 12 4 + \[ 7\] \.dynamic DYNAMIC 00008188 001188 0000b0 08 WA 3 0 4 + \[ 8\] \.rela\.plt RELA 10000000 002000 000018 0c A 2 9 4 + \[ 9\] \.plt PROGBITS 10000020 002020 000060 18 AX 0 0 32 + \[10\] \.text PROGBITS 10000080 002080 000080 00 AX 0 0 32 + \[11\] \.got PROGBITS 10000100 002100 000028 00 WA 0 0 4 + \[12\] \.neardata PROGBITS 10000128 002128 000008 00 WA 0 0 4 + \[13\] \.bss NOBITS 10000130 002130 000004 00 WA 0 0 4 + \[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00 0 0 1 + \[15\] \.shstrtab STRTAB 00000000 002149 000080 00 0 0 1 + \[16\] \.symtab SYMTAB 00000000 00249c 0001b0 10 17 20 4 + \[17\] \.strtab STRTAB 00000000 00264c 000059 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is DYN \(Shared object file\) +Entry point 0x10000080 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x00238 0x00238 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000 + DYNAMIC 0x001188 0x00008188 0x00008188 0x000b0 0x000b0 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.text \.rela\.got \.rela\.neardata \.dynamic + 01 \.rela\.plt \.plt \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1188 contains 17 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x8118 + 0x00000006 \(SYMTAB\) 0x8048 + 0x0000000a \(STRSZ\) 37 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x70000000 \(C6000_DSBT_BASE\) 0x10000100 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000003 \(PLTGOT\) 0x1000010c + 0x00000002 \(PLTRELSZ\) 24 \(bytes\) + 0x00000014 \(PLTREL\) RELA + 0x00000017 \(JMPREL\) 0x10000000 + 0x00000007 \(RELA\) 0x8140 + 0x00000008 \(RELASZ\) 96 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000016 \(TEXTREL\) 0x0 + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.text' at offset 0x1140 contains 1 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000094 00000618 R_C6000_DSBT_INDEX 10000100 __c6xabi_DSBT_BASE \+ 0 + +Relocation section '\.rela\.got' at offset 0x114c contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000120 00000501 R_C6000_ABS32 10000130 \.bss \+ 0 +1000011c 00000701 R_C6000_ABS32 00000000 b \+ 0 +10000124 00000b01 R_C6000_ABS32 10000128 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1170 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000128 00000a01 R_C6000_ABS32 10000088 sub0 \+ 0 +1000012c 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Relocation section '\.rela\.plt' at offset 0x2000 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +10000114 00000a1b R_C6000_JUMP_SLOT 10000088 sub0 \+ 0 +10000118 00000c1b R_C6000_JUMP_SLOT 100000c0 sub \+ 0 + +Symbol table '\.dynsym' contains 13 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000020 0 SECTION LOCAL DEFAULT 9 + 2: 10000080 0 SECTION LOCAL DEFAULT 10 + 3: 10000100 0 SECTION LOCAL DEFAULT 11 + 4: 10000128 0 SECTION LOCAL DEFAULT 12 + 5: 10000130 0 SECTION LOCAL DEFAULT 13 + 6: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 00000000 0 NOTYPE WEAK DEFAULT UND b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 1000012c 4 OBJECT GLOBAL DEFAULT 12 g2 + 10: 10000088 52 FUNC GLOBAL DEFAULT 10 sub0 + 11: 10000128 4 OBJECT GLOBAL DEFAULT 12 a + 12: 100000c0 52 FUNC GLOBAL DEFAULT 10 sub + +Symbol table '\.symtab' contains 27 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 00008048 0 SECTION LOCAL DEFAULT 2 + 3: 00008118 0 SECTION LOCAL DEFAULT 3 + 4: 00008140 0 SECTION LOCAL DEFAULT 4 + 5: 0000814c 0 SECTION LOCAL DEFAULT 5 + 6: 00008170 0 SECTION LOCAL DEFAULT 6 + 7: 00008188 0 SECTION LOCAL DEFAULT 7 + 8: 10000000 0 SECTION LOCAL DEFAULT 8 + 9: 10000020 0 SECTION LOCAL DEFAULT 9 + 10: 10000080 0 SECTION LOCAL DEFAULT 10 + 11: 10000100 0 SECTION LOCAL DEFAULT 11 + 12: 10000128 0 SECTION LOCAL DEFAULT 12 + 13: 10000130 0 SECTION LOCAL DEFAULT 13 + 14: 00000000 0 SECTION LOCAL DEFAULT 14 + 15: 10000080 0 FUNC LOCAL HIDDEN 10 sub1 + 16: 00008188 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 17: 10000130 4 OBJECT LOCAL DEFAULT 13 c + 18: 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 19: 10000100 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 20: 00000000 0 NOTYPE WEAK DEFAULT UND b + 21: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 22: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 23: 1000012c 4 OBJECT GLOBAL DEFAULT 12 g2 + 24: 10000088 52 FUNC GLOBAL DEFAULT 10 sub0 + 25: 10000128 4 OBJECT GLOBAL DEFAULT 12 a + 26: 100000c0 52 FUNC GLOBAL DEFAULT 10 sub diff --git a/ld/testsuite/ld-tic6x/shlib-noindex.sd b/ld/testsuite/ld-tic6x/shlib-noindex.sd new file mode 100644 index 0000000..1ad767d --- /dev/null +++ b/ld/testsuite/ld-tic6x/shlib-noindex.sd @@ -0,0 +1,7 @@ + +tmpdir/libtestn\.so: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*10000100 00000000 00000000 00000000 00000000 .* +[ \t]*10000110 00000000 20000010 20000010 00000000 .* +[ \t]*10000120 30010010 00000000 .* diff --git a/ld/testsuite/ld-tic6x/static-app-1.dd b/ld/testsuite/ld-tic6x/static-app-1.dd new file mode 100644 index 0000000..f3b1b98 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1.dd @@ -0,0 +1,56 @@ + +tmpdir/static-app-1: file format elf32-tic6x-le + + +Disassembly of section \.text: + +10000000 <sub1>: +10000000:[ \t]*000c0362[ \t]*b \.S2 b3 +10000004:[ \t]*00008000[ \t]*nop 5 + +10000008 <sub0>: +10000008:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000000c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000010:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub> +1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0> +10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1> +10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15 +10000030:[ \t]*00004000[ \t]*nop 3 +10000034:[ \t]*000c0362[ \t]*b \.S2 b3 +10000038:[ \t]*00008000[ \t]*nop 5 +1000003c:[ \t]*00000000[ \t]*nop 1 + +10000040 <sub>: +10000040:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +10000044:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +10000048:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +1000004c:[ \t]*00006000[ \t]*nop 4 +10000050:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +10000054:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +10000058:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +1000005c:[ \t]*000c0362[ \t]*b \.S2 b3 +10000060:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000064:[ \t]*0380056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b7 +10000068:[ \t]*0400066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b8 +1000006c:[ \t]*04800d6e[ \t]*ldw \.D2T2 \*\+b14\(52\),b9 +[ \t]*\.\.\. + +10000080 <fish>: +10000080:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000084:[ \t]*1ffff112[ \t]*callp \.S2 10000008 <sub0>,b3 +10000088:[ \t]*0ffff112[ \t]*b \.S2 10000008 <sub0> +1000008c:[ \t]*10000012[ \t]*callp \.S2 10000080 <fish>,b3 +10000090:[ \t]*00000012[ \t]*b \.S2 10000080 <fish> +10000094:[ \t]*0200086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b4 +10000098:[ \t]*02800a6e[ \t]*ldw \.D2T2 \*\+b14\(40\),b5 +1000009c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +100000a0:[ \t]*0300056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b6 +100000a4:[ \t]*020003a8[ \t]*mvk \.S1 7,a4 +100000a8:[ \t]*02000068[ \t]*mvkh \.S1 0,a4 +100000ac:[ \t]*028002a8[ \t]*mvk \.S1 5,a5 +100000b0:[ \t]*02800068[ \t]*mvkh \.S1 0,a5 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/static-app-1.od b/ld/testsuite/ld-tic6x/static-app-1.od new file mode 100644 index 0000000..d07cd6e --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1.od @@ -0,0 +1,14 @@ + +tmpdir/static-app-1: file format elf32-tic6x-le + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000d8 R_C6000_ABS32 \.bss +100000d4 R_C6000_ABS32 b +100000dc R_C6000_ABS32 a +100000e0 R_C6000_ABS32 \.text\+0x00000008 +100000e4 R_C6000_ABS32 g1 +100000ec R_C6000_ABS32 g1 +100000f0 R_C6000_ABS32 \.neardata\+0x00000004 + + diff --git a/ld/testsuite/ld-tic6x/static-app-1.rd b/ld/testsuite/ld-tic6x/static-app-1.rd new file mode 100644 index 0000000..cec76d4 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1.rd @@ -0,0 +1,112 @@ +There are 15 section headers, starting at offset 0x2180: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4 + \[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c A 2 8 4 + \[ 5\] \.rela\.neardata RELA 00008120 001120 000030 0c A 2 9 4 + \[ 6\] \.dynamic DYNAMIC 00008150 001150 000090 08 WA 3 0 4 + \[ 7\] \.text PROGBITS 10000000 002000 0000c0 00 AX 0 0 32 + \[ 8\] \.got PROGBITS 100000c0 0020c0 000020 00 WA 0 0 4 + \[ 9\] \.neardata PROGBITS 100000e0 0020e0 000014 00 WA 0 0 4 + \[10\] \.bss NOBITS 100000f4 0020f4 000004 00 WA 0 0 4 + \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020f4 000019 00 0 0 1 + \[12\] \.shstrtab STRTAB 00000000 00210d 000071 00 0 0 1 + \[13\] \.symtab SYMTAB 00000000 0023d8 0001a0 10 14 19 4 + \[14\] \.strtab STRTAB 00000000 002578 000060 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000000 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x001e0 0x001e0 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000f4 0x000f8 RWE 0x1000 + DYNAMIC 0x001150 0x00008150 0x00008150 0x00090 0x00090 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1150 contains 13 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x80dc + 0x00000006 \(SYMTAB\) 0x803c + 0x0000000a \(STRSZ\) 29 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000c0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000007 \(RELA\) 0x80fc + 0x00000008 \(RELASZ\) 84 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x10fc contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000d8 00000401 R_C6000_ABS32 100000f4 \.bss \+ 0 +100000d4 00000701 R_C6000_ABS32 100000e8 b \+ 0 +100000dc 00000901 R_C6000_ABS32 100000e0 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1120 contains 4 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000e0 00000101 R_C6000_ABS32 10000000 \.text \+ 8 +100000e4 00000801 R_C6000_ABS32 00000000 g1 \+ 0 +100000ec 00000801 R_C6000_ABS32 00000000 g1 \+ 0 +100000f0 00000301 R_C6000_ABS32 100000e0 \.neardata \+ 4 + +Symbol table '\.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000000 0 SECTION LOCAL DEFAULT 7 + 2: 100000c0 0 SECTION LOCAL DEFAULT 8 + 3: 100000e0 0 SECTION LOCAL DEFAULT 9 + 4: 100000f4 0 SECTION LOCAL DEFAULT 10 + 5: 100000f4 4 OBJECT LOCAL DEFAULT 10 c + 6: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 0000803c 0 SECTION LOCAL DEFAULT 2 + 3: 000080dc 0 SECTION LOCAL DEFAULT 3 + 4: 000080fc 0 SECTION LOCAL DEFAULT 4 + 5: 00008120 0 SECTION LOCAL DEFAULT 5 + 6: 00008150 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 100000c0 0 SECTION LOCAL DEFAULT 8 + 9: 100000e0 0 SECTION LOCAL DEFAULT 9 + 10: 100000f4 0 SECTION LOCAL DEFAULT 10 + 11: 00000000 0 SECTION LOCAL DEFAULT 11 + 12: 10000000 0 FUNC LOCAL HIDDEN 7 sub1 + 13: 10000080 0 NOTYPE LOCAL DEFAULT 7 fish + 14: 100000ec 8 OBJECT LOCAL DEFAULT 9 w + 15: 00008150 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC + 16: 100000f4 4 OBJECT LOCAL DEFAULT 10 c + 17: 100000cc 0 OBJECT LOCAL DEFAULT 8 _GLOBAL_OFFSET_TABLE_ + 18: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 19: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 21: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 22: 100000e4 4 OBJECT GLOBAL DEFAULT 9 g2 + 23: 10000008 52 FUNC GLOBAL DEFAULT 7 sub0 + 24: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + 25: 10000040 52 FUNC GLOBAL DEFAULT 7 sub diff --git a/ld/testsuite/ld-tic6x/static-app-1.sd b/ld/testsuite/ld-tic6x/static-app-1.sd new file mode 100644 index 0000000..2f24f40 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1.sd @@ -0,0 +1,6 @@ + +tmpdir/static-app-1: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*100000c0 00000000 00000000 00000000 00000000 .* +[ \t]*100000d0 00000000 00000000 f4000010 00000000 .* diff --git a/ld/testsuite/ld-tic6x/static-app-1b.dd b/ld/testsuite/ld-tic6x/static-app-1b.dd new file mode 100644 index 0000000..f6ddda7 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1b.dd @@ -0,0 +1,56 @@ + +tmpdir/static-app-1b: file format elf32-tic6x-be + + +Disassembly of section \.text: + +10000000 <sub1>: +10000000:[ \t]*000c0362[ \t]*b \.S2 b3 +10000004:[ \t]*00008000[ \t]*nop 5 + +10000008 <sub0>: +10000008:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000000c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000010:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub> +1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0> +10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1> +10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15 +10000030:[ \t]*00004000[ \t]*nop 3 +10000034:[ \t]*000c0362[ \t]*b \.S2 b3 +10000038:[ \t]*00008000[ \t]*nop 5 +1000003c:[ \t]*00000000[ \t]*nop 1 + +10000040 <sub>: +10000040:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +10000044:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +10000048:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +1000004c:[ \t]*00006000[ \t]*nop 4 +10000050:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +10000054:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +10000058:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +1000005c:[ \t]*000c0362[ \t]*b \.S2 b3 +10000060:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000064:[ \t]*0380056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b7 +10000068:[ \t]*0400066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b8 +1000006c:[ \t]*04800d6e[ \t]*ldw \.D2T2 \*\+b14\(52\),b9 +[ \t]*\.\.\. + +10000080 <fish>: +10000080:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000084:[ \t]*1ffff112[ \t]*callp \.S2 10000008 <sub0>,b3 +10000088:[ \t]*0ffff112[ \t]*b \.S2 10000008 <sub0> +1000008c:[ \t]*10000012[ \t]*callp \.S2 10000080 <fish>,b3 +10000090:[ \t]*00000012[ \t]*b \.S2 10000080 <fish> +10000094:[ \t]*0200086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b4 +10000098:[ \t]*02800a6e[ \t]*ldw \.D2T2 \*\+b14\(40\),b5 +1000009c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +100000a0:[ \t]*0300056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b6 +100000a4:[ \t]*020003a8[ \t]*mvk \.S1 7,a4 +100000a8:[ \t]*02000068[ \t]*mvkh \.S1 0,a4 +100000ac:[ \t]*028002a8[ \t]*mvk \.S1 5,a5 +100000b0:[ \t]*02800068[ \t]*mvkh \.S1 0,a5 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/static-app-1b.od b/ld/testsuite/ld-tic6x/static-app-1b.od new file mode 100644 index 0000000..a35d194 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1b.od @@ -0,0 +1,14 @@ + +tmpdir/static-app-1b: file format elf32-tic6x-be + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000d8 R_C6000_ABS32 \.bss +100000d4 R_C6000_ABS32 b +100000dc R_C6000_ABS32 a +100000e0 R_C6000_ABS32 \.text\+0x00000008 +100000e4 R_C6000_ABS32 g1 +100000ec R_C6000_ABS32 g1 +100000f0 R_C6000_ABS32 \.neardata\+0x00000004 + + diff --git a/ld/testsuite/ld-tic6x/static-app-1b.rd b/ld/testsuite/ld-tic6x/static-app-1b.rd new file mode 100644 index 0000000..cec76d4 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1b.rd @@ -0,0 +1,112 @@ +There are 15 section headers, starting at offset 0x2180: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4 + \[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c A 2 8 4 + \[ 5\] \.rela\.neardata RELA 00008120 001120 000030 0c A 2 9 4 + \[ 6\] \.dynamic DYNAMIC 00008150 001150 000090 08 WA 3 0 4 + \[ 7\] \.text PROGBITS 10000000 002000 0000c0 00 AX 0 0 32 + \[ 8\] \.got PROGBITS 100000c0 0020c0 000020 00 WA 0 0 4 + \[ 9\] \.neardata PROGBITS 100000e0 0020e0 000014 00 WA 0 0 4 + \[10\] \.bss NOBITS 100000f4 0020f4 000004 00 WA 0 0 4 + \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020f4 000019 00 0 0 1 + \[12\] \.shstrtab STRTAB 00000000 00210d 000071 00 0 0 1 + \[13\] \.symtab SYMTAB 00000000 0023d8 0001a0 10 14 19 4 + \[14\] \.strtab STRTAB 00000000 002578 000060 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000000 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x001e0 0x001e0 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000f4 0x000f8 RWE 0x1000 + DYNAMIC 0x001150 0x00008150 0x00008150 0x00090 0x00090 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1150 contains 13 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x80dc + 0x00000006 \(SYMTAB\) 0x803c + 0x0000000a \(STRSZ\) 29 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000c0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000007 \(RELA\) 0x80fc + 0x00000008 \(RELASZ\) 84 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x10fc contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000d8 00000401 R_C6000_ABS32 100000f4 \.bss \+ 0 +100000d4 00000701 R_C6000_ABS32 100000e8 b \+ 0 +100000dc 00000901 R_C6000_ABS32 100000e0 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1120 contains 4 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000e0 00000101 R_C6000_ABS32 10000000 \.text \+ 8 +100000e4 00000801 R_C6000_ABS32 00000000 g1 \+ 0 +100000ec 00000801 R_C6000_ABS32 00000000 g1 \+ 0 +100000f0 00000301 R_C6000_ABS32 100000e0 \.neardata \+ 4 + +Symbol table '\.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000000 0 SECTION LOCAL DEFAULT 7 + 2: 100000c0 0 SECTION LOCAL DEFAULT 8 + 3: 100000e0 0 SECTION LOCAL DEFAULT 9 + 4: 100000f4 0 SECTION LOCAL DEFAULT 10 + 5: 100000f4 4 OBJECT LOCAL DEFAULT 10 c + 6: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + +Symbol table '\.symtab' contains 26 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 0000803c 0 SECTION LOCAL DEFAULT 2 + 3: 000080dc 0 SECTION LOCAL DEFAULT 3 + 4: 000080fc 0 SECTION LOCAL DEFAULT 4 + 5: 00008120 0 SECTION LOCAL DEFAULT 5 + 6: 00008150 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 100000c0 0 SECTION LOCAL DEFAULT 8 + 9: 100000e0 0 SECTION LOCAL DEFAULT 9 + 10: 100000f4 0 SECTION LOCAL DEFAULT 10 + 11: 00000000 0 SECTION LOCAL DEFAULT 11 + 12: 10000000 0 FUNC LOCAL HIDDEN 7 sub1 + 13: 10000080 0 NOTYPE LOCAL DEFAULT 7 fish + 14: 100000ec 8 OBJECT LOCAL DEFAULT 9 w + 15: 00008150 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC + 16: 100000f4 4 OBJECT LOCAL DEFAULT 10 c + 17: 100000cc 0 OBJECT LOCAL DEFAULT 8 _GLOBAL_OFFSET_TABLE_ + 18: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 19: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 20: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 21: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 22: 100000e4 4 OBJECT GLOBAL DEFAULT 9 g2 + 23: 10000008 52 FUNC GLOBAL DEFAULT 7 sub0 + 24: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + 25: 10000040 52 FUNC GLOBAL DEFAULT 7 sub diff --git a/ld/testsuite/ld-tic6x/static-app-1b.sd b/ld/testsuite/ld-tic6x/static-app-1b.sd new file mode 100644 index 0000000..69f638c --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1b.sd @@ -0,0 +1,6 @@ + +tmpdir/static-app-1b: file format elf32-tic6x-be + +Contents of section \.got: +[ \t]*100000c0 00000000 00000000 00000000 00000000 .* +[ \t]*100000d0 00000000 00000000 100000f4 00000000 .* diff --git a/ld/testsuite/ld-tic6x/static-app-1r.dd b/ld/testsuite/ld-tic6x/static-app-1r.dd new file mode 100644 index 0000000..82b3ecd --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1r.dd @@ -0,0 +1,52 @@ + +tmpdir/static-app-1r: file format elf32-tic6x-le + + +Disassembly of section \.text: + +10000000 <sub1>: +10000000:[ \t]*000c0362[ \t]*b \.S2 b3 +10000004:[ \t]*00008000[ \t]*nop 5 + +10000008 <sub0>: +10000008:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000000c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000010:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub> +1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0> +10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1> +10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15 +10000030:[ \t]*00004000[ \t]*nop 3 +10000034:[ \t]*000c0362[ \t]*b \.S2 b3 +10000038:[ \t]*00008000[ \t]*nop 5 +1000003c:[ \t]*00000000[ \t]*nop 1 + +10000040 <sub>: +10000040:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +10000044:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +10000048:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +1000004c:[ \t]*00006000[ \t]*nop 4 +10000050:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +10000054:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +10000058:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +1000005c:[ \t]*000c0362[ \t]*b \.S2 b3 +10000060:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000064:[ \t]*0380056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b7 +10000068:[ \t]*0400066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b8 +1000006c:[ \t]*04800b6e[ \t]*ldw \.D2T2 \*\+b14\(44\),b9 +[ \t]*\.\.\. + +10000080 <fish>: +10000080:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000084:[ \t]*1ffff112[ \t]*callp \.S2 10000008 <sub0>,b3 +10000088:[ \t]*0ffff112[ \t]*b \.S2 10000008 <sub0> +1000008c:[ \t]*10000012[ \t]*callp \.S2 10000080 <fish>,b3 +10000090:[ \t]*00000012[ \t]*b \.S2 10000080 <fish> +10000094:[ \t]*0200086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b4 +10000098:[ \t]*02800a6e[ \t]*ldw \.D2T2 \*\+b14\(40\),b5 +1000009c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +100000a0:[ \t]*0300056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b6 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/static-app-1r.od b/ld/testsuite/ld-tic6x/static-app-1r.od new file mode 100644 index 0000000..06f8d50 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1r.od @@ -0,0 +1,12 @@ + +tmpdir/static-app-1r: file format elf32-tic6x-le + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000d8 R_C6000_ABS32 \.bss +100000d4 R_C6000_ABS32 b +100000dc R_C6000_ABS32 a +100000e0 R_C6000_ABS32 \.text\+0x00000008 +100000e4 R_C6000_ABS32 g1 + + diff --git a/ld/testsuite/ld-tic6x/static-app-1r.rd b/ld/testsuite/ld-tic6x/static-app-1r.rd new file mode 100644 index 0000000..cd8bc4c --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1r.rd @@ -0,0 +1,109 @@ +There are 15 section headers, starting at offset 0x2178: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4 + \[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c A 2 8 4 + \[ 5\] \.rela\.neardata RELA 00008120 001120 000018 0c A 2 9 4 + \[ 6\] \.dynamic DYNAMIC 00008138 001138 000090 08 WA 3 0 4 + \[ 7\] \.text PROGBITS 10000000 002000 0000c0 00 AX 0 0 32 + \[ 8\] \.got PROGBITS 100000c0 0020c0 000020 00 WA 0 0 4 + \[ 9\] \.neardata PROGBITS 100000e0 0020e0 00000c 00 WA 0 0 4 + \[10\] \.bss NOBITS 100000ec 0020ec 000004 00 WA 0 0 4 + \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020ec 000019 00 0 0 1 + \[12\] \.shstrtab STRTAB 00000000 002105 000071 00 0 0 1 + \[13\] \.symtab SYMTAB 00000000 0023d0 000190 10 14 18 4 + \[14\] \.strtab STRTAB 00000000 002560 00005e 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000000 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x001c8 0x001c8 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000ec 0x000f0 RWE 0x1000 + DYNAMIC 0x001138 0x00008138 0x00008138 0x00090 0x00090 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1138 contains 13 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x80dc + 0x00000006 \(SYMTAB\) 0x803c + 0x0000000a \(STRSZ\) 29 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000c0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000007 \(RELA\) 0x80fc + 0x00000008 \(RELASZ\) 60 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x10fc contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000d8 00000401 R_C6000_ABS32 100000ec \.bss \+ 0 +100000d4 00000701 R_C6000_ABS32 100000e8 b \+ 0 +100000dc 00000901 R_C6000_ABS32 100000e0 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1120 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000e0 00000101 R_C6000_ABS32 10000000 \.text \+ 8 +100000e4 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Symbol table '\.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000000 0 SECTION LOCAL DEFAULT 7 + 2: 100000c0 0 SECTION LOCAL DEFAULT 8 + 3: 100000e0 0 SECTION LOCAL DEFAULT 9 + 4: 100000ec 0 SECTION LOCAL DEFAULT 10 + 5: 100000ec 4 OBJECT LOCAL DEFAULT 10 c + 6: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + +Symbol table '\.symtab' contains 25 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 0000803c 0 SECTION LOCAL DEFAULT 2 + 3: 000080dc 0 SECTION LOCAL DEFAULT 3 + 4: 000080fc 0 SECTION LOCAL DEFAULT 4 + 5: 00008120 0 SECTION LOCAL DEFAULT 5 + 6: 00008138 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 100000c0 0 SECTION LOCAL DEFAULT 8 + 9: 100000e0 0 SECTION LOCAL DEFAULT 9 + 10: 100000ec 0 SECTION LOCAL DEFAULT 10 + 11: 00000000 0 SECTION LOCAL DEFAULT 11 + 12: 10000000 0 FUNC LOCAL HIDDEN 7 sub1 + 13: 10000080 0 NOTYPE LOCAL DEFAULT 7 fish + 14: 00008138 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC + 15: 100000ec 4 OBJECT LOCAL DEFAULT 10 c + 16: 100000cc 0 OBJECT LOCAL DEFAULT 8 _GLOBAL_OFFSET_TABLE_ + 17: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 18: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 19: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 20: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 21: 100000e4 4 OBJECT GLOBAL DEFAULT 9 g2 + 22: 10000008 52 FUNC GLOBAL DEFAULT 7 sub0 + 23: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + 24: 10000040 52 FUNC GLOBAL DEFAULT 7 sub diff --git a/ld/testsuite/ld-tic6x/static-app-1r.sd b/ld/testsuite/ld-tic6x/static-app-1r.sd new file mode 100644 index 0000000..e01cd49 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1r.sd @@ -0,0 +1,6 @@ + +tmpdir/static-app-1r: file format elf32-tic6x-le + +Contents of section \.got: +[ \t]*100000c0 00000000 00000000 00000000 00000000 .* +[ \t]*100000d0 00000000 00000000 ec000010 00000000 .* diff --git a/ld/testsuite/ld-tic6x/static-app-1rb.dd b/ld/testsuite/ld-tic6x/static-app-1rb.dd new file mode 100644 index 0000000..9e211ca --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1rb.dd @@ -0,0 +1,52 @@ + +tmpdir/static-app-1rb: file format elf32-tic6x-be + + +Disassembly of section \.text: + +10000000 <sub1>: +10000000:[ \t]*000c0362[ \t]*b \.S2 b3 +10000004:[ \t]*00008000[ \t]*nop 5 + +10000008 <sub0>: +10000008:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +1000000c:[ \t]*01bc62f6[ \t]*stw \.D2T2 b3,\*\+b15\(12\) +10000010:[ \t]*073c82f6[ \t]*stw \.D2T2 b14,\*\+b15\(16\) +10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub> +1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0> +10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1> +10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3 +10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14 +1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15 +10000030:[ \t]*00004000[ \t]*nop 3 +10000034:[ \t]*000c0362[ \t]*b \.S2 b3 +10000038:[ \t]*00008000[ \t]*nop 5 +1000003c:[ \t]*00000000[ \t]*nop 1 + +10000040 <sub>: +10000040:[ \t]*07be09c2[ \t]*sub \.D2 b15,16,b15 +10000044:[ \t]*023c62f4[ \t]*stw \.D2T1 a4,\*\+b15\(12\) +10000048:[ \t]*003c62e4[ \t]*ldw \.D2T1 \*\+b15\(12\),a0 +1000004c:[ \t]*00006000[ \t]*nop 4 +10000050:[ \t]*00014940[ \t]*add \.D1 a0,10,a0 +10000054:[ \t]*020008f0[ \t]*or \.D1 0,a0,a4 +10000058:[ \t]*07be0942[ \t]*add \.D2 b15,16,b15 +1000005c:[ \t]*000c0362[ \t]*b \.S2 b3 +10000060:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +10000064:[ \t]*0380056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b7 +10000068:[ \t]*0400066e[ \t]*ldw \.D2T2 \*\+b14\(24\),b8 +1000006c:[ \t]*04800b6e[ \t]*ldw \.D2T2 \*\+b14\(44\),b9 +[ \t]*\.\.\. + +10000080 <fish>: +10000080:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14 +10000084:[ \t]*1ffff112[ \t]*callp \.S2 10000008 <sub0>,b3 +10000088:[ \t]*0ffff112[ \t]*b \.S2 10000008 <sub0> +1000008c:[ \t]*10000012[ \t]*callp \.S2 10000080 <fish>,b3 +10000090:[ \t]*00000012[ \t]*b \.S2 10000080 <fish> +10000094:[ \t]*0200086e[ \t]*ldw \.D2T2 \*\+b14\(32\),b4 +10000098:[ \t]*02800a6e[ \t]*ldw \.D2T2 \*\+b14\(40\),b5 +1000009c:[ \t]*0300076e[ \t]*ldw \.D2T2 \*\+b14\(28\),b6 +100000a0:[ \t]*0300056e[ \t]*ldw \.D2T2 \*\+b14\(20\),b6 +[ \t]*\.\.\. diff --git a/ld/testsuite/ld-tic6x/static-app-1rb.od b/ld/testsuite/ld-tic6x/static-app-1rb.od new file mode 100644 index 0000000..13d4255 --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1rb.od @@ -0,0 +1,12 @@ + +tmpdir/static-app-1rb: file format elf32-tic6x-be + +DYNAMIC RELOCATION RECORDS +OFFSET TYPE VALUE +100000d8 R_C6000_ABS32 \.bss +100000d4 R_C6000_ABS32 b +100000dc R_C6000_ABS32 a +100000e0 R_C6000_ABS32 \.text\+0x00000008 +100000e4 R_C6000_ABS32 g1 + + diff --git a/ld/testsuite/ld-tic6x/static-app-1rb.rd b/ld/testsuite/ld-tic6x/static-app-1rb.rd new file mode 100644 index 0000000..cd8bc4c --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1rb.rd @@ -0,0 +1,109 @@ +There are 15 section headers, starting at offset 0x2178: + +Section Headers: + \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al + \[ 0\] NULL 00000000 000000 000000 00 0 0 0 + \[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4 + \[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4 + \[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1 + \[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c A 2 8 4 + \[ 5\] \.rela\.neardata RELA 00008120 001120 000018 0c A 2 9 4 + \[ 6\] \.dynamic DYNAMIC 00008138 001138 000090 08 WA 3 0 4 + \[ 7\] \.text PROGBITS 10000000 002000 0000c0 00 AX 0 0 32 + \[ 8\] \.got PROGBITS 100000c0 0020c0 000020 00 WA 0 0 4 + \[ 9\] \.neardata PROGBITS 100000e0 0020e0 00000c 00 WA 0 0 4 + \[10\] \.bss NOBITS 100000ec 0020ec 000004 00 WA 0 0 4 + \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 0020ec 000019 00 0 0 1 + \[12\] \.shstrtab STRTAB 00000000 002105 000071 00 0 0 1 + \[13\] \.symtab SYMTAB 00000000 0023d0 000190 10 14 18 4 + \[14\] \.strtab STRTAB 00000000 002560 00005e 00 0 0 1 +Key to Flags: + W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) + I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\) + O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) + +Elf file type is EXEC \(Executable file\) +Entry point 0x10000000 +There are 4 program headers, starting at offset 52 + +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x001000 0x00008000 0x00008000 0x001c8 0x001c8 RW 0x1000 + LOAD 0x002000 0x10000000 0x10000000 0x000ec 0x000f0 RWE 0x1000 + DYNAMIC 0x001138 0x00008138 0x00008138 0x00090 0x00090 RW 0x4 + GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8 + + Section to Segment mapping: + Segment Sections\.\.\. + 00 \.hash \.dynsym \.dynstr \.rela\.got \.rela\.neardata \.dynamic + 01 \.text \.got \.neardata \.bss + 02 \.dynamic + 03 + +Dynamic section at offset 0x1138 contains 13 entries: + Tag Type Name/Value + 0x00000004 \(HASH\) 0x8000 + 0x00000005 \(STRTAB\) 0x80dc + 0x00000006 \(SYMTAB\) 0x803c + 0x0000000a \(STRSZ\) 29 \(bytes\) + 0x0000000b \(SYMENT\) 16 \(bytes\) + 0x00000015 \(DEBUG\) 0x0 + 0x70000000 \(C6000_DSBT_BASE\) 0x100000c0 + 0x70000001 \(C6000_DSBT_SIZE\) 0x3 + 0x70000003 \(C6000_DSBT_INDEX\) 0x0 + 0x00000007 \(RELA\) 0x80fc + 0x00000008 \(RELASZ\) 60 \(bytes\) + 0x00000009 \(RELAENT\) 12 \(bytes\) + 0x00000000 \(NULL\) 0x0 + +Relocation section '\.rela\.got' at offset 0x10fc contains 3 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000d8 00000401 R_C6000_ABS32 100000ec \.bss \+ 0 +100000d4 00000701 R_C6000_ABS32 100000e8 b \+ 0 +100000dc 00000901 R_C6000_ABS32 100000e0 a \+ 0 + +Relocation section '\.rela\.neardata' at offset 0x1120 contains 2 entries: + Offset Info Type Sym\. Value Symbol's Name \+ Addend +100000e0 00000101 R_C6000_ABS32 10000000 \.text \+ 8 +100000e4 00000801 R_C6000_ABS32 00000000 g1 \+ 0 + +Symbol table '\.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 10000000 0 SECTION LOCAL DEFAULT 7 + 2: 100000c0 0 SECTION LOCAL DEFAULT 8 + 3: 100000e0 0 SECTION LOCAL DEFAULT 9 + 4: 100000ec 0 SECTION LOCAL DEFAULT 10 + 5: 100000ec 4 OBJECT LOCAL DEFAULT 10 c + 6: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 7: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 8: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 9: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + +Symbol table '\.symtab' contains 25 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00008000 0 SECTION LOCAL DEFAULT 1 + 2: 0000803c 0 SECTION LOCAL DEFAULT 2 + 3: 000080dc 0 SECTION LOCAL DEFAULT 3 + 4: 000080fc 0 SECTION LOCAL DEFAULT 4 + 5: 00008120 0 SECTION LOCAL DEFAULT 5 + 6: 00008138 0 SECTION LOCAL DEFAULT 6 + 7: 10000000 0 SECTION LOCAL DEFAULT 7 + 8: 100000c0 0 SECTION LOCAL DEFAULT 8 + 9: 100000e0 0 SECTION LOCAL DEFAULT 9 + 10: 100000ec 0 SECTION LOCAL DEFAULT 10 + 11: 00000000 0 SECTION LOCAL DEFAULT 11 + 12: 10000000 0 FUNC LOCAL HIDDEN 7 sub1 + 13: 10000080 0 NOTYPE LOCAL DEFAULT 7 fish + 14: 00008138 0 OBJECT LOCAL DEFAULT 6 _DYNAMIC + 15: 100000ec 4 OBJECT LOCAL DEFAULT 10 c + 16: 100000cc 0 OBJECT LOCAL DEFAULT 8 _GLOBAL_OFFSET_TABLE_ + 17: 100000c0 0 NOTYPE LOCAL DEFAULT ABS __c6xabi_DSBT_BASE + 18: 100000e8 4 OBJECT GLOBAL DEFAULT 9 b + 19: 00020000 0 OBJECT GLOBAL DEFAULT ABS __stacksize + 20: 00000000 0 NOTYPE WEAK DEFAULT UND g1 + 21: 100000e4 4 OBJECT GLOBAL DEFAULT 9 g2 + 22: 10000008 52 FUNC GLOBAL DEFAULT 7 sub0 + 23: 100000e0 4 OBJECT GLOBAL DEFAULT 9 a + 24: 10000040 52 FUNC GLOBAL DEFAULT 7 sub diff --git a/ld/testsuite/ld-tic6x/static-app-1rb.sd b/ld/testsuite/ld-tic6x/static-app-1rb.sd new file mode 100644 index 0000000..8d7bd0d --- /dev/null +++ b/ld/testsuite/ld-tic6x/static-app-1rb.sd @@ -0,0 +1,6 @@ + +tmpdir/static-app-1rb: file format elf32-tic6x-be + +Contents of section \.got: +[ \t]*100000c0 00000000 00000000 00000000 00000000 .* +[ \t]*100000d0 00000000 00000000 100000ec 00000000 .* diff --git a/ld/testsuite/ld-tic6x/tic6x.exp b/ld/testsuite/ld-tic6x/tic6x.exp index 3108a09..9bcb554 100644 --- a/ld/testsuite/ld-tic6x/tic6x.exp +++ b/ld/testsuite/ld-tic6x/tic6x.exp @@ -1,7 +1,114 @@ -if { [istarget tic6x-*-*] } { - foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.d]] { - if { [runtest_file_p $runtests $test] } { - run_dump_test [file rootname $test] - } +if { ! [istarget tic6x-*-*] } { + return +} + +foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.d]] { + if { [runtest_file_p $runtests $test] } { + run_dump_test [file rootname $test] } } + +set shlibtests { + {"C6X shared library without --dsbt-index" + "-shared -Tdsbt.ld --dsbt-size=3" + "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s} + {{readelf -WSsrld shlib-noindex.rd} + {objdump "-drj.plt -j.text" shlib-noindex.dd} + {objdump -sj.got shlib-noindex.sd}} + "libtestn.so"} + {"C6X shared library, LE, RELA" + "-shared -Tdsbt.ld --dsbt-index=2 --dsbt-size=3" + "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s} + {{readelf -WSsrld shlib-1.rd} + {objdump "-drj.plt -j.text" shlib-1.dd} + {objdump -sj.got shlib-1.sd}} + "libtest.so"} + {"C6X nonstatic app using shared library, LE, RELA" + "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtest.so" + "-mdsbt -mpic -mpid=near" {shlib-app-1.s} + {{readelf -WSsrld shlib-app-1.rd} + {objdump "-drj.plt -j.text" shlib-app-1.dd} + {objdump -sj.got shlib-app-1.sd} + {objdump -R shlib-app-1.od}} + "shlib-dynapp-1"} + {"C6X shared library, LE, REL" + "-shared -Tdsbt.ld --dsbt-index=2 --dsbt-size=3" + "-mdsbt -mpic -mpid=near -mgenerate-rel" {shlib-1.s shlib-2.s} + {{readelf -WSsrld shlib-1r.rd} + {objdump "-drj.plt -j.text" shlib-1r.dd} + {objdump -sj.got shlib-1r.sd}} + "libtestr.so"} + {"C6X nonstatic app using shared library, LE, REL" + "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtestr.so" + "-mdsbt -mpic -mpid=near -mgenerate-rel" {shlib-app-1r.s} + {{readelf -WSsrld shlib-app-1r.rd} + {objdump "-drj.plt -j.text" shlib-app-1r.dd} + {objdump -sj.got shlib-app-1r.sd} + {objdump -R shlib-app-1r.od}} + "shlib-dynapp-1r"} + {"C6X shared library, BE, RELA" + "-shared -Tdsbt-be.ld --dsbt-index=2 --dsbt-size=3" + "-mdsbt -mpic -mpid=near -mbig-endian" {shlib-1.s shlib-2.s} + {{readelf -WSsrld shlib-1b.rd} + {objdump "-drj.plt -j.text" shlib-1b.dd} + {objdump -sj.got shlib-1b.sd}} + "libtestb.so"} + {"C6X nonstatic app using shared library, BE, RELA" + "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtestb.so" + "-mdsbt -mpic -mpid=near -mbig-endian" {shlib-app-1.s} + {{readelf -WSsrld shlib-app-1b.rd} + {objdump "-drj.plt -j.text" shlib-app-1b.dd} + {objdump -sj.got shlib-app-1b.sd} + {objdump -R shlib-app-1b.od}} + "shlib-dynapp-1b"} + {"C6X shared library, BE, REL" + "-shared -Tdsbt-be.ld --dsbt-index=2 --dsbt-size=3" + "-mdsbt -mpic -mpid=near -mgenerate-rel -mbig-endian" {shlib-1.s shlib-2.s} + {{readelf -WSsrld shlib-1rb.rd} + {objdump "-drj.plt -j.text" shlib-1rb.dd} + {objdump -sj.got shlib-1rb.sd}} + "libtestrb.so"} + {"C6X nonstatic app using shared library, BE, REL" + "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3 tmpdir/libtestrb.so" + "-mdsbt -mpic -mpid=near -mgenerate-rel -mbig-endian" {shlib-app-1r.s} + {{readelf -WSsrld shlib-app-1rb.rd} + {objdump "-drj.plt -j.text" shlib-app-1rb.dd} + {objdump -sj.got shlib-app-1rb.sd} + {objdump -R shlib-app-1rb.od}} + "shlib-dynapp-1rb"} + + {"C6X static app, LE, RELA" + "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3" + "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s shlib-app-1.s} + {{readelf -WSsrld static-app-1.rd} + {objdump "-drj.plt -j.text" static-app-1.dd} + {objdump -sj.got static-app-1.sd} + {objdump -R static-app-1.od}} + "static-app-1"} + {"C6X static app, LE, REL" + "-Tdsbt.ld --dsbt-index 0 --dsbt-size=3" + "-mdsbt -mpic -mpid=near -mgenerate-rel" {shlib-1.s shlib-2.s shlib-app-1r.s} + {{readelf -WSsrld static-app-1r.rd} + {objdump "-drj.plt -j.text" static-app-1r.dd} + {objdump -sj.got static-app-1r.sd} + {objdump -R static-app-1r.od}} + "static-app-1r"} + {"C6X static app, BE, RELA" + "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3" + "-mdsbt -mpic -mpid=near -mbig-endian" {shlib-1.s shlib-2.s shlib-app-1.s} + {{readelf -WSsrld static-app-1b.rd} + {objdump "-drj.plt -j.text" static-app-1b.dd} + {objdump -sj.got static-app-1b.sd} + {objdump -R static-app-1b.od}} + "static-app-1b"} + {"C6X static app, BE, REL" + "-Tdsbt-be.ld --dsbt-index 0 --dsbt-size=3" + "-mdsbt -mpic -mpid=near -mbig-endian -mgenerate-rel" {shlib-1.s shlib-2.s shlib-app-1r.s} + {{readelf -WSsrld static-app-1rb.rd} + {objdump "-drj.plt -j.text" static-app-1rb.dd} + {objdump -sj.got static-app-1rb.sd} + {objdump -R static-app-1rb.od}} + "static-app-1rb"} +} + +run_ld_link_tests $shlibtests diff --git a/ld/testsuite/ld-tic6x/weak-be.d b/ld/testsuite/ld-tic6x/weak-be.d new file mode 100644 index 0000000..e2f2f90 --- /dev/null +++ b/ld/testsuite/ld-tic6x/weak-be.d @@ -0,0 +1,19 @@ +#name: C6X relocs to weak symbols, big endian +#as: -mbig-endian +#ld: -melf32_tic6x_be -Tsbr.ld +#source: weak.s +#objdump: -dr + +.*: *file format elf32-tic6x-be + + +Disassembly of section \.text: +10000000 <[^>]*>: +10000000:[ \t]+000c0362[ \t]+b \.S2 b3 +10000004:[ \t]+a00c0362[ \t]+\[a2\] b \.S2 b3 +10000008:[ \t]+000c0363[ \t]+b \.S2 b3 +1000000c:[ \t]+00800028[ \t]+\|\| mvk \.S1 0,a1 +10000010:[ \t]+0080006e[ \t]+ldw \.D2T2 \*\+b14\(0\),b1 +10000014:[ \t]+00800028[ \t]+mvk \.S1 0,a1 +10000018:[ \t]+00800068[ \t]+mvkh \.S1 0,a1 +1000001c:[ \t]+00000000[ \t]+nop 1 diff --git a/ld/testsuite/ld-tic6x/weak-data.d b/ld/testsuite/ld-tic6x/weak-data.d new file mode 100644 index 0000000..0ce96e6 --- /dev/null +++ b/ld/testsuite/ld-tic6x/weak-data.d @@ -0,0 +1,11 @@ +#name: C6X ABS relocs to undefined weak symbols +#as: -mlittle-endian +#ld: -melf32_tic6x_le -Tsbr.ld +#source: weak.s +#objdump: -s -j .data + +.*: *file format elf32-tic6x-le + + +Contents of section \.data: +[ \t]+0+80 00000000 00000000[ \t]+\.*[ \t]* diff --git a/ld/testsuite/ld-tic6x/weak.d b/ld/testsuite/ld-tic6x/weak.d new file mode 100644 index 0000000..89f4c98 --- /dev/null +++ b/ld/testsuite/ld-tic6x/weak.d @@ -0,0 +1,19 @@ +#name: C6X relocs to weak symbols, little endian +#as: -mlittle-endian +#ld: -melf32_tic6x_le -Tsbr.ld +#source: weak.s +#objdump: -dr + +.*: *file format elf32-tic6x-le + + +Disassembly of section \.text: +10000000 <[^>]*>: +10000000:[ \t]+000c0362[ \t]+b \.S2 b3 +10000004:[ \t]+a00c0362[ \t]+\[a2\] b \.S2 b3 +10000008:[ \t]+000c0363[ \t]+b \.S2 b3 +1000000c:[ \t]+00800028[ \t]+\|\| mvk \.S1 0,a1 +10000010:[ \t]+0080006e[ \t]+ldw \.D2T2 \*\+b14\(0\),b1 +10000014:[ \t]+00800028[ \t]+mvk \.S1 0,a1 +10000018:[ \t]+00800068[ \t]+mvkh \.S1 0,a1 +1000001c:[ \t]+00000000[ \t]+nop 1 diff --git a/ld/testsuite/ld-tic6x/weak.s b/ld/testsuite/ld-tic6x/weak.s new file mode 100644 index 0000000..8f9047a --- /dev/null +++ b/ld/testsuite/ld-tic6x/weak.s @@ -0,0 +1,19 @@ + .weak g + .weak g1 +.text + b .s2 g +[a2] b .s2 g + b .s2 g +|| mvk .s1 0, a1 + ldw .d2t2 *+B14(g1), B1 + mvkl .s1 g, a1 + mvkh .s1 g, a1 + + .section .data,"aw",@progbits + .align 2 + .type a, @object + .size a, 4 +a: + .long g1 + .short g1 + .byte g1 |