diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2014-12-06 16:45:22 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2014-12-06 16:45:22 +0100 |
commit | c18392d87d22191584d76f7b4a850eb9508a8f04 (patch) | |
tree | a31b29449dd6f68dd41d55932f4ec1c3d8c51a1c /ld | |
parent | b6605dddac58805d735211f0d38805bf87b6db04 (diff) | |
download | gdb-c18392d87d22191584d76f7b4a850eb9508a8f04.zip gdb-c18392d87d22191584d76f7b4a850eb9508a8f04.tar.gz gdb-c18392d87d22191584d76f7b4a850eb9508a8f04.tar.bz2 |
Add Visium support to ld
ld/
* configure.tgt: Add Visium support.
* Makefile.am (ALL_EMULATION_SOURCES): Add eelf32visium.c.
(eelf32visium.c): New rule.
* Makefile.in: Regenerate.
* emulparams/elf32visium.sh: New file.
* scripttempl/visium.sc: Likewise.
ld/testsuite/
* lib/ld-lib.exp (check_shared_lib_support): Return 0 for Visium.
* ld-visium/: New directory.
Diffstat (limited to 'ld')
31 files changed, 389 insertions, 5 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 9ec721f..7607418 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2014-12-06 Eric Botcazou <ebotcazou@adacore.com> + + * configure.tgt: Add Visium support. + * Makefile.am (ALL_EMULATION_SOURCES): Add eelf32visium.c. + (eelf32visium.c): New rule. + * Makefile.in: Regenerate. + * emulparams/elf32visium.sh: New file. + * scripttempl/visium.sc: Likewise. + 2014-11-25 H.J. Lu <hongjiu.lu@intel.com> * emulparams/elf_i386.sh (TINY_READONLY_SECTION): New. diff --git a/ld/Makefile.am b/ld/Makefile.am index 9575f1f..3639d50 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -264,6 +264,7 @@ ALL_EMULATION_SOURCES = \ eelf32tilegx_be.c \ eelf32tilepro.c \ eelf32vax.c \ + eelf32visium.c \ eelf32xc16x.c \ eelf32xc16xl.c \ eelf32xc16xs.c \ @@ -1231,6 +1232,9 @@ eelf32tilepro.c: $(srcdir)/emulparams/elf32tilepro.sh \ eelf32vax.c: $(srcdir)/emulparams/elf32vax.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} +eelf32visium.c: $(srcdir)/emulparams/elf32visium.sh \ + $(ELF_DEPS) $(srcdir)/scripttempl/visium.sc ${GEN_DEPENDS} + eelf32xc16x.c: $(srcdir)/emulparams/elf32xc16x.sh \ $(ELF_DEPS) $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index 9f56ca1..20d10a1 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -572,6 +572,7 @@ ALL_EMULATION_SOURCES = \ eelf32tilegx_be.c \ eelf32tilepro.c \ eelf32vax.c \ + eelf32visium.c \ eelf32xc16x.c \ eelf32xc16xl.c \ eelf32xc16xs.c \ @@ -1190,6 +1191,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32tilegx_be.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32tilepro.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32vax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32visium.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xc16x.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xc16xl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32xc16xs.Po@am__quote@ @@ -2672,6 +2674,9 @@ eelf32tilepro.c: $(srcdir)/emulparams/elf32tilepro.sh \ eelf32vax.c: $(srcdir)/emulparams/elf32vax.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} +eelf32visium.c: $(srcdir)/emulparams/elf32visium.sh \ + $(ELF_DEPS) $(srcdir)/scripttempl/visium.sc ${GEN_DEPENDS} + eelf32xc16x.c: $(srcdir)/emulparams/elf32xc16x.sh \ $(ELF_DEPS) $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/configure.tgt b/ld/configure.tgt index 24e36d1..2f7744a 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -755,6 +755,8 @@ vax-*-netbsdaout* | vax-*-netbsd*) targ_extra_emuls=elf32vax ;; vax-*-linux-*) targ_emul=elf32vax ;; +visium-*-elf) targ_emul=elf32visium + ;; w65-*-*) targ_emul=w65 ;; xc16x-*-elf) targ_emul=elf32xc16x diff --git a/ld/emulparams/elf32visium.sh b/ld/emulparams/elf32visium.sh new file mode 100644 index 0000000..17cf4b9 --- /dev/null +++ b/ld/emulparams/elf32visium.sh @@ -0,0 +1,9 @@ +SCRIPT_NAME=visium +OUTPUT_FORMAT="elf32-visium" +TEXT_START_ADDR=0x00000000 +MAXPAGESIZE=0x10000 +NONPAGED_TEXT_START_ADDR=0x10000 +ARCH=visium +MACHINE= +TEMPLATE_NAME=elf32 +DYNAMIC_LINK=FALSE diff --git a/ld/scripttempl/visium.sc b/ld/scripttempl/visium.sc new file mode 100644 index 0000000..60338b1 --- /dev/null +++ b/ld/scripttempl/visium.sc @@ -0,0 +1,181 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. + +# Many sections come in three flavours. There is the 'real' section, +# like ".data". Then there are the per-procedure or per-variable +# sections, generated by -ffunction-sections and -fdata-sections in GCC, +# and useful for --gc-sections, which for a variable "foo" might be +# ".data.foo". Then there are the linkonce sections, for which the linker +# eliminates duplicates, which are named like ".gnu.linkonce.d.foo". +# The exact correspondences are: +# +# Section Linkonce section +# .text .gnu.linkonce.t.foo +# .rodata .gnu.linkonce.r.foo +# .data .gnu.linkonce.d.foo +# .bss .gnu.linkonce.b.foo +# .sdata .gnu.linkonce.s.foo +# .sbss .gnu.linkonce.sb.foo +# .sdata2 .gnu.linkonce.s2.foo +# .sbss2 .gnu.linkonce.sb2.foo +# .debug_info .gnu.linkonce.wi.foo +# .tdata .gnu.linkonce.td.foo +# .tbss .gnu.linkonce.tb.foo +# .lrodata .gnu.linkonce.lr.foo +# .ldata .gnu.linkonce.l.foo +# .lbss .gnu.linkonce.lb.foo +# +# Each of these can also have corresponding .rel.* and .rela.* sections. + +test -z "$ENTRY" && ENTRY=__start +cat <<EOF +OUTPUT_FORMAT("${OUTPUT_FORMAT}") + +ENTRY(${ENTRY}) + +/* Start and end of main stack. Assumes 256K of RAM. */ +${RELOCATING+ _estack = 0xe0040000 - 4;} +${RELOCATING+ _sstack = 0xe0040000 - 64K;} + +/* End of heap. */ +${RELOCATING+ _eheap = _sstack - 4;} + + +MEMORY +{ + init : ORIGIN = 0x00000000, LENGTH = 0x0003fffc + scr : ORIGIN = 0x0003fffc, LENGTH = 0x00000004 + rom : ORIGIN = 0x00044000, LENGTH = 0x1ffbc000 + ram : ORIGIN = 0xe0000000, LENGTH = 0x10000000 + saferam : ORIGIN = 0xf0000000, LENGTH = 0x10000000 +} + + +SECTIONS +{ + .init ${RELOCATING-0} : { + KEEP (*(.init)) + KEEP (*(.fini)) + ${RELOCATING+ _einit = .;} + } ${RELOCATING+ > init} + + .text ${RELOCATING-0} : { + ${RELOCATING+ _ftext = .;} + *(.text) + ${RELOCATING+*(.text.*)} + ${RELOCATING+*(.gnu.linkonce.t.*)} + ${RELOCATING+ _etext = .;} + } ${RELOCATING+ > rom} + + .ctors ${RELOCATING-0} : { + ${CONSTRUCTING+ . = ALIGN(4);} + ${CONSTRUCTING+ __CTOR_LIST__ = .;} + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + + KEEP (*crtbegin*.o(.ctors)) + + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last. */ + + KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + ${CONSTRUCTING+ __CTOR_END__ = .;} + } ${RELOCATING+ > rom} + + .dtors ${RELOCATING-0} : { + ${CONSTRUCTING+ __DTOR_LIST__ = .;} + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + ${CONSTRUCTING+ __DTOR_END__ = .;} + } ${RELOCATING+ > rom} + .rodata ${RELOCATING-0} : { + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ _srdata = .;} + *(.rdata) + *(.rodata) + ${RELOCATING+*(.rodata.*)} + ${RELOCATING+*(.gnu.linkonce.r.*)} + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ _erdata = .;} + } ${RELOCATING+ > rom} + + .eh_frame ${RELOCATING-0} : + { + ${RELOCATING+PROVIDE (__eh_frame_begin = .);} + *(.eh_frame) + ${RELOCATING+ LONG (0);} + ${RELOCATING+PROVIDE (__eh_frame_end = .);} + } ${RELOCATING+ > rom} + .gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) } ${RELOCATING+ > rom} + .jcr ${RELOCATING-0} : { *(.jcr) } ${RELOCATING+ > rom} + + .data ${RELOCATING-0} : { + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ _sdata = .;} + *(.data) + ${RELOCATING+*(.data.*)} + ${RELOCATING+*(.gnu.linkonce.d.*)} + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ _edata = .;} + } ${RELOCATING+ > ram} + .bss ${RELOCATING-0} : { + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ __bss_start = .;} + *(.bss) + ${RELOCATING+*(.bss.*)} + ${RELOCATING+*(.gnu.linkonce.b.*)} + *(COMMON) + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ __bss_end = .;} + ${RELOCATING+ _sheap = .;} + } ${RELOCATING+ > ram} + + saferam ${RELOCATING-0} : { + *(saferam) + ${RELOCATING+ . = ALIGN(4);} + ${RELOCATING+ unitidentry = .;} + } ${RELOCATING+ > saferam} + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + + .comment 0 : { *(.comment) } + +EOF + +. $srcdir/scripttempl/DWARF.sc + +cat <<EOF +} + +/* Provide a default address for the simulated file-I/O device. */ +PROVIDE (_sim_fileio_register = 0x2fff0000); + +/* Provide a default address for the simulated command line device. */ +PROVIDE (_sim_cmdline_header = 0x2ffe0000); + +/* Provide a default address for the simulated 1 MHz clock. */ +PROVIDE (_sim_clock = 0x20002100); + +EOF diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 8ebe2fb..b27177e 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-12-06 Eric Botcazou <ebotcazou@adacore.com> + + * lib/ld-lib.exp (check_shared_lib_support): Return 0 for Visium. + * ld-visium/: New directory. + 2014-12-04 Alan Modra <amodra@gmail.com> * ld-powerpc/vxworks-relax.rd: Update for reloc sorting. diff --git a/ld/testsuite/ld-elf/eh-frame-hdr.d b/ld/testsuite/ld-elf/eh-frame-hdr.d index 45a890d..4214ed5 100644 --- a/ld/testsuite/ld-elf/eh-frame-hdr.d +++ b/ld/testsuite/ld-elf/eh-frame-hdr.d @@ -2,7 +2,7 @@ #ld: -e _start --eh-frame-hdr #objdump: -hw #target: cfi -#xfail: avr*-*-* or1k-*-* +#xfail: avr*-*-* or1k-*-* visium-*-* # avr doesn't support shared libraries. #... [0-9] .eh_frame_hdr 0*[12][048c] .* diff --git a/ld/testsuite/ld-elf/eh5.d b/ld/testsuite/ld-elf/eh5.d index 29dcdf9..1a5148c 100644 --- a/ld/testsuite/ld-elf/eh5.d +++ b/ld/testsuite/ld-elf/eh5.d @@ -4,7 +4,7 @@ #ld: #readelf: -wf #target: cfi -#notarget: alpha* hppa64* tile* +#notarget: alpha* hppa64* tile* visium* Contents of the .eh_frame section: diff --git a/ld/testsuite/ld-elf/flags1.d b/ld/testsuite/ld-elf/flags1.d index 63c2e3a..e7c6b4f 100644 --- a/ld/testsuite/ld-elf/flags1.d +++ b/ld/testsuite/ld-elf/flags1.d @@ -3,9 +3,9 @@ #objcopy_linked_file: --set-section-flags .post_text_reserve=contents,alloc,load,readonly,code #readelf: -l --wide #xfail: "avr-*-*" "dlx-*-*" "h8300-*-*" "i960-*-*" "ip2k-*-*" "m32r-*-*" -#xfail: "moxie-*-*" "mt-*-*" "*-*-nacl*" +#xfail: "moxie-*-*" "mt-*-*" "visium-*-*" "*-*-nacl*" #xfail: "*-*-hpux*" "hppa*64*-*-*" -# Fails on the AVR, DLX, H8300, I960, IP2K, M32R, MOXIE, MT, +# Fails on the AVR, DLX, H8300, I960, IP2K, M32R, MOXIE, MT, VISIUM # and all NaCl targets, # because the two sections are not merged into one segment. # (There is no good reason why they have to be). diff --git a/ld/testsuite/ld-elf/pr14926.d b/ld/testsuite/ld-elf/pr14926.d index 148c8b4..4f7fef4 100644 --- a/ld/testsuite/ld-elf/pr14926.d +++ b/ld/testsuite/ld-elf/pr14926.d @@ -1,6 +1,6 @@ #ld: -Ttext=0x60 #readelf: -S --wide -#notarget: d10v-*-* msp*-*-* xstormy*-*-* +#notarget: d10v-*-* msp*-*-* visium-*-* xstormy*-*-* # the above targets use memory regions that don't allow 0x60 for .text #... diff --git a/ld/testsuite/ld-elf/sec-to-seg.exp b/ld/testsuite/ld-elf/sec-to-seg.exp index 612dd0c..30bf756 100644 --- a/ld/testsuite/ld-elf/sec-to-seg.exp +++ b/ld/testsuite/ld-elf/sec-to-seg.exp @@ -86,6 +86,7 @@ if { [istarget avr-*-*] || [istarget moxie-*-*] || [istarget msp430-*-*] || [istarget mt-*-*] + || [istarget visium-*-*] } { set B_test_same_seg 0 } else { diff --git a/ld/testsuite/ld-visium/brr_x_backward.d b/ld/testsuite/ld-visium/brr_x_backward.d new file mode 100644 index 0000000..543e912 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_backward.d @@ -0,0 +1,4 @@ +#source: brr_x_backward1.s +#source: brr_x_backward2.s +#ld: +#error: relocation truncated to fit: R_VISIUM_PC16 diff --git a/ld/testsuite/ld-visium/brr_x_backward1.s b/ld/testsuite/ld-visium/brr_x_backward1.s new file mode 100644 index 0000000..03542f2 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_backward1.s @@ -0,0 +1,6 @@ + .text + .global start +start: + .global L1,L2 +L1: nop +L2: diff --git a/ld/testsuite/ld-visium/brr_x_backward2.s b/ld/testsuite/ld-visium/brr_x_backward2.s new file mode 100644 index 0000000..ef15268bf --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_backward2.s @@ -0,0 +1,7 @@ + .text + .rept 32767 + nop + .endr + brr tr,L1 + nop + brr tr,L2 diff --git a/ld/testsuite/ld-visium/brr_x_forward.d b/ld/testsuite/ld-visium/brr_x_forward.d new file mode 100644 index 0000000..29adf74 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_forward.d @@ -0,0 +1,4 @@ +#source: brr_x_forward1.s +#source: brr_x_forward2.s +#ld: +#error: relocation truncated to fit: R_VISIUM_PC16 diff --git a/ld/testsuite/ld-visium/brr_x_forward1.s b/ld/testsuite/ld-visium/brr_x_forward1.s new file mode 100644 index 0000000..34fddf8 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_forward1.s @@ -0,0 +1,7 @@ + .text + brr tr,L1 + nop + brr tr,L2 + .rept 32765 + nop + .endr diff --git a/ld/testsuite/ld-visium/brr_x_forward2.s b/ld/testsuite/ld-visium/brr_x_forward2.s new file mode 100644 index 0000000..65e3dae --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_forward2.s @@ -0,0 +1,6 @@ + .global start + .global L1,L2 + .text +start: +L1: nop +L2: diff --git a/ld/testsuite/ld-visium/brr_x_seg.s b/ld/testsuite/ld-visium/brr_x_seg.s new file mode 100644 index 0000000..8a55711 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_seg.s @@ -0,0 +1,9 @@ + .text + nop + brr tr,L1 + nop + .data + .global start +start: + .long 0 +L1: diff --git a/ld/testsuite/ld-visium/brr_x_seg1.d b/ld/testsuite/ld-visium/brr_x_seg1.d new file mode 100644 index 0000000..ace1028 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_seg1.d @@ -0,0 +1,3 @@ +#source: brr_x_seg.s +#ld: -T ld1.ld +#error: relocation truncated to fit: R_VISIUM_PC16 diff --git a/ld/testsuite/ld-visium/brr_x_seg2.d b/ld/testsuite/ld-visium/brr_x_seg2.d new file mode 100644 index 0000000..9441d86 --- /dev/null +++ b/ld/testsuite/ld-visium/brr_x_seg2.d @@ -0,0 +1,3 @@ +#source: brr_x_seg.s +#ld: -T ld2.ld +#error: relocation truncated to fit: R_VISIUM_PC16 diff --git a/ld/testsuite/ld-visium/imm_x_seg.d b/ld/testsuite/ld-visium/imm_x_seg.d new file mode 100644 index 0000000..d52fb7e --- /dev/null +++ b/ld/testsuite/ld-visium/imm_x_seg.d @@ -0,0 +1,3 @@ +#source: imm_x_seg.s +#ld: -T ld3.ld +#error: relocation truncated to fit: R_VISIUM_IM16_PCREL diff --git a/ld/testsuite/ld-visium/imm_x_seg.s b/ld/testsuite/ld-visium/imm_x_seg.s new file mode 100644 index 0000000..d490b6f --- /dev/null +++ b/ld/testsuite/ld-visium/imm_x_seg.s @@ -0,0 +1,8 @@ + .section seg1 +foo: + nop + moviq r6,bar-foo + + .section seg2 +bar: + .end diff --git a/ld/testsuite/ld-visium/ld1.ld b/ld/testsuite/ld-visium/ld1.ld new file mode 100644 index 0000000..fc33cf8 --- /dev/null +++ b/ld/testsuite/ld-visium/ld1.ld @@ -0,0 +1,9 @@ +SECTIONS +{ + .text 0x10000 : { + *(.text) + } + .data 0x30000 : { + *(.data) + } +} diff --git a/ld/testsuite/ld-visium/ld2.ld b/ld/testsuite/ld-visium/ld2.ld new file mode 100644 index 0000000..74f399a --- /dev/null +++ b/ld/testsuite/ld-visium/ld2.ld @@ -0,0 +1,9 @@ +SECTIONS +{ + .text 0x30004 : { + *(.text) + } + .data 0x10000 : { + *(.data) + } +} diff --git a/ld/testsuite/ld-visium/ld3.ld b/ld/testsuite/ld-visium/ld3.ld new file mode 100644 index 0000000..e3934cd --- /dev/null +++ b/ld/testsuite/ld-visium/ld3.ld @@ -0,0 +1,9 @@ +SECTIONS +{ + seg1 0x10000 : { + *(seg1) + } + seg2 0x20000 : { + *(seg2) + } +} diff --git a/ld/testsuite/ld-visium/reloc.d b/ld/testsuite/ld-visium/reloc.d new file mode 100644 index 0000000..bca5817 --- /dev/null +++ b/ld/testsuite/ld-visium/reloc.d @@ -0,0 +1,14 @@ +#source: reloc1.s +#source: reloc2.s +#ld: -T ld1.ld +#objdump: -s + +.*: +file format .* + +Contents of section .text: + 10000 00000000 7800000a 84c20034 8482003c ....x......4...< + 10010 84a20001 84c20002 0442002c 84020002 .........B.,.... + 10020 0482002c 84a20002 84c21000 ...,........ +Contents of section .data: + 30000 00140014 00000014 0001002c 0002002c ...........,..., + 30010 10001010 .... diff --git a/ld/testsuite/ld-visium/reloc1.s b/ld/testsuite/ld-visium/reloc1.s new file mode 100644 index 0000000..41be3de --- /dev/null +++ b/ld/testsuite/ld-visium/reloc1.s @@ -0,0 +1,24 @@ + .data +foo: + .byte 0 + .byte data1-foo + .word data1-foo + .long data1-foo + .long text1 + .long text2 + .word abs1 + .word abs1+0x10 + .text +bar: + nop + brr tr,text1 + moviq r2,text1-bar+8 + movil r2,%l text2-bar+16 + moviu r2,%u text2-bar+16 + moviq r2,%u text2 + subi r2,%l text2 + addi r2,%u text2 + movil r2, text2 ; with movil, the %l may be omitted + moviu r2,%u text2 + moviq r2,abs1 + .end diff --git a/ld/testsuite/ld-visium/reloc2.s b/ld/testsuite/ld-visium/reloc2.s new file mode 100644 index 0000000..517d977 --- /dev/null +++ b/ld/testsuite/ld-visium/reloc2.s @@ -0,0 +1,12 @@ + .global abs1 +abs1 = 0x1000 + + .data + .global data1 +data1: + .text + .global text1 +text1: + .global text2 +text2 = . + 65536 + .end diff --git a/ld/testsuite/ld-visium/visium.exp b/ld/testsuite/ld-visium/visium.exp new file mode 100644 index 0000000..c61467c --- /dev/null +++ b/ld/testsuite/ld-visium/visium.exp @@ -0,0 +1,30 @@ +# Expect script for Visium tests. +# Copyright (C) 2014 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. + +# Visium linker testsuite. + +if [istarget visium-*-*] { + run_dump_test "brr_x_backward" + run_dump_test "brr_x_forward" + run_dump_test "brr_x_seg1" + run_dump_test "brr_x_seg2" + run_dump_test "imm_x_seg" + run_dump_test "reloc" +} diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp index 870cd12..1d112d6 100644 --- a/ld/testsuite/lib/ld-lib.exp +++ b/ld/testsuite/lib/ld-lib.exp @@ -1652,6 +1652,7 @@ proc check_shared_lib_support { } { && ![istarget rx-*-*] && ![istarget spu-*-*] && ![istarget v850*-*-*] + && ![istarget visium-*-*] && ![istarget xstormy16-*-*] && ![istarget *-*-irix*] && ![istarget *-*-rtems] } { |