diff options
Diffstat (limited to 'gas')
156 files changed, 170 insertions, 10629 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 2f21bd5..2816772 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,163 @@ 2018-04-16 Alan Modra <amodra@gmail.com> + * Makefile.am: Remove sh5 and sh64 support. + * config/tc-sh.c: Likewise. + * configure.tgt: Likewise. + * doc/Makefile.am: Likewise. + * doc/as.texinfo: Likewise. + * testsuite/gas/cfi/cfi.exp: Likewise. + * testsuite/gas/sh/basic.exp: Likewise. + * config/tc-sh64.c: Delete. + * config/tc-sh64.h: Delete. + * doc/c-sh64.texi: Delete. + * testsuite/gas/sh/sh64/abi-32.d: Delete. + * testsuite/gas/sh/sh64/abi-32.s: Delete. + * testsuite/gas/sh/sh64/abi-64.d: Delete. + * testsuite/gas/sh/sh64/abi-64.s: Delete. + * testsuite/gas/sh/sh64/basic-1.d: Delete. + * testsuite/gas/sh/sh64/basic-1.s: Delete. + * testsuite/gas/sh/sh64/case-1.d: Delete. + * testsuite/gas/sh/sh64/case-1.s: Delete. + * testsuite/gas/sh/sh64/case-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/crange1-1.d: Delete. + * testsuite/gas/sh/sh64/crange1-2.d: Delete. + * testsuite/gas/sh/sh64/crange1.s: Delete. + * testsuite/gas/sh/sh64/crange2-1.d: Delete. + * testsuite/gas/sh/sh64/crange2-2.d: Delete. + * testsuite/gas/sh/sh64/crange2-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/crange2.s: Delete. + * testsuite/gas/sh/sh64/crange3-1.d: Delete. + * testsuite/gas/sh/sh64/crange3.s: Delete. + * testsuite/gas/sh/sh64/crange4-1.d: Delete. + * testsuite/gas/sh/sh64/crange4.s: Delete. + * testsuite/gas/sh/sh64/crange5-1.d: Delete. + * testsuite/gas/sh/sh64/crange5.s: Delete. + * testsuite/gas/sh/sh64/creg-1.d: Delete. + * testsuite/gas/sh/sh64/creg-1.s: Delete. + * testsuite/gas/sh/sh64/creg-2.d: Delete. + * testsuite/gas/sh/sh64/creg-2.s: Delete. + * testsuite/gas/sh/sh64/datal-1.s: Delete. + * testsuite/gas/sh/sh64/datal-2.d: Delete. + * testsuite/gas/sh/sh64/datal-2.s: Delete. + * testsuite/gas/sh/sh64/datal-3.s: Delete. + * testsuite/gas/sh/sh64/datal32-1.d: Delete. + * testsuite/gas/sh/sh64/datal32-3.d: Delete. + * testsuite/gas/sh/sh64/datal64-1.d: Delete. + * testsuite/gas/sh/sh64/datal64-3.d: Delete. + * testsuite/gas/sh/sh64/eh-1.d: Delete. + * testsuite/gas/sh/sh64/eh-1.s: Delete. + * testsuite/gas/sh/sh64/endian-1.d: Delete. + * testsuite/gas/sh/sh64/endian-1.s: Delete. + * testsuite/gas/sh/sh64/endian-2.d: Delete. + * testsuite/gas/sh/sh64/endian-2.s: Delete. + * testsuite/gas/sh/sh64/err-1.s: Delete. + * testsuite/gas/sh/sh64/err-2.s: Delete. + * testsuite/gas/sh/sh64/err-3.s: Delete. + * testsuite/gas/sh/sh64/err-4.s: Delete. + * testsuite/gas/sh/sh64/err-abi-32.s: Delete. + * testsuite/gas/sh/sh64/err-abi-64.s: Delete. + * testsuite/gas/sh/sh64/err-dsp.s: Delete. + * testsuite/gas/sh/sh64/err-movi-noexp-1.s: Delete. + * testsuite/gas/sh/sh64/err-noexp-cmd1.s: Delete. + * testsuite/gas/sh/sh64/err-pt-1.s: Delete. + * testsuite/gas/sh/sh64/err-pt32-cmd1.s: Delete. + * testsuite/gas/sh/sh64/err-pt32-cmd2.s: Delete. + * testsuite/gas/sh/sh64/err-pt32-cmd3.s: Delete. + * testsuite/gas/sh/sh64/err-ptb-1.s: Delete. + * testsuite/gas/sh/sh64/err-ptb-2.s: Delete. + * testsuite/gas/sh/sh64/err.exp: Delete. + * testsuite/gas/sh/sh64/immexpr1.s: Delete. + * testsuite/gas/sh/sh64/immexpr2.s: Delete. + * testsuite/gas/sh/sh64/immexpr32-1.d: Delete. + * testsuite/gas/sh/sh64/immexpr32-2.d: Delete. + * testsuite/gas/sh/sh64/immexpr64-1.d: Delete. + * testsuite/gas/sh/sh64/immexpr64-2.d: Delete. + * testsuite/gas/sh/sh64/lineno.d: Delete. + * testsuite/gas/sh/sh64/lineno.s: Delete. + * testsuite/gas/sh/sh64/localcom-1.d: Delete. + * testsuite/gas/sh/sh64/localcom-1.s: Delete. + * testsuite/gas/sh/sh64/mix-1.d: Delete. + * testsuite/gas/sh/sh64/mix-1.s: Delete. + * testsuite/gas/sh/sh64/mix-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/movi-1.s: Delete. + * testsuite/gas/sh/sh64/movi-2.s: Delete. + * testsuite/gas/sh/sh64/movi-3.d: Delete. + * testsuite/gas/sh/sh64/movi-3.s: Delete. + * testsuite/gas/sh/sh64/movi32-1.d: Delete. + * testsuite/gas/sh/sh64/movi32-2.d: Delete. + * testsuite/gas/sh/sh64/movi32-noexp-2.d: Delete. + * testsuite/gas/sh/sh64/movi64-1.d: Delete. + * testsuite/gas/sh/sh64/movi64-2.d: Delete. + * testsuite/gas/sh/sh64/movi64-2.s: Delete. + * testsuite/gas/sh/sh64/movi64-3.d: Delete. + * testsuite/gas/sh/sh64/movi64-noexp-2.d: Delete. + * testsuite/gas/sh/sh64/pt-1.d: Delete. + * testsuite/gas/sh/sh64/pt-1.s: Delete. + * testsuite/gas/sh/sh64/pt-2.s: Delete. + * testsuite/gas/sh/sh64/pt-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/pt32-1.d: Delete. + * testsuite/gas/sh/sh64/pt32-noexp-2.d: Delete. + * testsuite/gas/sh/sh64/pt64-1.d: Delete. + * testsuite/gas/sh/sh64/pt64-32-1.d: Delete. + * testsuite/gas/sh/sh64/pt64-32-2.d: Delete. + * testsuite/gas/sh/sh64/pt64-noexp-2.d: Delete. + * testsuite/gas/sh/sh64/ptc-1.s: Delete. + * testsuite/gas/sh/sh64/ptc32-1.d: Delete. + * testsuite/gas/sh/sh64/ptc32-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/ptc64-1.d: Delete. + * testsuite/gas/sh/sh64/ptc64-32-1.d: Delete. + * testsuite/gas/sh/sh64/ptc64-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/ptext-1.s: Delete. + * testsuite/gas/sh/sh64/ptext32-1.d: Delete. + * testsuite/gas/sh/sh64/ptext32-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/ptext64-1.d: Delete. + * testsuite/gas/sh/sh64/ptext64-32-1.d: Delete. + * testsuite/gas/sh/sh64/ptext64-noexp-1.d: Delete. + * testsuite/gas/sh/sh64/rel-1.s: Delete. + * testsuite/gas/sh/sh64/rel-2.s: Delete. + * testsuite/gas/sh/sh64/rel-3.s: Delete. + * testsuite/gas/sh/sh64/rel-4.s: Delete. + * testsuite/gas/sh/sh64/rel-5.s: Delete. + * testsuite/gas/sh/sh64/rel32-1.d: Delete. + * testsuite/gas/sh/sh64/rel32-2.d: Delete. + * testsuite/gas/sh/sh64/rel32-3.d: Delete. + * testsuite/gas/sh/sh64/rel32-4.d: Delete. + * testsuite/gas/sh/sh64/rel32-5.d: Delete. + * testsuite/gas/sh/sh64/rel64-1.d: Delete. + * testsuite/gas/sh/sh64/rel64-2.d: Delete. + * testsuite/gas/sh/sh64/rel64-3.d: Delete. + * testsuite/gas/sh/sh64/rel64-4.d: Delete. + * testsuite/gas/sh/sh64/rel64-5.d: Delete. + * testsuite/gas/sh/sh64/relax-1.d: Delete. + * testsuite/gas/sh/sh64/relax-1.s: Delete. + * testsuite/gas/sh/sh64/relax-2.d: Delete. + * testsuite/gas/sh/sh64/relax-2.s: Delete. + * testsuite/gas/sh/sh64/relax-3.d: Delete. + * testsuite/gas/sh/sh64/relax-3.s: Delete. + * testsuite/gas/sh/sh64/sh64.exp: Delete. + * testsuite/gas/sh/sh64/shift-1.s: Delete. + * testsuite/gas/sh/sh64/shift-2.s: Delete. + * testsuite/gas/sh/sh64/shift-3.s: Delete. + * testsuite/gas/sh/sh64/shift32-1.d: Delete. + * testsuite/gas/sh/sh64/shift32-3.d: Delete. + * testsuite/gas/sh/sh64/shift32-noexp-3.d: Delete. + * testsuite/gas/sh/sh64/shift64-1.d: Delete. + * testsuite/gas/sh/sh64/shift64-2.d: Delete. + * testsuite/gas/sh/sh64/shift64-3.d: Delete. + * testsuite/gas/sh/sh64/shift64-noexp-3.d: Delete. + * testsuite/gas/sh/sh64/syntax-1.d: Delete. + * testsuite/gas/sh/sh64/syntax-1.s: Delete. + * testsuite/gas/sh/sh64/syntax-2.d: Delete. + * testsuite/gas/sh/sh64/syntax-2.s: Delete. + * testsuite/gas/sh/sh64/ua-1.s: Delete. + * testsuite/gas/sh/sh64/ua32-1.d: Delete. + * testsuite/gas/sh/sh64/ua64-1.d: Delete. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + * po/POTFILES.in: Regenerate. + +2018-04-16 Alan Modra <amodra@gmail.com> + * config/tc-sh.c: Remove sh-symbianelf support. * config/tc-sh.h: Likewise. * configure.ac: Likewise. diff --git a/gas/Makefile.am b/gas/Makefile.am index a6d3caa..5411cef 100644 --- a/gas/Makefile.am +++ b/gas/Makefile.am @@ -181,7 +181,6 @@ TARGET_CPU_CFILES = \ config/tc-s390.c \ config/tc-score.c \ config/tc-sh.c \ - config/tc-sh64.c \ config/tc-sparc.c \ config/tc-spu.c \ config/tc-tic30.c \ @@ -254,7 +253,6 @@ TARGET_CPU_HFILES = \ config/tc-s390.h \ config/tc-score.h \ config/tc-sh.h \ - config/tc-sh64.h \ config/tc-sparc.h \ config/tc-spu.h \ config/tc-tic30.h \ diff --git a/gas/Makefile.in b/gas/Makefile.in index a95f74e..4460a39 100644 --- a/gas/Makefile.in +++ b/gas/Makefile.in @@ -477,7 +477,6 @@ TARGET_CPU_CFILES = \ config/tc-s390.c \ config/tc-score.c \ config/tc-sh.c \ - config/tc-sh64.c \ config/tc-sparc.c \ config/tc-spu.c \ config/tc-tic30.c \ @@ -550,7 +549,6 @@ TARGET_CPU_HFILES = \ config/tc-s390.h \ config/tc-score.h \ config/tc-sh.h \ - config/tc-sh64.h \ config/tc-sparc.h \ config/tc-spu.h \ config/tc-tic30.h \ @@ -907,7 +905,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-s390.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-score.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-sh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-sh64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-sparc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-spu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-tic30.Po@am__quote@ @@ -1679,20 +1676,6 @@ tc-sh.obj: config/tc-sh.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-sh.obj `if test -f 'config/tc-sh.c'; then $(CYGPATH_W) 'config/tc-sh.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-sh.c'; fi` -tc-sh64.o: config/tc-sh64.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-sh64.o -MD -MP -MF $(DEPDIR)/tc-sh64.Tpo -c -o tc-sh64.o `test -f 'config/tc-sh64.c' || echo '$(srcdir)/'`config/tc-sh64.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-sh64.Tpo $(DEPDIR)/tc-sh64.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-sh64.c' object='tc-sh64.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-sh64.o `test -f 'config/tc-sh64.c' || echo '$(srcdir)/'`config/tc-sh64.c - -tc-sh64.obj: config/tc-sh64.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-sh64.obj -MD -MP -MF $(DEPDIR)/tc-sh64.Tpo -c -o tc-sh64.obj `if test -f 'config/tc-sh64.c'; then $(CYGPATH_W) 'config/tc-sh64.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-sh64.c'; fi` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-sh64.Tpo $(DEPDIR)/tc-sh64.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-sh64.c' object='tc-sh64.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-sh64.obj `if test -f 'config/tc-sh64.c'; then $(CYGPATH_W) 'config/tc-sh64.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-sh64.c'; fi` - tc-sparc.o: config/tc-sparc.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-sparc.o -MD -MP -MF $(DEPDIR)/tc-sparc.Tpo -c -o tc-sparc.o `test -f 'config/tc-sparc.c' || echo '$(srcdir)/'`config/tc-sparc.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-sparc.Tpo $(DEPDIR)/tc-sparc.Po diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index 2704457..9b58db3 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -106,18 +106,6 @@ const pseudo_typeS md_pseudo_table[] = {"2byte", s_uacons, 2}, {"4byte", s_uacons, 4}, {"8byte", s_uacons, 8}, -#ifdef HAVE_SH64 - {"mode", s_sh64_mode, 0 }, - - /* Have the old name too. */ - {"isa", s_sh64_mode, 0 }, - - /* Assert that the right ABI is used. */ - {"abi", s_sh64_abi, 0 }, - - { "vtable_inherit", sh64_vtable_inherit, 0 }, - { "vtable_entry", sh64_vtable_entry, 0 }, -#endif /* HAVE_SH64 */ {0, 0, 0} }; @@ -167,31 +155,8 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP"; #define COND_JUMP_DELAY 2 #define UNCOND_JUMP 3 -#ifdef HAVE_SH64 - -/* A 16-bit (times four) pc-relative operand, at most expanded to 32 bits. */ -#define SH64PCREL16_32 4 -/* A 16-bit (times four) pc-relative operand, at most expanded to 64 bits. */ -#define SH64PCREL16_64 5 - -/* Variants of the above for adjusting the insn to PTA or PTB according to - the label. */ -#define SH64PCREL16PT_32 6 -#define SH64PCREL16PT_64 7 - -/* A MOVI expansion, expanding to at most 32 or 64 bits. */ -#define MOVI_IMM_32 8 -#define MOVI_IMM_32_PCREL 9 -#define MOVI_IMM_64 10 -#define MOVI_IMM_64_PCREL 11 -#define END 12 - -#else /* HAVE_SH64 */ - #define END 4 -#endif /* HAVE_SH64 */ - #define UNDEF_DISP 0 #define COND8 1 #define COND12 2 @@ -201,24 +166,6 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP"; #define UNCOND12 1 #define UNCOND32 2 -#ifdef HAVE_SH64 -#define UNDEF_SH64PCREL 0 -#define SH64PCREL16 1 -#define SH64PCREL32 2 -#define SH64PCREL48 3 -#define SH64PCREL64 4 -#define SH64PCRELPLT 5 - -#define UNDEF_MOVI 0 -#define MOVI_16 1 -#define MOVI_32 2 -#define MOVI_48 3 -#define MOVI_64 4 -#define MOVI_PLT 5 -#define MOVI_GOTOFF 6 -#define MOVI_GOTPC 7 -#endif /* HAVE_SH64 */ - /* Branch displacements are from the address of the branch plus four, thus all minimum and maximum values have 4 added to them. */ #define COND8_F 258 @@ -249,85 +196,6 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP"; #define UNCOND32_M -(1<<30) #define UNCOND32_LENGTH 14 -#ifdef HAVE_SH64 -/* The trivial expansion of a SH64PCREL16 relaxation is just a "PT label, - TRd" as is the current insn, so no extra length. Note that the "reach" - is calculated from the address *after* that insn, but the offset in the - insn is calculated from the beginning of the insn. We also need to - take into account the implicit 1 coded as the "A" in PTA when counting - forward. If PTB reaches an odd address, we trap that as an error - elsewhere, so we don't have to have different relaxation entries. We - don't add a one to the negative range, since PTB would then have the - farthest backward-reaching value skipped, not generated at relaxation. */ -#define SH64PCREL16_F (32767 * 4 - 4 + 1) -#define SH64PCREL16_M (-32768 * 4 - 4) -#define SH64PCREL16_LENGTH 0 - -/* The next step is to change that PT insn into - MOVI ((label - datalabel Ln) >> 16) & 65535, R25 - SHORI (label - datalabel Ln) & 65535, R25 - Ln: - PTREL R25,TRd - which means two extra insns, 8 extra bytes. This is the limit for the - 32-bit ABI. - - The expressions look a bit bad since we have to adjust this to avoid overflow on a - 32-bit host. */ -#define SH64PCREL32_F ((((long) 1 << 30) - 1) * 2 + 1 - 4) -#define SH64PCREL32_LENGTH (2 * 4) - -/* Similarly, we just change the MOVI and add a SHORI for the 48-bit - expansion. */ -#if BFD_HOST_64BIT_LONG -/* The "reach" type is long, so we can only do this for a 64-bit-long - host. */ -#define SH64PCREL32_M ((-((long) 1 << 30)) * 2 - 4) -#define SH64PCREL48_F ((((long) 1 << 47) - 1) - 4) -#define SH64PCREL48_M ((-((long) 1 << 47)) - 4) -#define SH64PCREL48_LENGTH (3 * 4) -#else -/* If the host does not have 64-bit longs, just make this state identical - in reach to the 32-bit state. Note that we have a slightly incorrect - reach, but the correct one above will overflow a 32-bit number. */ -#define SH64PCREL32_M ((-((long) 1 << 30)) * 2) -#define SH64PCREL48_F SH64PCREL32_F -#define SH64PCREL48_M SH64PCREL32_M -#define SH64PCREL48_LENGTH (3 * 4) -#endif /* BFD_HOST_64BIT_LONG */ - -/* And similarly for the 64-bit expansion; a MOVI + SHORI + SHORI + SHORI - + PTREL sequence. */ -#define SH64PCREL64_LENGTH (4 * 4) - -/* For MOVI, we make the MOVI + SHORI... expansion you can see in the - SH64PCREL expansions. The PCREL one is similar, but the other has no - pc-relative reach; it must be fully expanded in - shmedia_md_estimate_size_before_relax. */ -#define MOVI_16_LENGTH 0 -#define MOVI_16_F (32767 - 4) -#define MOVI_16_M (-32768 - 4) -#define MOVI_32_LENGTH 4 -#define MOVI_32_F ((((long) 1 << 30) - 1) * 2 + 1 - 4) -#define MOVI_48_LENGTH 8 - -#if BFD_HOST_64BIT_LONG -/* The "reach" type is long, so we can only do this for a 64-bit-long - host. */ -#define MOVI_32_M ((-((long) 1 << 30)) * 2 - 4) -#define MOVI_48_F ((((long) 1 << 47) - 1) - 4) -#define MOVI_48_M ((-((long) 1 << 47)) - 4) -#else -/* If the host does not have 64-bit longs, just make this state identical - in reach to the 32-bit state. Note that we have a slightly incorrect - reach, but the correct one above will overflow a 32-bit number. */ -#define MOVI_32_M ((-((long) 1 << 30)) * 2) -#define MOVI_48_F MOVI_32_F -#define MOVI_48_M MOVI_32_M -#endif /* BFD_HOST_64BIT_LONG */ - -#define MOVI_64_LENGTH 12 -#endif /* HAVE_SH64 */ - #define EMPTY { 0, 0, 0, 0 } const relax_typeS md_relax_table[C (END, 0)] = { @@ -369,117 +237,6 @@ const relax_typeS md_relax_table[C (END, 0)] = { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, -#ifdef HAVE_SH64 - /* C (SH64PCREL16_32, SH64PCREL16) */ - EMPTY, - { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16_32, SH64PCREL32) }, - /* C (SH64PCREL16_32, SH64PCREL32) */ - { 0, 0, SH64PCREL32_LENGTH, 0 }, - EMPTY, EMPTY, - /* C (SH64PCREL16_32, SH64PCRELPLT) */ - { 0, 0, SH64PCREL32_LENGTH, 0 }, - EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (SH64PCREL16_64, SH64PCREL16) */ - EMPTY, - { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16_64, SH64PCREL32) }, - /* C (SH64PCREL16_64, SH64PCREL32) */ - { SH64PCREL32_F, SH64PCREL32_M, SH64PCREL32_LENGTH, C (SH64PCREL16_64, SH64PCREL48) }, - /* C (SH64PCREL16_64, SH64PCREL48) */ - { SH64PCREL48_F, SH64PCREL48_M, SH64PCREL48_LENGTH, C (SH64PCREL16_64, SH64PCREL64) }, - /* C (SH64PCREL16_64, SH64PCREL64) */ - { 0, 0, SH64PCREL64_LENGTH, 0 }, - /* C (SH64PCREL16_64, SH64PCRELPLT) */ - { 0, 0, SH64PCREL64_LENGTH, 0 }, - EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (SH64PCREL16PT_32, SH64PCREL16) */ - EMPTY, - { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16PT_32, SH64PCREL32) }, - /* C (SH64PCREL16PT_32, SH64PCREL32) */ - { 0, 0, SH64PCREL32_LENGTH, 0 }, - EMPTY, EMPTY, - /* C (SH64PCREL16PT_32, SH64PCRELPLT) */ - { 0, 0, SH64PCREL32_LENGTH, 0 }, - EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (SH64PCREL16PT_64, SH64PCREL16) */ - EMPTY, - { SH64PCREL16_F, SH64PCREL16_M, SH64PCREL16_LENGTH, C (SH64PCREL16PT_64, SH64PCREL32) }, - /* C (SH64PCREL16PT_64, SH64PCREL32) */ - { SH64PCREL32_F, - SH64PCREL32_M, - SH64PCREL32_LENGTH, - C (SH64PCREL16PT_64, SH64PCREL48) }, - /* C (SH64PCREL16PT_64, SH64PCREL48) */ - { SH64PCREL48_F, SH64PCREL48_M, SH64PCREL48_LENGTH, C (SH64PCREL16PT_64, SH64PCREL64) }, - /* C (SH64PCREL16PT_64, SH64PCREL64) */ - { 0, 0, SH64PCREL64_LENGTH, 0 }, - /* C (SH64PCREL16PT_64, SH64PCRELPLT) */ - { 0, 0, SH64PCREL64_LENGTH, 0}, - EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (MOVI_IMM_32, UNDEF_MOVI) */ - { 0, 0, MOVI_32_LENGTH, 0 }, - /* C (MOVI_IMM_32, MOVI_16) */ - { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_32, MOVI_32) }, - /* C (MOVI_IMM_32, MOVI_32) */ - { MOVI_32_F, MOVI_32_M, MOVI_32_LENGTH, 0 }, - EMPTY, EMPTY, EMPTY, - /* C (MOVI_IMM_32, MOVI_GOTOFF) */ - { 0, 0, MOVI_32_LENGTH, 0 }, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (MOVI_IMM_32_PCREL, MOVI_16) */ - EMPTY, - { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_32_PCREL, MOVI_32) }, - /* C (MOVI_IMM_32_PCREL, MOVI_32) */ - { 0, 0, MOVI_32_LENGTH, 0 }, - EMPTY, EMPTY, - /* C (MOVI_IMM_32_PCREL, MOVI_PLT) */ - { 0, 0, MOVI_32_LENGTH, 0 }, - EMPTY, - /* C (MOVI_IMM_32_PCREL, MOVI_GOTPC) */ - { 0, 0, MOVI_32_LENGTH, 0 }, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (MOVI_IMM_64, UNDEF_MOVI) */ - { 0, 0, MOVI_64_LENGTH, 0 }, - /* C (MOVI_IMM_64, MOVI_16) */ - { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_64, MOVI_32) }, - /* C (MOVI_IMM_64, MOVI_32) */ - { MOVI_32_F, MOVI_32_M, MOVI_32_LENGTH, C (MOVI_IMM_64, MOVI_48) }, - /* C (MOVI_IMM_64, MOVI_48) */ - { MOVI_48_F, MOVI_48_M, MOVI_48_LENGTH, C (MOVI_IMM_64, MOVI_64) }, - /* C (MOVI_IMM_64, MOVI_64) */ - { 0, 0, MOVI_64_LENGTH, 0 }, - EMPTY, - /* C (MOVI_IMM_64, MOVI_GOTOFF) */ - { 0, 0, MOVI_64_LENGTH, 0 }, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - - /* C (MOVI_IMM_64_PCREL, MOVI_16) */ - EMPTY, - { MOVI_16_F, MOVI_16_M, MOVI_16_LENGTH, C (MOVI_IMM_64_PCREL, MOVI_32) }, - /* C (MOVI_IMM_64_PCREL, MOVI_32) */ - { MOVI_32_F, MOVI_32_M, MOVI_32_LENGTH, C (MOVI_IMM_64_PCREL, MOVI_48) }, - /* C (MOVI_IMM_64_PCREL, MOVI_48) */ - { MOVI_48_F, MOVI_48_M, MOVI_48_LENGTH, C (MOVI_IMM_64_PCREL, MOVI_64) }, - /* C (MOVI_IMM_64_PCREL, MOVI_64) */ - { 0, 0, MOVI_64_LENGTH, 0 }, - /* C (MOVI_IMM_64_PCREL, MOVI_PLT) */ - { 0, 0, MOVI_64_LENGTH, 0 }, - EMPTY, - /* C (MOVI_IMM_64_PCREL, MOVI_GOTPC) */ - { 0, 0, MOVI_64_LENGTH, 0 }, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - -#endif /* HAVE_SH64 */ - }; #undef EMPTY @@ -501,11 +258,6 @@ sh_PIC_related_p (symbolS *sym) if (sym == GOT_symbol) return 1; -#ifdef HAVE_SH64 - if (sh_PIC_related_p (*symbol_get_tc (sym))) - return 1; -#endif - exp = symbol_get_value_expression (sym); return (exp->X_op == O_PIC_reloc @@ -567,47 +319,11 @@ sh_check_fixup (expressionS *main_exp, bfd_reloc_code_real_type *r_type_p) if (exp->X_op == O_symbol || exp->X_op == O_add || exp->X_op == O_subtract) { -#ifdef HAVE_SH64 - if (exp->X_add_symbol - && (exp->X_add_symbol == GOT_symbol - || (GOT_symbol - && *symbol_get_tc (exp->X_add_symbol) == GOT_symbol))) - { - switch (*r_type_p) - { - case BFD_RELOC_SH_IMM_LOW16: - *r_type_p = BFD_RELOC_SH_GOTPC_LOW16; - break; - - case BFD_RELOC_SH_IMM_MEDLOW16: - *r_type_p = BFD_RELOC_SH_GOTPC_MEDLOW16; - break; - - case BFD_RELOC_SH_IMM_MEDHI16: - *r_type_p = BFD_RELOC_SH_GOTPC_MEDHI16; - break; - - case BFD_RELOC_SH_IMM_HI16: - *r_type_p = BFD_RELOC_SH_GOTPC_HI16; - break; - - case BFD_RELOC_NONE: - case BFD_RELOC_UNUSED: - *r_type_p = BFD_RELOC_SH_GOTPC; - break; - - default: - abort (); - } - return 0; - } -#else if (exp->X_add_symbol && exp->X_add_symbol == GOT_symbol) { *r_type_p = BFD_RELOC_SH_GOTPC; return 0; } -#endif exp = symbol_get_value_expression (exp->X_add_symbol); if (! exp) return 0; @@ -646,104 +362,6 @@ sh_check_fixup (expressionS *main_exp, bfd_reloc_code_real_type *r_type_p) } break; -#ifdef HAVE_SH64 - case BFD_RELOC_SH_IMM_LOW16: - switch (exp->X_md) - { - case BFD_RELOC_32_GOTOFF: - *r_type_p = BFD_RELOC_SH_GOTOFF_LOW16; - break; - - case BFD_RELOC_SH_GOTPLT32: - *r_type_p = BFD_RELOC_SH_GOTPLT_LOW16; - break; - - case BFD_RELOC_32_GOT_PCREL: - *r_type_p = BFD_RELOC_SH_GOT_LOW16; - break; - - case BFD_RELOC_32_PLT_PCREL: - *r_type_p = BFD_RELOC_SH_PLT_LOW16; - break; - - default: - abort (); - } - break; - - case BFD_RELOC_SH_IMM_MEDLOW16: - switch (exp->X_md) - { - case BFD_RELOC_32_GOTOFF: - *r_type_p = BFD_RELOC_SH_GOTOFF_MEDLOW16; - break; - - case BFD_RELOC_SH_GOTPLT32: - *r_type_p = BFD_RELOC_SH_GOTPLT_MEDLOW16; - break; - - case BFD_RELOC_32_GOT_PCREL: - *r_type_p = BFD_RELOC_SH_GOT_MEDLOW16; - break; - - case BFD_RELOC_32_PLT_PCREL: - *r_type_p = BFD_RELOC_SH_PLT_MEDLOW16; - break; - - default: - abort (); - } - break; - - case BFD_RELOC_SH_IMM_MEDHI16: - switch (exp->X_md) - { - case BFD_RELOC_32_GOTOFF: - *r_type_p = BFD_RELOC_SH_GOTOFF_MEDHI16; - break; - - case BFD_RELOC_SH_GOTPLT32: - *r_type_p = BFD_RELOC_SH_GOTPLT_MEDHI16; - break; - - case BFD_RELOC_32_GOT_PCREL: - *r_type_p = BFD_RELOC_SH_GOT_MEDHI16; - break; - - case BFD_RELOC_32_PLT_PCREL: - *r_type_p = BFD_RELOC_SH_PLT_MEDHI16; - break; - - default: - abort (); - } - break; - - case BFD_RELOC_SH_IMM_HI16: - switch (exp->X_md) - { - case BFD_RELOC_32_GOTOFF: - *r_type_p = BFD_RELOC_SH_GOTOFF_HI16; - break; - - case BFD_RELOC_SH_GOTPLT32: - *r_type_p = BFD_RELOC_SH_GOTPLT_HI16; - break; - - case BFD_RELOC_32_GOT_PCREL: - *r_type_p = BFD_RELOC_SH_GOT_HI16; - break; - - case BFD_RELOC_32_PLT_PCREL: - *r_type_p = BFD_RELOC_SH_PLT_HI16; - break; - - default: - abort (); - } - break; -#endif - default: abort (); } @@ -815,16 +433,6 @@ sh_elf_cons (int nbytes) { expressionS exp; -#ifdef HAVE_SH64 - - /* Update existing range to include a previous insn, if there was one. */ - sh64_update_contents_mark (TRUE); - - /* We need to make sure the contents type is set to data. */ - sh64_flag_output (); - -#endif /* HAVE_SH64 */ - if (is_it_end_of_statement ()) { demand_empty_rest_of_line (); @@ -957,10 +565,6 @@ md_begin (void) = preset_target_arch ? preset_target_arch : arch_sh_up & ~arch_sh_has_dsp; valid_arch = target_arch; -#ifdef HAVE_SH64 - shmedia_md_begin (); -#endif - opcode_hash_control = hash_new (); /* Insert unique names into hash table. */ @@ -2906,26 +2510,6 @@ md_assemble (char *str) unsigned int size = 0; char *initial_str = str; -#ifdef HAVE_SH64 - if (sh64_isa_mode == sh64_isa_shmedia) - { - shmedia_md_assemble (str); - return; - } - else - { - /* If we've seen pseudo-directives, make sure any emitted data or - frags are marked as data. */ - if (!seen_insn) - { - sh64_update_contents_mark (TRUE); - sh64_set_contents_type (CRT_SH5_ISA16); - } - - seen_insn = TRUE; - } -#endif /* HAVE_SH64 */ - opcode = find_cooked_opcode (&str); op_end = str; @@ -3136,13 +2720,6 @@ enum options OPTION_ISA, OPTION_RENESAS, OPTION_ALLOW_REG_PREFIX, -#ifdef HAVE_SH64 - OPTION_ABI, - OPTION_NO_MIX, - OPTION_SHCOMPACT_CONST_CRANGE, - OPTION_NO_EXPAND, - OPTION_PT32, -#endif OPTION_H_TICK_HEX, #ifdef OBJ_ELF OPTION_FDPIC, @@ -3166,13 +2743,6 @@ struct option md_longopts[] = {"renesas", no_argument, NULL, OPTION_RENESAS}, {"allow-reg-prefix", no_argument, NULL, OPTION_ALLOW_REG_PREFIX}, -#ifdef HAVE_SH64 - {"abi", required_argument, NULL, OPTION_ABI}, - {"no-mix", no_argument, NULL, OPTION_NO_MIX}, - {"shcompact-const-crange", no_argument, NULL, OPTION_SHCOMPACT_CONST_CRANGE}, - {"no-expand", no_argument, NULL, OPTION_NO_EXPAND}, - {"expand-pt32", no_argument, NULL, OPTION_PT32}, -#endif /* HAVE_SH64 */ { "h-tick-hex", no_argument, NULL, OPTION_H_TICK_HEX }, #ifdef OBJ_ELF @@ -3223,22 +2793,6 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED) preset_target_arch = arch_sh_up & ~arch_sh_has_dsp; else if (strcasecmp (arg, "any") == 0) preset_target_arch = arch_sh_up; -#ifdef HAVE_SH64 - else if (strcasecmp (arg, "shmedia") == 0) - { - if (sh64_isa_mode == sh64_isa_shcompact) - as_bad (_("Invalid combination: --isa=SHcompact with --isa=SHmedia")); - sh64_isa_mode = sh64_isa_shmedia; - } - else if (strcasecmp (arg, "shcompact") == 0) - { - if (sh64_isa_mode == sh64_isa_shmedia) - as_bad (_("Invalid combination: --isa=SHmedia with --isa=SHcompact")); - if (sh64_abi == sh64_abi_64) - as_bad (_("Invalid combination: --abi=64 with --isa=SHcompact")); - sh64_isa_mode = sh64_isa_shcompact; - } -#endif /* HAVE_SH64 */ else { extern const bfd_arch_info_type bfd_sh_arch; @@ -3249,9 +2803,6 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED) { int len = strlen(bfd_arch->printable_name); - if (bfd_arch->mach == bfd_mach_sh5) - continue; - if (strncasecmp (bfd_arch->printable_name, arg, len) != 0) continue; @@ -3271,43 +2822,6 @@ md_parse_option (int c, const char *arg ATTRIBUTE_UNUSED) } break; -#ifdef HAVE_SH64 - case OPTION_ABI: - if (strcmp (arg, "32") == 0) - { - if (sh64_abi == sh64_abi_64) - as_bad (_("Invalid combination: --abi=32 with --abi=64")); - sh64_abi = sh64_abi_32; - } - else if (strcmp (arg, "64") == 0) - { - if (sh64_abi == sh64_abi_32) - as_bad (_("Invalid combination: --abi=64 with --abi=32")); - if (sh64_isa_mode == sh64_isa_shcompact) - as_bad (_("Invalid combination: --isa=SHcompact with --abi=64")); - sh64_abi = sh64_abi_64; - } - else - as_bad (_("Invalid argument to --abi option: %s"), arg); - break; - - case OPTION_NO_MIX: - sh64_mix = FALSE; - break; - - case OPTION_SHCOMPACT_CONST_CRANGE: - sh64_shcompact_const_crange = TRUE; - break; - - case OPTION_NO_EXPAND: - sh64_expand = FALSE; - break; - - case OPTION_PT32: - sh64_pt32 = TRUE; - break; -#endif /* HAVE_SH64 */ - case OPTION_H_TICK_HEX: enable_h_tick_hex = 1; break; @@ -3346,30 +2860,12 @@ SH options:\n\ bfd_arch_info_type const *bfd_arch = &bfd_sh_arch; for (; bfd_arch; bfd_arch=bfd_arch->next) - if (bfd_arch->mach != bfd_mach_sh5) - { - fprintf (stream, "\n | %s", bfd_arch->printable_name); - fprintf (stream, "\n | %s-up", bfd_arch->printable_name); - } + { + fprintf (stream, "\n | %s", bfd_arch->printable_name); + fprintf (stream, "\n | %s-up", bfd_arch->printable_name); + } } fprintf (stream, "]\n"); -#ifdef HAVE_SH64 - fprintf (stream, _("\ ---isa=[shmedia set as the default instruction set for SH64\n\ - | SHmedia\n\ - | shcompact\n\ - | SHcompact]\n")); - fprintf (stream, _("\ ---abi=[32|64] set size of expanded SHmedia operands and object\n\ - file type\n\ ---shcompact-const-crange emit code-range descriptors for constants in\n\ - SHcompact code sections\n\ ---no-mix disallow SHmedia code in the same section as\n\ - constants and SHcompact code\n\ ---no-expand do not expand MOVI, PT, PTA or PTB instructions\n\ ---expand-pt32 with -abi=64, expand PT, PTA and PTB instructions\n\ - to 32 bits only\n")); -#endif /* HAVE_SH64 */ #ifdef OBJ_ELF fprintf (stream, _("\ --fdpic generate an FDPIC object file\n")); @@ -3537,10 +3033,6 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec, void sh_frob_file (void) { -#ifdef HAVE_SH64 - shmedia_frob_file_before_adjust (); -#endif - if (! sh_relax) return; @@ -3673,11 +3165,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT seg, fragS *fragP) break; default: -#ifdef HAVE_SH64 - shmedia_md_convert_frag (headers, seg, fragP, TRUE); -#else abort (); -#endif } if (donerelax && !sh_relax) @@ -3854,9 +3342,6 @@ sh_force_relocation (fixS *fix) || fix->fx_r_type == BFD_RELOC_SH_ALIGN || fix->fx_r_type == BFD_RELOC_SH_CODE || fix->fx_r_type == BFD_RELOC_SH_DATA -#ifdef HAVE_SH64 - || fix->fx_r_type == BFD_RELOC_SH_SHMEDIA_CODE -#endif || fix->fx_r_type == BFD_RELOC_SH_LABEL); } @@ -3892,14 +3377,7 @@ sh_elf_final_processing (void) /* Set file-specific flags to indicate if this code needs a processor with the sh-dsp / sh2e ISA to execute. */ -#ifdef HAVE_SH64 - /* SH5 and above don't know about the valid_arch arch_sh* bits defined - in sh-opc.h, so check SH64 mode before checking valid_arch. */ - if (sh64_isa_mode != sh64_isa_unspecified) - val = EF_SH5; - else -#endif /* HAVE_SH64 */ - val = sh_find_elf_flags (valid_arch); + val = sh_find_elf_flags (valid_arch); elf_elfheader (stdoutput)->e_flags &= ~EF_SH_MACH_MASK; elf_elfheader (stdoutput)->e_flags |= val; @@ -3961,11 +3439,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) the other symbol. We have to adjust the relocation type here. */ if (fixP->fx_pcrel) { -#ifndef HAVE_SH64 - /* Safeguard; this must not occur for non-sh64 configurations. */ - gas_assert (fixP->fx_r_type != BFD_RELOC_64); -#endif - switch (fixP->fx_r_type) { default: @@ -4164,12 +3637,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) buf[highbyte] |= (val >> 8) & 0xf; break; -#ifndef HAVE_SH64 - case BFD_RELOC_64: - apply_full_field_fix (fixP, buf, *valP, 8); - break; -#endif - case BFD_RELOC_32: case BFD_RELOC_32_PCREL: apply_full_field_fix (fixP, buf, val, 4); @@ -4260,12 +3727,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) #endif default: -#ifdef HAVE_SH64 - shmedia_md_apply_fix (fixP, valP); - return; -#else abort (); -#endif } if (shift != 0) @@ -4304,12 +3766,7 @@ md_estimate_size_before_relax (fragS *fragP, segT segment_type) switch (fragP->fr_subtype) { default: -#ifdef HAVE_SH64 - return shmedia_md_estimate_size_before_relax (fragP, segment_type); -#else abort (); -#endif - case C (UNCOND_JUMP, UNDEF_DISP): /* Used to be a branch to somewhere which was unknown. */ @@ -4375,11 +3832,6 @@ md_estimate_size_before_relax (fragS *fragP, segT segment_type) void md_number_to_chars (char *ptr, valueT use, int nbytes) { -#ifdef HAVE_SH64 - /* We might need to set the contents type to data. */ - sh64_flag_output (); -#endif - if (! target_big_endian) number_to_chars_littleendian (ptr, use, nbytes); else @@ -4457,10 +3909,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) rel->addend = 0; rel->address = rel->addend = fixp->fx_offset; } -#ifdef HAVE_SH64 - else if (shmedia_init_reloc (rel, fixp)) - ; -#endif else rel->addend = fixp->fx_addnumber; diff --git a/gas/config/tc-sh64.c b/gas/config/tc-sh64.c deleted file mode 100644 index 001fa2a..0000000 --- a/gas/config/tc-sh64.c +++ /dev/null @@ -1,3526 +0,0 @@ -/* tc-sh64.c -- Assemble code for the SuperH SH SHcompact and SHmedia. - Copyright (C) 2000-2018 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS 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, or (at your option) - any later version. - - GAS 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 GAS; see the file COPYING. If not, write to - the Free Software Foundation, 51 Franklin Street - Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* This file defines SHmedia ISA-specific functions and includes tc-sh.c. - The SHcompact ISA is in all useful aspects the "old" sh4 as implemented - in tc-sh.c. Not making this file part of tc-sh.c makes it easier to - keep a leaner sh[1-4]-only implementation. */ - -#define HAVE_SH64 - -#include "as.h" -#include "safe-ctype.h" -#include "opcodes/sh64-opc.h" - -#ifndef OBJ_ELF -#error This file assumes object output is in the ELF format -#endif - -/* Suffix used when we make "datalabel" symbol copies. It must not - collide with anything that can normally appear in a symbol, "faked - symbol" or local symbol. */ -#define DATALABEL_SUFFIX " DL" - -/* See shmedia_md_apply_fix and shmedia_md_pcrel_from_section for usage. */ -#define SHMEDIA_MD_PCREL_FROM_FIX(FIXP) \ - ((FIXP)->fx_size + (FIXP)->fx_where + (FIXP)->fx_frag->fr_address - 4) - -/* We use this internally to see which one is PT and which is a PTA/PTB - that should be error-checked. We give it a better name here (but not - one that looks official). Adding it to reloc.c would make it look too - much of a real reloc; it is just used temporarily as a fixup-type. */ -#define SHMEDIA_BFD_RELOC_PT BFD_RELOC_12_PCREL - -typedef struct - { - shmedia_arg_type type; - - /* These could go into a union, but that would uglify the code. */ - int reg; - expressionS immediate; - - /* If IMMEDIATE was a shift-expression, like "(S >> N) & 65535", where - N = 0, 16, 32, 48, used to extract a certain 16-bit-field to make up - a MOVI or SHORI relocation for a symbol, then we put the - corresponding reloc-type here and modify the "immediate" expression - to S. Otherwise, this is just BFD_RELOC_NONE. */ - bfd_reloc_code_real_type reloctype; - } shmedia_operand_info; - -/* Frag containing last base instruction. This is put in the TC field in - a frag, so we can emit fixups for fr_opcode without needing to make - sure that the opcode is in the same frag as any variant operand. */ -fragS *sh64_last_insn_frag = NULL; - -typedef struct - { - shmedia_operand_info operands[3]; - unsigned long ops_val; - } shmedia_operands_info; - -enum sh64_abi_values - { sh64_abi_unspecified, sh64_abi_32, sh64_abi_64 }; - -/* What ISA are we assembling code for? */ -enum sh64_isa_values sh64_isa_mode = sh64_isa_unspecified; - -/* What ABI was specified, if any (implicitly or explicitly)? */ -static enum sh64_abi_values sh64_abi = sh64_abi_unspecified; - -/* A note that says if we're in a sequence of insns without label - settings, segment or ISA mode changes or emitted data. */ -static bfd_boolean seen_insn = FALSE; - -/* This is set to TRUE in shmedia_md_end, so that we don't emit any - .cranges entries when the assembler calls output functions while - grinding along after all input is seen. */ -static bfd_boolean sh64_end_of_assembly = FALSE; - -/* Controlled by the option -no-mix, this invalidates mixing SHcompact and - SHmedia code in the same section, and also invalidates mixing data and - SHmedia code in the same section. No .cranges will therefore be - emitted, unless -shcompact-const-crange is specified and there is a - constant pool in SHcompact code. */ -static bfd_boolean sh64_mix = TRUE; - -static bfd_boolean sh64_shcompact_const_crange = FALSE; - -/* Controlled by the option -no-expand, this says whether or not we expand - MOVI and PT/PTA/PTB. When we do not expand these insns to fit an - operand, we will emit errors for operands out of range and generate the - basic instruction and reloc for an external symbol. */ -static bfd_boolean sh64_expand = TRUE; - -/* Controlled by the option -expand-pt32, this says whether we expand - PT/PTA/PTB of an external symbol to (only) 32 or (the full) 64 bits - when -abi=64 is in effect. */ -static bfd_boolean sh64_pt32 = FALSE; - -/* When emitting a .cranges descriptor, we want to avoid getting recursive - calls through emit_expr. */ -static bfd_boolean emitting_crange = FALSE; - -/* SHmedia mnemonics. */ -static struct hash_control *shmedia_opcode_hash_control = NULL; - -static const unsigned char shmedia_big_nop_pattern[4] = - { - (SHMEDIA_NOP_OPC >> 24) & 255, (SHMEDIA_NOP_OPC >> 16) & 255, - (SHMEDIA_NOP_OPC >> 8) & 255, SHMEDIA_NOP_OPC & 255 - }; - -static const unsigned char shmedia_little_nop_pattern[4] = - { - SHMEDIA_NOP_OPC & 255, (SHMEDIA_NOP_OPC >> 8) & 255, - (SHMEDIA_NOP_OPC >> 16) & 255, (SHMEDIA_NOP_OPC >> 24) & 255 - }; - -static void shmedia_md_begin (void); -static int shmedia_parse_reg (char *, shmedia_arg_type *, int *, - shmedia_arg_type); -static void shmedia_md_assemble (char *); -static void shmedia_md_apply_fix (fixS *, valueT *); -static int shmedia_md_estimate_size_before_relax (fragS *, segT); -static int shmedia_init_reloc (arelent *, fixS *); -static char *shmedia_get_operands (shmedia_opcode_info *, char *, - shmedia_operands_info *); -static void s_sh64_mode (int); -static void s_sh64_abi (int); -static void shmedia_md_convert_frag (bfd *, segT, fragS *, bfd_boolean); -static void shmedia_check_limits (offsetT *, bfd_reloc_code_real_type, - fixS *); -static void sh64_set_contents_type (enum sh64_elf_cr_type); -static void shmedia_get_operand (char **, shmedia_operand_info *, - shmedia_arg_type); -static unsigned long shmedia_immediate_op (char *, shmedia_operand_info *, - int, bfd_reloc_code_real_type); -static char *shmedia_parse_exp (char *, shmedia_operand_info *); -static void shmedia_frob_file_before_adjust (void); -static void sh64_emit_crange (symbolS *, symbolS *, enum sh64_elf_cr_type); -static void sh64_flush_last_crange (bfd *, asection *, void *); -static void sh64_flag_output (void); -static void sh64_update_contents_mark (bfd_boolean); -static void sh64_vtable_entry (int); -static void sh64_vtable_inherit (int); -static char *strip_datalabels (void); -static int shmedia_build_Mytes (shmedia_opcode_info *, - shmedia_operands_info *); -static shmedia_opcode_info *shmedia_find_cooked_opcode (char **); -static unsigned long shmedia_mask_number (unsigned long, - bfd_reloc_code_real_type); - -#include "tc-sh.c" - -void -shmedia_md_end (void) -{ - symbolS *symp; - - /* First, update the last range to include whatever data was last - emitted. */ - sh64_update_contents_mark (TRUE); - - /* Make sure frags generated after this point are not marked with the - wrong ISA; make them easily spottable. We still want to distinguish - it from sh64_isa_unspecified when we compile for SHcompact or - SHmedia. */ - if (sh64_isa_mode != sh64_isa_unspecified) - sh64_isa_mode = sh64_isa_sh5_guard; - - sh64_end_of_assembly = TRUE; - - bfd_map_over_sections (stdoutput, sh64_flush_last_crange, NULL); - - /* Iterate over segments and emit the last .cranges descriptor. */ - for (symp = symbol_rootP; symp != NULL; symp = symp->sy_next) - { - symbolS *mainsym = *symbol_get_tc (symp); - - /* Is this a datalabel symbol; does it have a pointer to the main - symbol? */ - if (mainsym != NULL) - { - /* If the datalabel symbol is undefined, check if the main - symbol has changed in that respect. */ - if (S_GET_SEGMENT (symp) == undefined_section) - { - segT symseg; - - symseg = S_GET_SEGMENT (mainsym); - - /* If the symbol is now defined to something that is not - global and without STO_SH5_ISA32, we just equate the - datalabel symbol to the main symbol, and the lack of - STO_SH5_ISA32 will handle the datalabelness. */ - if (symseg != undefined_section) - { - if (S_GET_OTHER (mainsym) != STO_SH5_ISA32) - { - symp->sy_value.X_op = O_symbol; - symp->sy_value.X_add_symbol = mainsym; - symp->sy_value.X_op_symbol = NULL; - symp->sy_value.X_add_number = 0; - S_SET_SEGMENT (symp, S_GET_SEGMENT (mainsym)); - symbol_set_frag (symp, &zero_address_frag); - copy_symbol_attributes (symp, mainsym); - } - else - { - /* An undefined symbol has since we saw it at - "datalabel", been defined to a BranchTarget - symbol. What we need to do here is very similar - to when we find the "datalabel" for a defined - symbol. FIXME: Break out to common function. */ - symbol_set_value_expression (symp, - symbol_get_value_expression - (mainsym)); - S_SET_SEGMENT (symp, symseg); - symbol_set_frag (symp, symbol_get_frag (mainsym)); - copy_symbol_attributes (symp, mainsym); - - /* Unset the BranchTarget mark that can be set at - attribute-copying. */ - S_SET_OTHER (symp, - S_GET_OTHER (symp) & ~STO_SH5_ISA32); - - /* The GLOBAL and WEAK attributes are not copied - over by copy_symbol_attributes. Do it here. */ - if (S_IS_WEAK (mainsym)) - S_SET_WEAK (symp); - else if (S_IS_EXTERNAL (mainsym)) - S_SET_EXTERNAL (symp); - } - } - else - { - /* A symbol that was defined at the time we saw - "datalabel" can since have been attributed with being - weak or global. */ - if (S_IS_WEAK (mainsym)) - S_SET_WEAK (symp); - else if (S_IS_EXTERNAL (mainsym)) - S_SET_EXTERNAL (symp); - } - } - } - } - - for (symp = symbol_rootP; symp != NULL; symp = symp->sy_next) - if (S_GET_OTHER (symp) & STO_SH5_ISA32) - symp->sy_value.X_add_number++; -} - -/* When resolving symbols, the main assembler has done us a misfavour. It - has removed the equation to the main symbol for a datalabel reference - that should be equal to the main symbol, e.g. when it's a global or - weak symbol and is a non-BranchTarget symbol anyway. We change that - back, so that relocs are against the main symbol, not the local "section - + offset" value. */ - -static void -shmedia_frob_file_before_adjust (void) -{ - symbolS *symp; - for (symp = symbol_rootP; symp != NULL; symp = symp->sy_next) - { - symbolS *mainsym = *symbol_get_tc (symp); - - if (mainsym != NULL - && S_GET_OTHER (mainsym) != STO_SH5_ISA32 - && (S_IS_EXTERNAL (mainsym) || S_IS_WEAK (mainsym))) - { - symp->sy_value.X_op = O_symbol; - symp->sy_value.X_add_symbol = mainsym; - symp->sy_value.X_op_symbol = NULL; - symp->sy_value.X_add_number = 0; - - /* For the "equation trick" to work, we have to set the section - to undefined. */ - S_SET_SEGMENT (symp, undefined_section); - symbol_set_frag (symp, &zero_address_frag); - copy_symbol_attributes (symp, mainsym); - - /* Don't forget to remove the STO_SH5_ISA32 attribute after - copying the other attributes. */ - S_SET_OTHER (symp, S_GET_OTHER (symp) & ~STO_SH5_ISA32); - } - } -} - -/* We need to mark the current location after the alignment. This is - copied code the caller, do_align. We mark the frag location before and - after as we need and arrange to skip the same code in do_align. - - An alternative to code duplication is to call the do_align recursively, - arranging to fall through into do_align if we're already here. That - would require do_align as an incoming function parameter, since it's - static in read.c. That solution was discarded a too kludgy. */ - -void -sh64_do_align (int n, const char *fill, int len, int max) -{ - /* Update region, or put a data region in front. */ - sh64_update_contents_mark (TRUE); - - /* Only make a frag if we HAVE to... */ - if (n != 0 && !need_pass_2) - { - if (fill == NULL) - { - if (subseg_text_p (now_seg)) - frag_align_code (n, max); - else - frag_align (n, 0, max); - } - else if (len <= 1) - frag_align (n, *fill, max); - else - frag_align_pattern (n, fill, len, max); - } - - /* Update mark for current region with current type. */ - sh64_update_contents_mark (FALSE); -} - -/* The MAX_MEM_FOR_RS_ALIGN_CODE worker. We have to find out the ISA of - the current segment at this position. We can't look just at - sh64_isa_shmedia, and we can't look at frag_now. This is brittle: - callers are currently frag_align_code from subsegs_finish in write.c - (end of assembly) and frag_align_code from do_align in read.c (during - assembly). */ - -int -sh64_max_mem_for_rs_align_code (void) -{ - segment_info_type *seginfo; - fragS *mode_start_frag; - seginfo = seg_info (now_seg); - - /* We don't use the contents type we find at the tc_segment_info_data, - since that does not give us absolute information about the ISA; the - contents type can presumably be CRT_DATA and we'd be none the wiser. - Instead we use the information stored at the frag of the symbol at - the start of this range. If any information is missing or NULL, - assume SHcompact. */ - return - /* If the current ISA mode is SHmedia, that's the mode that we're - going to assign to the new frag, so request enough memory for - it, even if we switch modes afterwards, otherwise we may - allocate too little memory and end up overflowing our buffer. */ - (sh64_isa_mode == sh64_isa_shmedia - || (sh64_isa_mode != sh64_isa_unspecified - && seginfo != NULL - && seginfo->tc_segment_info_data.mode_start_symbol != NULL - && ((mode_start_frag - = (symbol_get_frag - (seginfo->tc_segment_info_data.mode_start_symbol))) - != NULL) - && mode_start_frag->tc_frag_data.isa == sh64_isa_shmedia)) - ? (3 + 4) : (2 + 1); -} - -/* Put in SHmedia NOP:s if the alignment was created when in SHmedia mode. */ - -void -sh64_handle_align (fragS * frag) -{ - int bytes = frag->fr_next->fr_address - frag->fr_address - frag->fr_fix; - char * p = frag->fr_literal + frag->fr_fix; - - if (frag->tc_frag_data.isa == sh64_isa_shmedia - && frag->fr_type == rs_align_code) - { - while (bytes & 3) - { - *p++ = 0; - bytes--; - frag->fr_fix += 1; - } - - if (target_big_endian) - { - memcpy (p, shmedia_big_nop_pattern, - sizeof shmedia_big_nop_pattern); - frag->fr_var = sizeof shmedia_big_nop_pattern; - } - else - { - memcpy (p, shmedia_little_nop_pattern, - sizeof shmedia_little_nop_pattern); - frag->fr_var = sizeof shmedia_little_nop_pattern; - } - } - else - /* Punt to SHcompact function. */ - sh_handle_align (frag); -} - -/* Set SEC_SH64_ISA32 for SHmedia sections. */ - -void -shmedia_frob_section_type (asection *sec) -{ - segment_info_type *seginfo; - seginfo = seg_info (sec); - - /* This and elf32-sh64.c:sh64_elf_fake_sections are the only places - where we use anything else than ELF header flags to communicate the - section as containing SHmedia or other contents. BFD SEC_* section - flags are running out and should not be overloaded with - target-specific semantics. This target is ELF only (semantics not - defined for other formats), so we use the target-specific pointer - field of the ELF section data. */ - if (seginfo && sh64_abi == sh64_abi_32) - { - struct sh64_section_data *sec_elf_data; - flagword sec_type = 0; - - if (seginfo->tc_segment_info_data.emitted_ranges != 0) - sec_type = SHF_SH5_ISA32_MIXED; - else if (seginfo->tc_segment_info_data.contents_type == CRT_SH5_ISA32) - sec_type = SHF_SH5_ISA32; - - sec_elf_data = sh64_elf_section_data (sec)->sh64_info; - if (sec_elf_data == NULL) - { - sec_elf_data = XCNEW (struct sh64_section_data); - sh64_elf_section_data (sec)->sh64_info = sec_elf_data; - } - - sec_elf_data->contents_flags = sec_type; - } -} - -/* This function is called by write_object_file right before the symbol - table is written. We subtract 1 from all symbols marked STO_SH5_ISA32, - as their values are temporarily incremented in shmedia_md_end, before - symbols values are used by relocs and fixups. - - To increment all symbols and then decrement here is admittedly a - hackish solution. The alternative is to add infrastructure and hooks - to symbol evaluation that evaluates symbols differently internally to - the value output into the object file, but at the moment that just - seems too much for little benefit. */ - -void -sh64_adjust_symtab (void) -{ - symbolS *symp; - - for (symp = symbol_rootP; symp; symp = symbol_next (symp)) - { - symbolS *main_symbol = *symbol_get_tc (symp); - - if (main_symbol) - { - char *sym_name = (char *) S_GET_NAME (symp); - - /* All datalabels not used in relocs should be gone by now. - - We change those remaining to have the name of the main - symbol, and we set the ELF type of the symbol of the reloc to - STT_DATALABEL. */ - sym_name[strlen (sym_name) - strlen (DATALABEL_SUFFIX)] = 0; - elf_symbol (symbol_get_bfdsym (symp))->internal_elf_sym.st_info - = STT_DATALABEL; - - /* Also set this symbol to "undefined", so we'll have only one - definition. */ - S_SET_SEGMENT (symp, undefined_section); - } - else if (S_GET_OTHER (symp) & STO_SH5_ISA32) - { - /* It's important to change the BFD symbol value, since it is now - set to the GAS symbolS value. */ - symp->bsym->value--; - - /* Note that we do *not* adjust symp->sy_value.X_add_number. If - you do this, the test case in sh/sh64/immexpr2.s will fail. - This is because *after* symbols have been output but before - relocs are output, fixups are inspected one more time, and - some leftover expressions are resolved. To resolve to the - same values, those expressions must have the same GAS symbol - values before as after symbols have been output. We could - "symp->sy_value.X_add_number++" on the STO_SH5_ISA32 symbols - through tc_frob_file after symbols have been output, but that - would be too gross. */ - } - } -} - -/* Fill-in an allocated arelent. */ - -static int -shmedia_init_reloc (arelent *rel, fixS *fixP) -{ - /* Adjust parts of *relp according to *fixp, and tell that it has been - done, so default initializations will not happen. */ - switch (fixP->fx_r_type) - { - case BFD_RELOC_64: - case BFD_RELOC_64_PCREL: - case BFD_RELOC_SH_IMM_LOW16: - case BFD_RELOC_SH_IMM_MEDLOW16: - case BFD_RELOC_SH_IMM_MEDHI16: - case BFD_RELOC_SH_IMM_HI16: - case BFD_RELOC_SH_IMM_LOW16_PCREL: - case BFD_RELOC_SH_IMM_MEDLOW16_PCREL: - case BFD_RELOC_SH_IMM_MEDHI16_PCREL: - case BFD_RELOC_SH_IMM_HI16_PCREL: - case BFD_RELOC_SH_IMMU5: - case BFD_RELOC_SH_IMMU6: - case BFD_RELOC_SH_IMMS6: - case BFD_RELOC_SH_IMMS10: - case BFD_RELOC_SH_IMMS10BY2: - case BFD_RELOC_SH_IMMS10BY4: - case BFD_RELOC_SH_IMMS10BY8: - case BFD_RELOC_SH_IMMS16: - case BFD_RELOC_SH_IMMU16: - case BFD_RELOC_SH_PT_16: - case BFD_RELOC_SH_GOT_LOW16: - case BFD_RELOC_SH_GOT_MEDLOW16: - case BFD_RELOC_SH_GOT_MEDHI16: - case BFD_RELOC_SH_GOT_HI16: - case BFD_RELOC_SH_GOT10BY4: - case BFD_RELOC_SH_GOT10BY8: - case BFD_RELOC_SH_GOTPLT_LOW16: - case BFD_RELOC_SH_GOTPLT_MEDLOW16: - case BFD_RELOC_SH_GOTPLT_MEDHI16: - case BFD_RELOC_SH_GOTPLT_HI16: - case BFD_RELOC_SH_GOTPLT10BY4: - case BFD_RELOC_SH_GOTPLT10BY8: - case BFD_RELOC_SH_GOTOFF_LOW16: - case BFD_RELOC_SH_GOTOFF_MEDLOW16: - case BFD_RELOC_SH_GOTOFF_MEDHI16: - case BFD_RELOC_SH_GOTOFF_HI16: - case BFD_RELOC_SH_GOTPC_LOW16: - case BFD_RELOC_SH_GOTPC_MEDLOW16: - case BFD_RELOC_SH_GOTPC_MEDHI16: - case BFD_RELOC_SH_GOTPC_HI16: - case BFD_RELOC_SH_PLT_LOW16: - case BFD_RELOC_SH_PLT_MEDLOW16: - case BFD_RELOC_SH_PLT_MEDHI16: - case BFD_RELOC_SH_PLT_HI16: - rel->addend = fixP->fx_addnumber + fixP->fx_offset; - return 1; - - case BFD_RELOC_SH_IMMS6BY32: - /* This must be resolved in assembly; we do not support it as a - reloc in an object file. */ - as_bad_where (fixP->fx_file, fixP->fx_line, - _("This operand must be constant at assembly time")); - break; - - /* There are valid cases where we get here for other than SHmedia - relocs, so don't make a BAD_CASE out of this. */ - default: - ; - } - - return 0; -} - -/* Hook called from md_apply_fix in tc-sh.c. */ - -static void -shmedia_md_apply_fix (fixS *fixP, valueT *valp) -{ - offsetT val = *valp; - char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - unsigned long insn - = target_big_endian ? bfd_getb32 (buf) : bfd_getl32 (buf); - bfd_reloc_code_real_type orig_fx_r_type = fixP->fx_r_type; - - /* Change a 64-bit pc-relative reloc into the correct type, just like - tc-sh.c:md_apply_fix. */ - if (fixP->fx_pcrel) - { - switch (orig_fx_r_type) - { - case BFD_RELOC_64: - case BFD_RELOC_SH_IMM_LOW16: - case BFD_RELOC_SH_IMM_MEDLOW16: - case BFD_RELOC_SH_IMM_MEDHI16: - case BFD_RELOC_SH_IMM_HI16: - /* Because write.c calls MD_PCREL_FROM_SECTION twice, we need to - undo one of the adjustments, if the relocation is not - actually for a symbol within the same segment (which we - cannot check, because we're not called from md_apply_fix, so - we have to keep the reloc). FIXME: This is a bug in - write.c:fixup_segment affecting most targets that change - ordinary relocs to pcrel relocs in md_apply_fix. */ - fixP->fx_offset - = *valp + SHMEDIA_MD_PCREL_FROM_FIX (fixP); - break; - - case BFD_RELOC_SH_PLT_LOW16: - case BFD_RELOC_SH_PLT_MEDLOW16: - case BFD_RELOC_SH_PLT_MEDHI16: - case BFD_RELOC_SH_PLT_HI16: - case BFD_RELOC_SH_GOTPC_LOW16: - case BFD_RELOC_SH_GOTPC_MEDLOW16: - case BFD_RELOC_SH_GOTPC_MEDHI16: - case BFD_RELOC_SH_GOTPC_HI16: - *valp = 0; - return; - - default: - ; - } - - /* We might need to change some relocs into the corresponding - PC-relative one. */ - switch (orig_fx_r_type) - { - case BFD_RELOC_64: - fixP->fx_r_type = BFD_RELOC_64_PCREL; - break; - - case BFD_RELOC_SH_IMM_LOW16: - fixP->fx_r_type = BFD_RELOC_SH_IMM_LOW16_PCREL; - break; - - case BFD_RELOC_SH_IMM_MEDLOW16: - fixP->fx_r_type = BFD_RELOC_SH_IMM_MEDLOW16_PCREL; - break; - - case BFD_RELOC_SH_IMM_MEDHI16: - fixP->fx_r_type = BFD_RELOC_SH_IMM_MEDHI16_PCREL; - break; - - case BFD_RELOC_SH_IMM_HI16: - fixP->fx_r_type = BFD_RELOC_SH_IMM_HI16_PCREL; - break; - - case SHMEDIA_BFD_RELOC_PT: - /* This is how we see a difference between PT and PTA when not - expanding (in which case we handle it in - shmedia_md_convert_frag). Note that we don't see a - difference after the reloc is emitted. */ - fixP->fx_r_type = BFD_RELOC_SH_PT_16; - break; - - case BFD_RELOC_SH_PT_16: - /* This tells us there was a PTA or PTB insn explicitly - expressed as such (not as PT). We "or" in a 1 into the - lowest bit in the (unused) destination field to tell the - linker that it should check the right ISA type of the - destination and not just change a PTA to PTB (if necessary). */ - md_number_to_chars (buf, insn | (1 << 10), 4); - break; - - case BFD_RELOC_64_PCREL: - case BFD_RELOC_SH_IMM_LOW16_PCREL: - case BFD_RELOC_SH_IMM_MEDLOW16_PCREL: - case BFD_RELOC_SH_IMM_MEDHI16_PCREL: - case BFD_RELOC_SH_IMM_HI16_PCREL: - /* Already handled. */ - break; - - default: - /* Everything else that changes into a pc-relative relocation is - an error. */ - as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid operand expression")); - break; - } - - return; - } - - /* If an expression looked like it was PC-relative, but was completely - resolvable, we end up here with the result only in *VALP, and no - relocation will be emitted. */ - if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) - { - /* Emit error for an out-of-range value. */ - shmedia_check_limits ((offsetT *) valp, fixP->fx_r_type, fixP); - - switch (fixP->fx_r_type) - { - case BFD_RELOC_SH_IMM_LOW16: - md_number_to_chars (buf, insn | ((val & 65535) << 10), 4); - break; - - case BFD_RELOC_SH_IMM_MEDLOW16: - md_number_to_chars (buf, - insn - | ((valueT) (val & ((valueT) 65535 << 16)) - >> (16 - 10)), 4); - break; - - case BFD_RELOC_SH_IMM_MEDHI16: - md_number_to_chars (buf, - insn - | ((valueT) (val & ((valueT) 65535 << 32)) - >> (32 - 10)), 4); - break; - - case BFD_RELOC_SH_IMM_HI16: - md_number_to_chars (buf, - insn - | ((valueT) (val & ((valueT) 65535 << 48)) - >> (48 - 10)), 4); - break; - - case BFD_RELOC_SH_IMMS16: - case BFD_RELOC_SH_IMMU16: - md_number_to_chars (buf, insn | ((val & 65535) << 10), 4); - break; - - case BFD_RELOC_SH_IMMS10: - md_number_to_chars (buf, insn | ((val & 0x3ff) << 10), 4); - break; - - case BFD_RELOC_SH_IMMS10BY2: - md_number_to_chars (buf, - insn | ((val & (0x3ff << 1)) << (10 - 1)), 4); - break; - - case BFD_RELOC_SH_IMMS10BY4: - md_number_to_chars (buf, - insn | ((val & (0x3ff << 2)) << (10 - 2)), 4); - break; - - case BFD_RELOC_SH_IMMS10BY8: - md_number_to_chars (buf, - insn | ((val & (0x3ff << 3)) << (10 - 3)), 4); - break; - - case BFD_RELOC_SH_SHMEDIA_CODE: - /* We just ignore and remove this one for the moment. FIXME: - Use it when implementing relaxing. */ - break; - - case BFD_RELOC_64: - md_number_to_chars (buf, val, 8); - break; - - case SHMEDIA_BFD_RELOC_PT: - /* Change a PT to PTB if the operand turned out to be SHcompact. - The basic opcode specified with PT is equivalent to PTA. */ - if ((val & 1) == 0) - insn |= SHMEDIA_PTB_BIT; - /* Fall through. */ - - case BFD_RELOC_SH_PT_16: - if (! sh64_expand || sh_relax) - { - /* Check if the operand of a PTA or PTB was for the "wrong" - ISA. A PT had an incoming fixup of SHMEDIA_BFD_RELOC_PT, - which we have changed to the right type above. */ - if (orig_fx_r_type != SHMEDIA_BFD_RELOC_PT) - { - if ((insn & SHMEDIA_PTB_BIT) != 0 && (val & 1) != 0) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("PTB operand is a SHmedia symbol")); - else if ((insn & SHMEDIA_PTB_BIT) == 0 && (val & 1) == 0) - as_bad_where (fixP->fx_file, fixP->fx_line, - _("PTA operand is a SHcompact symbol")); - } - - md_number_to_chars (buf, - insn | ((val & (0xffff << 2)) - << (10 - 2)), - 4); - break; - } - /* Fall through. */ - - default: - /* This isn't a BAD_CASE, because presumably we can get here - from unexpected operands. Since we don't handle them, make - them syntax errors. */ - as_bad_where (fixP->fx_file, fixP->fx_line, - _("invalid expression in operand")); - } - fixP->fx_done = 1; - } -} - -/* Hook called from md_convert_frag in tc-sh.c. */ - -static void -shmedia_md_convert_frag (bfd *output_bfd ATTRIBUTE_UNUSED, - segT seg ATTRIBUTE_UNUSED, fragS *fragP, - bfd_boolean final) -{ - /* Pointer to first byte in variable-sized part of the frag. */ - char *var_partp; - - /* Pointer to first opcode byte in frag. */ - char *opcodep; - - /* Pointer to frag of opcode. */ - fragS *opc_fragP = fragP->tc_frag_data.opc_frag; - - /* Size in bytes of variable-sized part of frag. */ - int var_part_size = 0; - - /* This is part of *fragP. It contains all information about addresses - and offsets to varying parts. */ - symbolS *symbolP = fragP->fr_symbol; - - bfd_boolean reloc_needed - = (! final - || sh_relax - || symbolP == NULL - || ! S_IS_DEFINED (symbolP) - || S_IS_EXTERNAL (symbolP) - || S_IS_WEAK (symbolP) - || (S_GET_SEGMENT (fragP->fr_symbol) != absolute_section - && S_GET_SEGMENT (fragP->fr_symbol) != seg)); - - bfd_reloc_code_real_type reloctype = BFD_RELOC_NONE; - - unsigned long var_part_offset; - - /* Where, in file space, does addr point? */ - bfd_vma target_address; - bfd_vma opcode_address; - - /* What was the insn? */ - unsigned long insn; - know (fragP->fr_type == rs_machine_dependent); - - var_part_offset = fragP->fr_fix; - var_partp = fragP->fr_literal + var_part_offset; - opcodep = fragP->fr_opcode; - - insn = target_big_endian ? bfd_getb32 (opcodep) : bfd_getl32 (opcodep); - - target_address - = ((symbolP && final && ! sh_relax ? S_GET_VALUE (symbolP) : 0) - + fragP->fr_offset); - - /* The opcode that would be extended is the last four "fixed" bytes. */ - opcode_address = fragP->fr_address + fragP->fr_fix - 4; - - switch (fragP->fr_subtype) - { - case C (SH64PCREL16PT_64, SH64PCREL16): - case C (SH64PCREL16PT_32, SH64PCREL16): - /* We can get a PT to a relaxed SHcompact address if it is in the - same section; a mixed-ISA section. Change the opcode to PTB if - so. */ - if ((target_address & 1) == 0) - insn |= SHMEDIA_PTB_BIT; - /* Fall through. */ - - case C (SH64PCREL16_32, SH64PCREL16): - case C (SH64PCREL16_64, SH64PCREL16): - /* Check that a PTA or PTB points to the right type of target. We - can get here for a SHcompact target if we are in a mixed-ISA - section. */ - if (((target_address & 1) == 0) && ((insn & SHMEDIA_PTB_BIT) == 0)) - as_bad_where (fragP->fr_file, fragP->fr_line, - _("PTA operand is a SHcompact symbol")); - if (((target_address & 1) != 0) && ((insn & SHMEDIA_PTB_BIT) != 0)) - as_bad_where (fragP->fr_file, fragP->fr_line, - _("PTB operand is a SHmedia symbol")); - - /* When relaxing, we do not output the address in the insn, but - instead a 1 into the low bit. This matches what the linker - expects to find for a BFD_RELOC_SH_PT_16 reloc, when it checks - correctness for PTA/PTB insn; used when the target address is - unknown (which is not the case here). */ - md_number_to_chars (opcodep, - insn - | (((sh_relax - ? 1 : ((target_address - opcode_address) / 4)) - & ((1 << 16) - 1)) << 10), - 4); - - /* Note that we do not emit info that this was originally a PT since - we have resolved to which one of PTA or PTB it will be. */ - if (sh_relax) - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, BFD_RELOC_SH_PT_16); - var_part_size = 0; - break; - - case C (SH64PCREL16_32, SH64PCRELPLT): - case C (SH64PCREL16PT_32, SH64PCRELPLT): - reloctype = BFD_RELOC_32_PLT_PCREL; - reloc_needed = 1; - /* Fall through */ - - case C (SH64PCREL16_32, SH64PCREL32): - case C (SH64PCREL16_64, SH64PCREL32): - case C (SH64PCREL16PT_32, SH64PCREL32): - case C (SH64PCREL16PT_64, SH64PCREL32): - /* In the fixed bit, put in a MOVI. */ - md_number_to_chars (opcodep, - SHMEDIA_MOVI_OPC - | (SHMEDIA_TEMP_REG << 4) - | ((((reloc_needed - ? 0 : (target_address - (opcode_address + 8)) - ) >> 16) & 65535) << 10), - 4); - - /* Fill in a SHORI for the low part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC - | (SHMEDIA_TEMP_REG << 4) - | (((reloc_needed - ? 0 : (target_address - (opcode_address + 8))) - & 65535) << 10), - 4); - - /* End with a "PTREL R25,TRd". */ - md_number_to_chars (var_partp + 4, - SHMEDIA_PTREL_OPC | (insn & SHMEDIA_LIKELY_BIT) - | (SHMEDIA_TEMP_REG << 10) - | (insn & (7 << 4)), - 4); - - /* We need relocs only if the target symbol was undefined or if - we're relaxing. */ - if (reloc_needed) - { - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset - 8, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDLOW16 - : BFD_RELOC_SH_IMM_MEDLOW16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset - 4, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_LOW16 - : BFD_RELOC_SH_IMM_LOW16_PCREL); - } - - var_part_size = 8; - break; - - case C (SH64PCREL16_64, SH64PCREL48): - case C (SH64PCREL16PT_64, SH64PCREL48): - /* In the fixed bit, put in a MOVI. */ - md_number_to_chars (opcodep, - SHMEDIA_MOVI_OPC - | (SHMEDIA_TEMP_REG << 4) - | ((((reloc_needed - ? 0 : (target_address - (opcode_address + 12)) - ) >> 32) & 65535) << 10), - 4); - - /* The first SHORI, for the medium part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC - | (SHMEDIA_TEMP_REG << 4) - | ((((reloc_needed - ? 0 : (target_address - (opcode_address + 12)) - ) >> 16) & 65535) << 10), - 4); - - /* Fill in a SHORI for the low part. */ - md_number_to_chars (var_partp + 4, - SHMEDIA_SHORI_OPC - | (SHMEDIA_TEMP_REG << 4) - | (((reloc_needed - ? 0 : (target_address - (opcode_address + 12))) - & 65535) << 10), - 4); - - /* End with a "PTREL R25,TRd". */ - md_number_to_chars (var_partp + 8, - SHMEDIA_PTREL_OPC | (insn & SHMEDIA_LIKELY_BIT) - | (SHMEDIA_TEMP_REG << 10) - | (insn & (7 << 4)), - 4); - - /* We need relocs only if the target symbol was undefined or if - we're relaxing. */ - if (reloc_needed) - { - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset - 12, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDHI16 - : BFD_RELOC_SH_IMM_MEDHI16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset - 8, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDLOW16 - : BFD_RELOC_SH_IMM_MEDLOW16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal + 4, 4, fragP->fr_symbol, - fragP->fr_offset - 4, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_LOW16 - : BFD_RELOC_SH_IMM_LOW16_PCREL); - } - - var_part_size = 12; - break; - - case C (SH64PCREL16_64, SH64PCRELPLT): - case C (SH64PCREL16PT_64, SH64PCRELPLT): - reloctype = BFD_RELOC_32_PLT_PCREL; - reloc_needed = 1; - /* Fall through */ - - case C (SH64PCREL16_64, SH64PCREL64): - case C (SH64PCREL16PT_64, SH64PCREL64): - /* In the fixed bit, put in a MOVI. */ - md_number_to_chars (opcodep, - SHMEDIA_MOVI_OPC - | (SHMEDIA_TEMP_REG << 4) - | ((((reloc_needed - ? 0 : (target_address - (opcode_address + 16)) - ) >> 48) & 65535) << 10), - 4); - - /* The first SHORI, for the medium-high part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC - | (SHMEDIA_TEMP_REG << 4) - | ((((reloc_needed - ? 0 : (target_address - (opcode_address + 16)) - ) >> 32) & 65535) << 10), - 4); - - /* A SHORI, for the medium-low part. */ - md_number_to_chars (var_partp + 4, - SHMEDIA_SHORI_OPC - | (SHMEDIA_TEMP_REG << 4) - | ((((reloc_needed - ? 0 : (target_address - (opcode_address + 16)) - ) >> 16) & 65535) << 10), - 4); - - /* Fill in a SHORI for the low part. */ - md_number_to_chars (var_partp + 8, - SHMEDIA_SHORI_OPC - | (SHMEDIA_TEMP_REG << 4) - | (((reloc_needed - ? 0 : (target_address - (opcode_address + 16))) - & 65535) << 10), - 4); - - /* End with a "PTREL R25,TRd". */ - md_number_to_chars (var_partp + 12, - SHMEDIA_PTREL_OPC | (insn & SHMEDIA_LIKELY_BIT) - | (SHMEDIA_TEMP_REG << 10) - | (insn & (7 << 4)), - 4); - - /* We need relocs only if the target symbol was undefined or if - we're relaxing. */ - if (reloc_needed) - { - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset - 16, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_HI16 - : BFD_RELOC_SH_IMM_HI16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset - 12, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDHI16 - : BFD_RELOC_SH_IMM_MEDHI16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal + 4, 4, fragP->fr_symbol, - fragP->fr_offset - 8, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDLOW16 - : BFD_RELOC_SH_IMM_MEDLOW16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal + 8, 4, fragP->fr_symbol, - fragP->fr_offset - 4, 1, - reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_LOW16 - : BFD_RELOC_SH_IMM_LOW16_PCREL); - } - - var_part_size = 16; - break; - - case C (MOVI_IMM_64, MOVI_GOTOFF): - reloctype = BFD_RELOC_32_GOTOFF; - reloc_needed = 1; - /* Fall through. */ - - case C (MOVI_IMM_64, UNDEF_MOVI): - case C (MOVI_IMM_64, MOVI_64): - { - /* We only get here for undefined symbols, so we can simplify - handling compared to those above; we have 0 in the parts that - will be filled with the symbol parts. */ - - int reg = (insn >> 4) & 0x3f; - - /* In the fixed bit, put in a MOVI. */ - md_number_to_chars (opcodep, SHMEDIA_MOVI_OPC | (reg << 4), 4); - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 0, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_HI16 - : reloctype == BFD_RELOC_32_GOTOFF - ? BFD_RELOC_SH_GOTOFF_HI16 - : (abort (), BFD_RELOC_SH_IMM_HI16)); - - /* The first SHORI, for the medium-high part. */ - md_number_to_chars (var_partp, SHMEDIA_SHORI_OPC | (reg << 4), 4); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset, 0, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_MEDHI16 - : reloctype == BFD_RELOC_32_GOTOFF - ? BFD_RELOC_SH_GOTOFF_MEDHI16 - : (abort (), BFD_RELOC_SH_IMM_MEDHI16)); - - /* A SHORI, for the medium-low part. */ - md_number_to_chars (var_partp + 4, - SHMEDIA_SHORI_OPC | (reg << 4), 4); - fix_new (fragP, var_partp - fragP->fr_literal + 4, 4, fragP->fr_symbol, - fragP->fr_offset, 0, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_MEDLOW16 - : reloctype == BFD_RELOC_32_GOTOFF - ? BFD_RELOC_SH_GOTOFF_MEDLOW16 - : (abort (), BFD_RELOC_SH_IMM_MEDLOW16)); - - /* Fill in a SHORI for the low part. */ - md_number_to_chars (var_partp + 8, - SHMEDIA_SHORI_OPC | (reg << 4), 4); - fix_new (fragP, var_partp - fragP->fr_literal + 8, 4, fragP->fr_symbol, - fragP->fr_offset, 0, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_LOW16 - : reloctype == BFD_RELOC_32_GOTOFF - ? BFD_RELOC_SH_GOTOFF_LOW16 - : (abort (), BFD_RELOC_SH_IMM_LOW16)); - - var_part_size = 12; - break; - } - - case C (MOVI_IMM_32, MOVI_GOTOFF): - reloctype = BFD_RELOC_32_GOTOFF; - reloc_needed = 1; - /* Fall through. */ - - case C (MOVI_IMM_32, UNDEF_MOVI): - case C (MOVI_IMM_32, MOVI_32): - { - /* Note that we only get here for undefined symbols. */ - - int reg = (insn >> 4) & 0x3f; - - /* A MOVI, for the high part. */ - md_number_to_chars (opcodep, SHMEDIA_MOVI_OPC | (reg << 4), 4); - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 0, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_MEDLOW16 - : reloctype == BFD_RELOC_32_GOTOFF - ? BFD_RELOC_SH_GOTOFF_MEDLOW16 - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_MEDLOW16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDLOW16 - : (abort (), BFD_RELOC_SH_IMM_MEDLOW16)); - - /* Fill in a SHORI for the low part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC | (reg << 4), 4); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset, 0, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_LOW16 - : reloctype == BFD_RELOC_32_GOTOFF - ? BFD_RELOC_SH_GOTOFF_LOW16 - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_LOW16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_LOW16 - : (abort (), BFD_RELOC_SH_IMM_LOW16)); - - var_part_size = 4; - break; - } - - case C (MOVI_IMM_32_PCREL, MOVI_16): - case C (MOVI_IMM_64_PCREL, MOVI_16): - md_number_to_chars (opcodep, - insn - | (((reloc_needed - ? 0 : (target_address - opcode_address)) - & 65535) << 10), - 4); - if (reloc_needed) - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, - BFD_RELOC_SH_IMM_LOW16_PCREL); - var_part_size = 0; - break; - - case C (MOVI_IMM_32, MOVI_16): - case C (MOVI_IMM_64, MOVI_16): - md_number_to_chars (opcodep, - insn - | (((reloc_needed ? 0 : target_address) - & 65535) << 10), - 4); - if (reloc_needed) - abort (); - var_part_size = 0; - break; - - case C (MOVI_IMM_32_PCREL, MOVI_PLT): - reloctype = BFD_RELOC_32_PLT_PCREL; - goto movi_imm_32_pcrel_reloc_needed; - - case C (MOVI_IMM_32_PCREL, MOVI_GOTPC): - reloctype = BFD_RELOC_SH_GOTPC; - /* Fall through. */ - - movi_imm_32_pcrel_reloc_needed: - reloc_needed = 1; - /* Fall through. */ - - case C (MOVI_IMM_32_PCREL, MOVI_32): - case C (MOVI_IMM_64_PCREL, MOVI_32): - { - int reg = (insn >> 4) & 0x3f; - - md_number_to_chars (opcodep, - insn - | (((((reloc_needed - ? 0 : (target_address - opcode_address))) - >> 16) & 65535) << 10), 4); - - /* A SHORI, for the low part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC - | (reg << 4) - | (((reloc_needed - ? 0 : (target_address - opcode_address)) - & 65535) << 10), 4); - if (reloc_needed) - { - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_MEDLOW16_PCREL - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_MEDLOW16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDLOW16 - : (abort (), BFD_RELOC_SH_IMM_MEDLOW16_PCREL)); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset + 4, 1, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_LOW16_PCREL - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_LOW16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_LOW16 - : (abort (), BFD_RELOC_SH_IMM_LOW16_PCREL)); - } - var_part_size = 4; - } - break; - - case C (MOVI_IMM_32_PCREL, MOVI_48): - case C (MOVI_IMM_64_PCREL, MOVI_48): - { - int reg = (insn >> 4) & 0x3f; - - md_number_to_chars (opcodep, - insn - | (((((reloc_needed - ? 0 : (target_address - opcode_address))) - >> 32) & 65535) << 10), 4); - - /* A SHORI, for the medium part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC - | (reg << 4) - | ((((reloc_needed - ? 0 : (target_address - opcode_address)) - >> 16) & 65535) << 10), 4); - - /* A SHORI, for the low part. */ - md_number_to_chars (var_partp + 4, - SHMEDIA_SHORI_OPC - | (reg << 4) - | (((reloc_needed - ? 0 : (target_address - opcode_address)) - & 65535) << 10), 4); - if (reloc_needed) - { - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, - BFD_RELOC_SH_IMM_MEDHI16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset + 4, 1, BFD_RELOC_SH_IMM_MEDLOW16_PCREL); - fix_new (fragP, var_partp - fragP->fr_literal + 4, 4, fragP->fr_symbol, - fragP->fr_offset + 8, 1, BFD_RELOC_SH_IMM_LOW16_PCREL); - } - var_part_size = 8; - } - break; - - case C (MOVI_IMM_64_PCREL, MOVI_PLT): - reloctype = BFD_RELOC_32_PLT_PCREL; - goto movi_imm_64_pcrel_reloc_needed; - - case C (MOVI_IMM_64_PCREL, MOVI_GOTPC): - reloctype = BFD_RELOC_SH_GOTPC; - /* Fall through. */ - - movi_imm_64_pcrel_reloc_needed: - reloc_needed = 1; - /* Fall through. */ - - case C (MOVI_IMM_32_PCREL, MOVI_64): - case C (MOVI_IMM_64_PCREL, MOVI_64): - { - int reg = (insn >> 4) & 0x3f; - - md_number_to_chars (opcodep, - insn - | (((((reloc_needed - ? 0 : (target_address - opcode_address))) - >> 48) & 65535) << 10), 4); - - /* A SHORI, for the medium-high part. */ - md_number_to_chars (var_partp, - SHMEDIA_SHORI_OPC - | (reg << 4) - | ((((reloc_needed - ? 0 : (target_address - opcode_address)) - >> 32) & 65535) << 10), 4); - - /* A SHORI, for the medium-low part. */ - md_number_to_chars (var_partp + 4, - SHMEDIA_SHORI_OPC - | (reg << 4) - | ((((reloc_needed - ? 0 : (target_address - opcode_address)) - >> 16) & 65535) << 10), 4); - - /* A SHORI, for the low part. */ - md_number_to_chars (var_partp + 8, - SHMEDIA_SHORI_OPC - | (reg << 4) - | (((reloc_needed - ? 0 : (target_address - opcode_address)) - & 65535) << 10), 4); - if (reloc_needed) - { - fix_new (opc_fragP, opcodep - opc_fragP->fr_literal, 4, - fragP->fr_symbol, fragP->fr_offset, 1, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_HI16_PCREL - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_HI16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_HI16 - : (abort (), BFD_RELOC_SH_IMM_HI16_PCREL)); - fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol, - fragP->fr_offset + 4, 1, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_MEDHI16_PCREL - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_MEDHI16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDHI16 - : (abort (), BFD_RELOC_SH_IMM_MEDHI16_PCREL)); - fix_new (fragP, var_partp - fragP->fr_literal + 4, 4, - fragP->fr_symbol, - fragP->fr_offset + 8, 1, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_MEDLOW16_PCREL - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_MEDLOW16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_MEDLOW16 - : (abort (), BFD_RELOC_SH_IMM_MEDLOW16_PCREL)); - fix_new (fragP, var_partp - fragP->fr_literal + 8, 4, - fragP->fr_symbol, - fragP->fr_offset + 12, 1, - reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_IMM_LOW16_PCREL - : reloctype == BFD_RELOC_SH_GOTPC - ? BFD_RELOC_SH_GOTPC_LOW16 - : reloctype == BFD_RELOC_32_PLT_PCREL - ? BFD_RELOC_SH_PLT_LOW16 - : (abort (), BFD_RELOC_SH_IMM_LOW16_PCREL)); - } - var_part_size = 12; - } - break; - - default: - BAD_CASE (fragP->fr_subtype); - } - - fragP->fr_fix += var_part_size; - fragP->fr_var = 0; -} - -/* Mask NUMBER (originating from a signed number) corresponding to the HOW - reloc. */ - -static unsigned long -shmedia_mask_number (unsigned long number, bfd_reloc_code_real_type how) -{ - switch (how) - { - case BFD_RELOC_SH_IMMU5: - number &= (1 << 5) - 1; - break; - - case BFD_RELOC_SH_IMMS6: - case BFD_RELOC_SH_IMMU6: - number &= (1 << 6) - 1; - break; - - case BFD_RELOC_SH_IMMS6BY32: - number = (number & ((1 << (6 + 5)) - 1)) >> 5; - break; - - case BFD_RELOC_SH_IMMS10: - number &= (1 << 10) - 1; - break; - - case BFD_RELOC_SH_IMMS10BY2: - number = (number & ((1 << (10 + 1)) - 1)) >> 1; - break; - - case BFD_RELOC_SH_IMMS10BY4: - number = (number & ((1 << (10 + 2)) - 1)) >> 2; - break; - - case BFD_RELOC_SH_IMMS10BY8: - number = (number & ((1 << (10 + 3)) - 1)) >> 3; - break; - - case BFD_RELOC_SH_IMMS16: - case BFD_RELOC_SH_IMMU16: - number &= (1 << 16) - 1; - break; - - default: - BAD_CASE (how); - } - - return number; -} - -/* Emit errors for values out-of-range, using as_bad_where if FRAGP is - non-NULL, as_bad otherwise. */ - -static void -shmedia_check_limits (offsetT *valp, bfd_reloc_code_real_type reloc, - fixS *fixp) -{ - offsetT val = *valp; - - const char *msg = NULL; - - switch (reloc) - { - case BFD_RELOC_SH_IMMU5: - if (val < 0 || val > (1 << 5) - 1) - msg = _("invalid operand, not a 5-bit unsigned value: %d"); - break; - - case BFD_RELOC_SH_IMMS6: - if (val < -(1 << 5) || val > (1 << 5) - 1) - msg = _("invalid operand, not a 6-bit signed value: %d"); - break; - - case BFD_RELOC_SH_IMMU6: - if (val < 0 || val > (1 << 6) - 1) - msg = _("invalid operand, not a 6-bit unsigned value: %d"); - break; - - case BFD_RELOC_SH_IMMS6BY32: - if (val < -(1 << 10) || val > (1 << 10) - 1) - msg = _("invalid operand, not a 11-bit signed value: %d"); - else if (val & 31) - msg = _("invalid operand, not a multiple of 32: %d"); - break; - - case BFD_RELOC_SH_IMMS10: - if (val < -(1 << 9) || val > (1 << 9) - 1) - msg = _("invalid operand, not a 10-bit signed value: %d"); - break; - - case BFD_RELOC_SH_IMMS10BY2: - if (val < -(1 << 10) || val > (1 << 10) - 1) - msg = _("invalid operand, not a 11-bit signed value: %d"); - else if (val & 1) - msg = _("invalid operand, not an even value: %d"); - break; - - case BFD_RELOC_SH_IMMS10BY4: - if (val < -(1 << 11) || val > (1 << 11) - 1) - msg = _("invalid operand, not a 12-bit signed value: %d"); - else if (val & 3) - msg = _("invalid operand, not a multiple of 4: %d"); - break; - - case BFD_RELOC_SH_IMMS10BY8: - if (val < -(1 << 12) || val > (1 << 12) - 1) - msg = _("invalid operand, not a 13-bit signed value: %d"); - else if (val & 7) - msg = _("invalid operand, not a multiple of 8: %d"); - break; - - case BFD_RELOC_SH_IMMS16: - if (val < -(1 << 15) || val > (1 << 15) - 1) - msg = _("invalid operand, not a 16-bit signed value: %d"); - break; - - case BFD_RELOC_SH_IMMU16: - if (val < 0 || val > (1 << 16) - 1) - msg = _("invalid operand, not a 16-bit unsigned value: %d"); - break; - - case BFD_RELOC_SH_PT_16: - case SHMEDIA_BFD_RELOC_PT: - if (val < -(1 << 15) * 4 || val > ((1 << 15) - 1) * 4 + 1) - msg = _("operand out of range for PT, PTA and PTB"); - else if ((val % 4) != 0 && ((val - 1) % 4) != 0) - msg = _("operand not a multiple of 4 for PT, PTA or PTB: %d"); - break; - - /* These have no limits; they take a 16-bit slice of a 32- or 64-bit - number. */ - case BFD_RELOC_SH_IMM_HI16: - case BFD_RELOC_SH_IMM_MEDHI16: - case BFD_RELOC_SH_IMM_MEDLOW16: - case BFD_RELOC_SH_IMM_LOW16: - case BFD_RELOC_SH_IMM_HI16_PCREL: - case BFD_RELOC_SH_IMM_MEDHI16_PCREL: - case BFD_RELOC_SH_IMM_MEDLOW16_PCREL: - case BFD_RELOC_SH_IMM_LOW16_PCREL: - - case BFD_RELOC_SH_SHMEDIA_CODE: - break; - - /* This one has limits out of our reach. */ - case BFD_RELOC_64: - break; - - default: - BAD_CASE (reloc); - } - - if (msg) - { - if (fixp) - as_bad_where (fixp->fx_file, fixp->fx_line, msg, val); - else - as_bad (msg, val); - } -} - -/* Handle an immediate operand by checking limits and noting it for later - evaluation if not computable yet, and return a bitfield suitable to - "or" into the opcode (non-zero if the value was a constant number). */ - -static unsigned long -shmedia_immediate_op (char *where, shmedia_operand_info *op, int pcrel, - bfd_reloc_code_real_type how) -{ - unsigned long retval = 0; - - /* If this is not an absolute number, make it a fixup. A constant in - place of a pc-relative operand also needs a fixup. */ - if (op->immediate.X_op != O_constant || pcrel) - fix_new_exp (frag_now, - where - frag_now->fr_literal, - 4, - &op->immediate, - pcrel, - how); - else - { - /* Check that the number is within limits as represented by the - reloc, and return the number. */ - shmedia_check_limits (&op->immediate.X_add_number, how, NULL); - - retval - = shmedia_mask_number ((unsigned long) op->immediate.X_add_number, - how); - } - - return retval << 10; -} - -/* Try and parse a register name case-insensitively, return the number of - chars consumed. */ - -static int -shmedia_parse_reg (char *src, shmedia_arg_type *mode, int *reg, - shmedia_arg_type argtype) -{ - int l0 = TOLOWER (src[0]); - int l1 = l0 ? TOLOWER (src[1]) : 0; - - if (l0 == 'r') - { - if (src[1] >= '1' && src[1] <= '5') - { - if (src[2] >= '0' && src[2] <= '9' - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_GREG_M; - *reg = 10 * (src[1] - '0') + src[2] - '0'; - return 3; - } - } - - if (src[1] == '6') - { - if (src[2] >= '0' && src[2] <= '3' - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_GREG_M; - *reg = 60 + src[2] - '0'; - return 3; - } - } - - if (src[1] >= '0' && src[1] <= '9' - && ! IDENT_CHAR ((unsigned char) src[2])) - { - *mode = A_GREG_M; - *reg = (src[1] - '0'); - return 2; - } - } - - if (l0 == 't' && l1 == 'r') - { - if (src[2] >= '0' && src[2] <= '7' - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_TREG_B; - *reg = (src[2] - '0'); - return 3; - } - } - - if (l0 == 'f' && l1 == 'r') - { - if (src[2] >= '1' && src[2] <= '5') - { - if (src[3] >= '0' && src[3] <= '9' - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_FREG_G; - *reg = 10 * (src[2] - '0') + src[3] - '0'; - return 4; - } - } - if (src[2] == '6') - { - if (src[3] >= '0' && src[3] <= '3' - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_FREG_G; - *reg = 60 + src[3] - '0'; - return 4; - } - } - if (src[2] >= '0' && src[2] <= '9' - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_FREG_G; - *reg = (src[2] - '0'); - return 3; - } - } - - if (l0 == 'f' && l1 == 'v') - { - if (src[2] >= '1' && src[2] <= '5') - { - if (src[3] >= '0' && src[3] <= '9' - && ((10 * (src[2] - '0') + src[3] - '0') % 4) == 0 - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_FVREG_G; - *reg = 10 * (src[2] - '0') + src[3] - '0'; - return 4; - } - } - if (src[2] == '6') - { - if (src[3] == '0' - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_FVREG_G; - *reg = 60 + src[3] - '0'; - return 4; - } - } - if (src[2] >= '0' && src[2] <= '9' - && ((src[2] - '0') % 4) == 0 - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_FVREG_G; - *reg = (src[2] - '0'); - return 3; - } - } - - if (l0 == 'd' && l1 == 'r') - { - if (src[2] >= '1' && src[2] <= '5') - { - if (src[3] >= '0' && src[3] <= '9' - && ((src[3] - '0') % 2) == 0 - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_DREG_G; - *reg = 10 * (src[2] - '0') + src[3] - '0'; - return 4; - } - } - - if (src[2] == '6') - { - if ((src[3] == '0' || src[3] == '2') - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_DREG_G; - *reg = 60 + src[3] - '0'; - return 4; - } - } - - if (src[2] >= '0' && src[2] <= '9' - && ((src[2] - '0') % 2) == 0 - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_DREG_G; - *reg = (src[2] - '0'); - return 3; - } - } - - if (l0 == 'f' && l1 == 'p') - { - if (src[2] >= '1' && src[2] <= '5') - { - if (src[3] >= '0' && src[3] <= '9' - && ((src[3] - '0') % 2) == 0 - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_FPREG_G; - *reg = 10 * (src[2] - '0') + src[3] - '0'; - return 4; - } - } - - if (src[2] == '6') - { - if ((src[3] == '0' || src[3] == '2') - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_FPREG_G; - *reg = 60 + src[3] - '0'; - return 4; - } - } - - if (src[2] >= '0' && src[2] <= '9' - && ((src[2] - '0') % 2) == 0 - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_FPREG_G; - *reg = (src[2] - '0'); - return 3; - } - } - - if (l0 == 'm' && strncasecmp (src, "mtrx", 4) == 0) - { - if (src[4] == '0' && ! IDENT_CHAR ((unsigned char) src[5])) - { - *mode = A_FMREG_G; - *reg = 0; - return 5; - } - - if (src[4] == '1' && src[5] == '6' - && ! IDENT_CHAR ((unsigned char) src[6])) - { - *mode = A_FMREG_G; - *reg = 16; - return 6; - } - - if (src[4] == '3' && src[5] == '2' - && ! IDENT_CHAR ((unsigned char) src[6])) - { - *mode = A_FMREG_G; - *reg = 32; - return 6; - } - - if (src[4] == '4' && src[5] == '8' - && ! IDENT_CHAR ((unsigned char) src[6])) - { - *mode = A_FMREG_G; - *reg = 48; - return 6; - } - } - - if (l0 == 'c' && l1 == 'r') - { - if (src[2] >= '1' && src[2] <= '5') - { - if (src[3] >= '0' && src[3] <= '9' - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_CREG_K; - *reg = 10 * (src[2] - '0') + src[3] - '0'; - return 4; - } - } - if (src[2] == '6') - { - if (src[3] >= '0' && src[3] <= '3' - && ! IDENT_CHAR ((unsigned char) src[4])) - { - *mode = A_CREG_K; - *reg = 60 + src[3] - '0'; - return 4; - } - } - if (src[2] >= '0' && src[2] <= '9' - && ! IDENT_CHAR ((unsigned char) src[3])) - { - *mode = A_CREG_K; - *reg = (src[2] - '0'); - return 3; - } - } - - /* We either have an error, a symbol or a control register by predefined - name. To keep things simple but still fast for normal cases, we do - linear search in the (not to big) table of predefined control - registers. We only do this when we *expect* a control register. - Those instructions should be rare enough that linear searching is ok. - Or just read them into a hash-table in shmedia_md_begin. Since they - cannot be specified in the same place of symbol operands, don't add - them there to the *main* symbol table as being in "reg_section". */ - if (argtype == A_CREG_J || argtype == A_CREG_K) - { - const shmedia_creg_info *cregp; - int len = 0; - - for (cregp = shmedia_creg_table; cregp->name != NULL; cregp++) - { - len = strlen (cregp->name); - if (strncasecmp (cregp->name, src, len) == 0 - && ! IDENT_CHAR (src[len])) - break; - } - - if (cregp->name != NULL) - { - *mode = A_CREG_K; - *reg = cregp->cregno; - return len; - } - } - - return 0; -} - -/* Called from md_estimate_size_before_relax in tc-sh.c */ - -static int -shmedia_md_estimate_size_before_relax (fragS *fragP, - segT segment_type ATTRIBUTE_UNUSED) -{ - int old_fr_fix; - expressionS *exp; - - /* For ELF, we can't relax externally visible symbols; see tc-i386.c. */ - bfd_boolean sym_relaxable - = (fragP->fr_symbol - && S_GET_SEGMENT (fragP->fr_symbol) == segment_type - && ! S_IS_EXTERNAL (fragP->fr_symbol) - && ! S_IS_WEAK (fragP->fr_symbol)); - - old_fr_fix = fragP->fr_fix; - - switch (fragP->fr_subtype) - { - case C (SH64PCREL16_32, UNDEF_SH64PCREL): - case C (SH64PCREL16PT_32, UNDEF_SH64PCREL): - /* Used to be to somewhere which was unknown. */ - if (sym_relaxable) - { - int what = GET_WHAT (fragP->fr_subtype); - - /* In this segment, so head for shortest. */ - fragP->fr_subtype = C (what, SH64PCREL16); - } - else - { - int what = GET_WHAT (fragP->fr_subtype); - /* We know the abs value, but we don't know where we will be - linked, so we must make it the longest. Presumably we could - switch to a non-pcrel representation, but having absolute - values in PT operands should be rare enough not to be worth - adding that code. */ - fragP->fr_subtype = C (what, SH64PCREL32); - } - fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; - break; - - case C (SH64PCREL16_64, UNDEF_SH64PCREL): - case C (SH64PCREL16PT_64, UNDEF_SH64PCREL): - /* Used to be to somewhere which was unknown. */ - if (sym_relaxable) - { - int what = GET_WHAT (fragP->fr_subtype); - - /* In this segment, so head for shortest. */ - fragP->fr_subtype = C (what, SH64PCREL16); - } - else - { - int what = GET_WHAT (fragP->fr_subtype); - /* We know the abs value, but we don't know where we will be - linked, so we must make it the longest. Presumably we could - switch to a non-pcrel representation, but having absolute - values in PT operands should be rare enough not to be worth - adding that code. */ - fragP->fr_subtype = C (what, SH64PCREL64); - } - fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; - break; - - case C (MOVI_IMM_64, UNDEF_MOVI): - case C (MOVI_IMM_32, UNDEF_MOVI): - exp = NULL; - - /* Look inside the "symbol". If we find a PC-relative expression, - change this to a PC-relative, relaxable expression. */ - if (fragP->fr_symbol != NULL - && (exp = symbol_get_value_expression (fragP->fr_symbol)) != NULL - && exp->X_op == O_subtract - && exp->X_op_symbol != NULL - && S_GET_SEGMENT (exp->X_op_symbol) == segment_type) - { - int what = GET_WHAT (fragP->fr_subtype); - int what_high = what == MOVI_IMM_32 ? MOVI_32 : MOVI_64; - expressionS *opexp - = symbol_get_value_expression (exp->X_op_symbol); - expressionS *addexp - = symbol_get_value_expression (exp->X_add_symbol); - - /* Change the MOVI expression to the "X" in "X - Y" and subtract - Y:s offset to this location from X. Note that we can only - allow an Y which is offset from this frag. */ - if (opexp != NULL - && addexp != NULL - && opexp->X_op == O_constant - && fragP == symbol_get_frag (exp->X_op_symbol)) - { - /* At this point, before relaxing, the add-number of opexp - is the offset from the fr_fix part. */ - fragP->fr_offset - = (exp->X_add_number - - (opexp->X_add_number - (fragP->fr_fix - 4))); - fragP->fr_symbol = exp->X_add_symbol; - - what = what == MOVI_IMM_32 - ? MOVI_IMM_32_PCREL : MOVI_IMM_64_PCREL; - - /* Check the "X" symbol to estimate the size of this - PC-relative expression. */ - if (S_GET_SEGMENT (exp->X_add_symbol) == segment_type - && ! S_IS_EXTERNAL (exp->X_add_symbol) - && ! S_IS_WEAK (exp->X_add_symbol)) - fragP->fr_subtype = C (what, MOVI_16); - else - fragP->fr_subtype = C (what, what_high); - - /* This is now a PC-relative expression, fit to be relaxed. */ - } - else - fragP->fr_subtype = C (what, what_high); - } - else if (fragP->fr_symbol == NULL - || (S_GET_SEGMENT (fragP->fr_symbol) == absolute_section - && exp->X_op == O_constant)) - { - unsigned long insn - = (target_big_endian - ? bfd_getb32 (fragP->fr_opcode) - : bfd_getl32 (fragP->fr_opcode)); - offsetT one = (offsetT) 1; - offsetT value = fragP->fr_offset - + (fragP->fr_symbol == NULL ? 0 : S_GET_VALUE (fragP->fr_symbol)); - - if (value >= (-((offsetT) 1 << 15)) && value < ((offsetT) 1 << 15)) - { - /* Fits in 16-bit signed number. */ - int what = GET_WHAT (fragP->fr_subtype); - fragP->fr_subtype = C (what, MOVI_16); - - /* Just "or" in the value. */ - md_number_to_chars (fragP->fr_opcode, - insn | ((value & ((1 << 16) - 1)) << 10), - 4); - } - else if (value >= -(one << 31) - && (value < (one << 31) - || (sh64_abi == sh64_abi_32 && value < (one << 32)))) - { - /* The value fits in a 32-bit signed number. */ - int reg = (insn >> 4) & 0x3f; - - /* Just "or" in the high bits of the value, making the first - MOVI. */ - md_number_to_chars (fragP->fr_opcode, - insn - | (((value >> 16) & ((1 << 16) - 1)) << 10), - 4); - - /* Add a SHORI with the low bits. Note that this insn lives - in the variable fragment part. */ - md_number_to_chars (fragP->fr_literal + old_fr_fix, - SHMEDIA_SHORI_OPC - | (reg << 4) - | ((value & ((1 << 16) - 1)) << 10), - 4); - - /* We took a piece of the variable part. */ - fragP->fr_fix += 4; - } - else if (GET_WHAT (fragP->fr_subtype) == MOVI_IMM_32) - { - /* Value out of range. */ - as_bad_where (fragP->fr_file, fragP->fr_line, - _("MOVI operand is not a 32-bit signed value: 0x%8x%08x"), - ((unsigned int) (value >> 32) - & (unsigned int) 0xffffffff), - (unsigned int) value & (unsigned int) 0xffffffff); - - /* Must advance size, or we will get internal inconsistency - and fall into an assert. */ - fragP->fr_fix += 4; - } - /* Now we know we are allowed to expand to 48- and 64-bit values. */ - else if (value >= -(one << 47) && value < (one << 47)) - { - /* The value fits in a 48-bit signed number. */ - int reg = (insn >> 4) & 0x3f; - - /* Just "or" in the high bits of the value, making the first - MOVI. */ - md_number_to_chars (fragP->fr_opcode, - insn - | (((value >> 32) & ((1 << 16) - 1)) << 10), - 4); - - /* Add a SHORI with the middle bits. Note that this insn lives - in the variable fragment part. */ - md_number_to_chars (fragP->fr_literal + old_fr_fix, - SHMEDIA_SHORI_OPC - | (reg << 4) - | (((value >> 16) & ((1 << 16) - 1)) << 10), - 4); - - /* Add a SHORI with the low bits. */ - md_number_to_chars (fragP->fr_literal + old_fr_fix + 4, - SHMEDIA_SHORI_OPC - | (reg << 4) - | ((value & ((1 << 16) - 1)) << 10), - 4); - - /* We took a piece of the variable part. */ - fragP->fr_fix += 8; - } - else - { - /* A 64-bit number. */ - int reg = (insn >> 4) & 0x3f; - - /* Just "or" in the high bits of the value, making the first - MOVI. */ - md_number_to_chars (fragP->fr_opcode, - insn - | (((value >> 48) & ((1 << 16) - 1)) << 10), - 4); - - /* Add a SHORI with the midhigh bits. Note that this insn lives - in the variable fragment part. */ - md_number_to_chars (fragP->fr_literal + old_fr_fix, - SHMEDIA_SHORI_OPC - | (reg << 4) - | (((value >> 32) & ((1 << 16) - 1)) << 10), - 4); - - /* Add a SHORI with the midlow bits. */ - md_number_to_chars (fragP->fr_literal + old_fr_fix + 4, - SHMEDIA_SHORI_OPC - | (reg << 4) - | (((value >> 16) & ((1 << 16) - 1)) << 10), - 4); - - /* Add a SHORI with the low bits. */ - md_number_to_chars (fragP->fr_literal + old_fr_fix + 8, - SHMEDIA_SHORI_OPC - | (reg << 4) - | ((value & ((1 << 16) - 1)) << 10), 4); - /* We took all of the variable part. */ - fragP->fr_fix += 12; - } - - /* MOVI expansions that get here have not been converted to - PC-relative frags, but instead expanded by - md_number_to_chars or by calling shmedia_md_convert_frag - with final == FALSE. We must not have them around as - frags anymore; symbols would be prematurely evaluated - when relaxing. We will not need to have md_convert_frag - called again with them; any further handling is through - the already emitted fixups. */ - frag_wane (fragP); - break; - } - fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; - break; - - /* For relaxation states that remain unchanged, report the - estimated length. */ - case C (SH64PCREL16_32, SH64PCREL16): - case C (SH64PCREL16PT_32, SH64PCREL16): - case C (SH64PCREL16_32, SH64PCREL32): - case C (SH64PCREL16PT_32, SH64PCREL32): - case C (SH64PCREL16_32, SH64PCRELPLT): - case C (SH64PCREL16PT_32, SH64PCRELPLT): - case C (SH64PCREL16_64, SH64PCREL16): - case C (SH64PCREL16PT_64, SH64PCREL16): - case C (SH64PCREL16_64, SH64PCREL32): - case C (SH64PCREL16PT_64, SH64PCREL32): - case C (SH64PCREL16_64, SH64PCREL48): - case C (SH64PCREL16PT_64, SH64PCREL48): - case C (SH64PCREL16_64, SH64PCREL64): - case C (SH64PCREL16PT_64, SH64PCREL64): - case C (SH64PCREL16_64, SH64PCRELPLT): - case C (SH64PCREL16PT_64, SH64PCRELPLT): - case C (MOVI_IMM_32, MOVI_16): - case C (MOVI_IMM_32, MOVI_32): - case C (MOVI_IMM_32, MOVI_GOTOFF): - case C (MOVI_IMM_32_PCREL, MOVI_16): - case C (MOVI_IMM_32_PCREL, MOVI_32): - case C (MOVI_IMM_32_PCREL, MOVI_PLT): - case C (MOVI_IMM_32_PCREL, MOVI_GOTPC): - case C (MOVI_IMM_64, MOVI_16): - case C (MOVI_IMM_64, MOVI_32): - case C (MOVI_IMM_64, MOVI_48): - case C (MOVI_IMM_64, MOVI_64): - case C (MOVI_IMM_64, MOVI_GOTOFF): - case C (MOVI_IMM_64_PCREL, MOVI_16): - case C (MOVI_IMM_64_PCREL, MOVI_32): - case C (MOVI_IMM_64_PCREL, MOVI_48): - case C (MOVI_IMM_64_PCREL, MOVI_64): - case C (MOVI_IMM_64_PCREL, MOVI_PLT): - case C (MOVI_IMM_64_PCREL, MOVI_GOTPC): - fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length; - break; - - default: - abort (); - } - - return fragP->fr_var + (fragP->fr_fix - old_fr_fix); -} - -/* Parse an expression, SH64-style. Copied from tc-sh.c, but with - datatypes adjusted. */ - -static char * -shmedia_parse_exp (char *s, shmedia_operand_info *op) -{ - char *save; - char *new_pointer; - - save = input_line_pointer; - input_line_pointer = s; - expression (&op->immediate); - if (op->immediate.X_op == O_absent) - as_bad (_("missing operand")); - new_pointer = input_line_pointer; - input_line_pointer = save; - return new_pointer; -} - -/* Parse an operand. Store pointer to next character in *PTR. */ - -static void -shmedia_get_operand (char **ptr, shmedia_operand_info *op, - shmedia_arg_type argtype) -{ - char *src = *ptr; - shmedia_arg_type mode = (shmedia_arg_type) -1; - unsigned int len; - - len = shmedia_parse_reg (src, &mode, &(op->reg), argtype); - if (len) - { - *ptr = src + len; - op->type = mode; - } - else - { - /* Not a reg, so it must be a displacement. */ - *ptr = shmedia_parse_exp (src, op); - op->type = A_IMMM; - - /* This is just an initialization; shmedia_get_operands will change - as needed. */ - op->reloctype = BFD_RELOC_NONE; - } -} - -/* Parse the operands for this insn; return NULL if invalid, else return - how much text was consumed. */ - -static char * -shmedia_get_operands (shmedia_opcode_info *info, char *args, - shmedia_operands_info *operands) -{ - char *ptr = args; - int i; - - if (*ptr == ' ') - ptr++; - - for (i = 0; info->arg[i] != 0; i++) - { - memset (operands->operands + i, 0, sizeof (operands->operands[0])); - - /* No operand to get for these fields. */ - if (info->arg[i] == A_REUSE_PREV) - continue; - - shmedia_get_operand (&ptr, &operands->operands[i], info->arg[i]); - - /* Check operands type match. */ - switch (info->arg[i]) - { - case A_GREG_M: - case A_GREG_N: - case A_GREG_D: - if (operands->operands[i].type != A_GREG_M) - return NULL; - break; - - case A_FREG_G: - case A_FREG_H: - case A_FREG_F: - if (operands->operands[i].type != A_FREG_G) - return NULL; - break; - - case A_FVREG_G: - case A_FVREG_H: - case A_FVREG_F: - if (operands->operands[i].type != A_FVREG_G) - return NULL; - break; - - case A_FMREG_G: - case A_FMREG_H: - case A_FMREG_F: - if (operands->operands[i].type != A_FMREG_G) - return NULL; - break; - - case A_FPREG_G: - case A_FPREG_H: - case A_FPREG_F: - if (operands->operands[i].type != A_FPREG_G) - return NULL; - break; - - case A_DREG_G: - case A_DREG_H: - case A_DREG_F: - if (operands->operands[i].type != A_DREG_G) - return NULL; - break; - - case A_TREG_A: - case A_TREG_B: - if (operands->operands[i].type != A_TREG_B) - return NULL; - break; - - case A_CREG_J: - case A_CREG_K: - if (operands->operands[i].type != A_CREG_K) - return NULL; - break; - - case A_IMMS16: - case A_IMMU16: - /* Check for an expression that looks like S & 65535 or - (S >> N) & 65535, where N = 0, 16, 32, 48. - - Get the S and put at operands->operands[i].immediate, and - adjust operands->operands[i].reloctype. */ - { - expressionS *imm_expr = &operands->operands[i].immediate; - expressionS *right_expr; - - if (operands->operands[i].type == A_IMMM - && imm_expr->X_op == O_bit_and - && imm_expr->X_op_symbol != NULL - && ((right_expr - = symbol_get_value_expression (imm_expr->X_op_symbol)) - ->X_op == O_constant) - && right_expr->X_add_number == 0xffff) - { - symbolS *inner = imm_expr->X_add_symbol; - bfd_reloc_code_real_type reloctype = BFD_RELOC_SH_IMM_LOW16; - expressionS *inner_expr - = symbol_get_value_expression (inner); - - if (inner_expr->X_op == O_right_shift) - { - expressionS *inner_right; - - if (inner_expr->X_op_symbol != NULL - && ((inner_right - = symbol_get_value_expression (inner_expr - ->X_op_symbol)) - ->X_op == O_constant)) - { - offsetT addnum - = inner_right->X_add_number; - - if (addnum == 0 || addnum == 16 || addnum == 32 - || addnum == 48) - { - reloctype - = (addnum == 0 - ? BFD_RELOC_SH_IMM_LOW16 - : (addnum == 16 - ? BFD_RELOC_SH_IMM_MEDLOW16 - : (addnum == 32 - ? BFD_RELOC_SH_IMM_MEDHI16 - : BFD_RELOC_SH_IMM_HI16))); - - inner = inner_expr->X_add_symbol; - inner_expr = symbol_get_value_expression (inner); - } - } - } - - /* I'm not sure I understand the logic, but evidently the - inner expression of a lone symbol is O_constant, with - the actual symbol in expr_section. For a constant, the - section would be absolute_section. For sym+offset, - it's O_symbol as always. See expr.c:make_expr_symbol, - first statements. */ - - if (inner_expr->X_op == O_constant - && S_GET_SEGMENT (inner) != absolute_section) - { - operands->operands[i].immediate.X_op = O_symbol; - operands->operands[i].immediate.X_add_symbol = inner; - operands->operands[i].immediate.X_add_number = 0; - } - else - operands->operands[i].immediate - = *symbol_get_value_expression (inner); - - operands->operands[i].reloctype = reloctype; - } - } - /* Fall through. */ - case A_IMMS6: - case A_IMMS6BY32: - case A_IMMS10: - case A_IMMS10BY1: - case A_IMMS10BY2: - case A_IMMS10BY4: - case A_IMMS10BY8: - case A_PCIMMS16BY4: - case A_PCIMMS16BY4_PT: - case A_IMMU5: - case A_IMMU6: - if (operands->operands[i].type != A_IMMM) - return NULL; - - if (sh_check_fixup (&operands->operands[i].immediate, - &operands->operands[i].reloctype)) - { - as_bad (_("invalid PIC reference")); - return NULL; - } - - break; - - default: - BAD_CASE (info->arg[i]); - } - - if (*ptr == ',' && info->arg[i + 1]) - ptr++; - } - return ptr; -} - - -/* Find an opcode at the start of *STR_P in the hash table, and set - *STR_P to the first character after the last one read. */ - -static shmedia_opcode_info * -shmedia_find_cooked_opcode (char **str_p) -{ - char *str = *str_p; - char *op_start; - char *op_end; - char name[20]; - unsigned int nlen = 0; - - /* Drop leading whitespace. */ - while (*str == ' ') - str++; - - /* Find the op code end. */ - for (op_start = op_end = str; - *op_end - && nlen < sizeof (name) - 1 - && ! is_end_of_line[(unsigned char) *op_end] - && ! ISSPACE ((unsigned char) *op_end); - op_end++) - { - unsigned char c = op_start[nlen]; - - /* The machine independent code will convert CMP/EQ into cmp/EQ - because it thinks the '/' is the end of the symbol. Moreover, - all but the first sub-insn is a parallel processing insn won't - be capitalized. Instead of hacking up the machine independent - code, we just deal with it here. */ - c = TOLOWER (c); - name[nlen] = c; - nlen++; - } - - name[nlen] = 0; - *str_p = op_end; - - if (nlen == 0) - as_bad (_("can't find opcode")); - - return - (shmedia_opcode_info *) hash_find (shmedia_opcode_hash_control, name); -} - -/* Build up an instruction, including allocating the frag. */ - -static int -shmedia_build_Mytes (shmedia_opcode_info *opcode, - shmedia_operands_info *operands) -{ - unsigned long insn = opcode->opcode_base; - int i, j; - char *insn_loc = frag_more (4); - - /* The parameter to dwarf2_emit_insn is actually the offset to the start - of the insn from the fix piece of instruction that was emitted. - Since we want .debug_line addresses to record (address | 1) for - SHmedia insns, we get the wanted effect by taking one off the size, - knowing it's a multiple of 4. We count from the first fix piece of - the insn. There must be no frags changes (frag_more or frag_var) - calls in-between the frag_more call we account for, and this - dwarf2_emit_insn call. */ - dwarf2_emit_insn (3); - - /* This is stored into any frag_var operand. */ - sh64_last_insn_frag = frag_now; - - /* Loop over opcode info, emit an instruction. */ - for (i = 0, j = 0; opcode->arg[i]; i++) - { - shmedia_arg_type argtype = opcode->arg[i]; - shmedia_operand_info *opjp = &operands->operands[j]; - switch (argtype) - { - case A_TREG_A: - case A_TREG_B: - case A_GREG_M: - case A_GREG_N: - case A_GREG_D: - case A_FREG_G: - case A_FREG_H: - case A_FREG_F: - case A_FVREG_G: - case A_FVREG_H: - case A_FVREG_F: - case A_FMREG_G: - case A_FMREG_H: - case A_FMREG_F: - case A_FPREG_G: - case A_FPREG_H: - case A_FPREG_F: - case A_DREG_G: - case A_DREG_H: - case A_DREG_F: - case A_CREG_J: - case A_CREG_K: - /* Six-bit register fields. They just get filled with the - parsed register number. */ - insn |= (opjp->reg << opcode->nibbles[i]); - j++; - break; - - case A_REUSE_PREV: - /* Copy the register for the previous operand to this position. */ - insn |= (operands->operands[j - 1].reg << opcode->nibbles[i]); - j++; - break; - - case A_IMMS6: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMS6); - j++; - break; - - case A_IMMS6BY32: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMS6BY32); - j++; - break; - - case A_IMMS10BY1: - case A_IMMS10: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMS10); - j++; - break; - - case A_IMMS10BY2: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMS10BY2); - j++; - break; - - case A_IMMS10BY4: - if (opjp->reloctype == BFD_RELOC_NONE) - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMS10BY4); - else if (opjp->reloctype == BFD_RELOC_SH_GOTPLT32) - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_GOTPLT10BY4); - else if (opjp->reloctype == BFD_RELOC_32_GOT_PCREL) - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_GOT10BY4); - else - as_bad (_("invalid PIC reference")); - j++; - break; - - case A_IMMS10BY8: - if (opjp->reloctype == BFD_RELOC_NONE) - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMS10BY8); - else if (opjp->reloctype == BFD_RELOC_SH_GOTPLT32) - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_GOTPLT10BY8); - else if (opjp->reloctype == BFD_RELOC_32_GOT_PCREL) - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_GOT10BY8); - else - as_bad (_("invalid PIC reference")); - j++; - break; - - case A_IMMS16: - /* Sneak a peek if this is the MOVI insn. If so, check if we - should expand it. */ - if (opjp->reloctype == BFD_RELOC_32_GOT_PCREL) - opjp->reloctype = BFD_RELOC_SH_GOT_LOW16; - else if (opjp->reloctype == BFD_RELOC_SH_GOTPLT32) - opjp->reloctype = BFD_RELOC_SH_GOTPLT_LOW16; - - if ((opjp->reloctype == BFD_RELOC_NONE - || opjp->reloctype == BFD_RELOC_32_GOTOFF - || opjp->reloctype == BFD_RELOC_32_PLT_PCREL - || opjp->reloctype == BFD_RELOC_SH_GOTPC) - && opcode->opcode_base == SHMEDIA_MOVI_OPC - && (opjp->immediate.X_op != O_constant - || opjp->immediate.X_add_number < -32768 - || opjp->immediate.X_add_number > 32767) - && (sh64_expand - || opjp->reloctype == BFD_RELOC_32_GOTOFF - || opjp->reloctype == BFD_RELOC_32_PLT_PCREL - || opjp->reloctype == BFD_RELOC_SH_GOTPC)) - { - int what = sh64_abi == sh64_abi_64 ? MOVI_IMM_64 : MOVI_IMM_32; - offsetT max = sh64_abi == sh64_abi_64 ? MOVI_64 : MOVI_32; - offsetT min = MOVI_16; - offsetT init = UNDEF_MOVI; - valueT addvalue - = opjp->immediate.X_op_symbol != NULL - ? 0 : opjp->immediate.X_add_number; - symbolS *sym - = opjp->immediate.X_op_symbol != NULL - ? make_expr_symbol (&opjp->immediate) - : opjp->immediate.X_add_symbol; - - if (opjp->reloctype == BFD_RELOC_32_GOTOFF) - init = max = min = MOVI_GOTOFF; - else if (opjp->reloctype == BFD_RELOC_32_PLT_PCREL) - { - init = max = min = MOVI_PLT; - what = (sh64_abi == sh64_abi_64 - ? MOVI_IMM_64_PCREL - : MOVI_IMM_32_PCREL); - } - else if (opjp->reloctype == BFD_RELOC_SH_GOTPC) - { - init = max = min = MOVI_GOTPC; - what = (sh64_abi == sh64_abi_64 - ? MOVI_IMM_64_PCREL - : MOVI_IMM_32_PCREL); - } - - frag_var (rs_machine_dependent, - md_relax_table[C (what, max)].rlx_length, - md_relax_table[C (what, min)].rlx_length, - C (what, init), sym, addvalue, insn_loc); - } - else - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - (opjp->reloctype - == BFD_RELOC_NONE) - ? BFD_RELOC_SH_IMMS16 - : opjp->reloctype); - j++; - break; - - case A_PCIMMS16BY4: - { - int what - = ((sh64_abi == sh64_abi_64 && ! sh64_pt32) - ? SH64PCREL16_64 : SH64PCREL16_32); - offsetT max - = ((sh64_abi == sh64_abi_64 && ! sh64_pt32) - ? SH64PCREL64 : SH64PCREL32); - offsetT min = SH64PCREL16; - offsetT init = UNDEF_SH64PCREL; - - /* Don't allow complex expressions here. */ - if (opjp->immediate.X_op_symbol != NULL) - { - as_bad (_("invalid operand: expression in PT target")); - return 0; - } - - if (opjp->reloctype == BFD_RELOC_32_PLT_PCREL) - init = max = min = SH64PCRELPLT; - - /* If we're not expanding, then just emit a fixup. */ - if (sh64_expand || opjp->reloctype != BFD_RELOC_NONE) - frag_var (rs_machine_dependent, - md_relax_table[C (what, max)].rlx_length, - md_relax_table[C (what, min)].rlx_length, - C (what, init), - opjp->immediate.X_add_symbol, - opjp->immediate.X_add_number, - insn_loc); - else - insn |= shmedia_immediate_op (insn_loc, opjp, 1, - opjp->reloctype == BFD_RELOC_NONE - ? BFD_RELOC_SH_PT_16 - : opjp->reloctype); - - j++; - break; - } - - case A_PCIMMS16BY4_PT: - { - int what - = ((sh64_abi == sh64_abi_64 && ! sh64_pt32) - ? SH64PCREL16PT_64 : SH64PCREL16PT_32); - offsetT max - = ((sh64_abi == sh64_abi_64 && ! sh64_pt32) - ? SH64PCREL64 : SH64PCREL32); - offsetT min = SH64PCREL16; - offsetT init = UNDEF_SH64PCREL; - - /* Don't allow complex expressions here. */ - if (opjp->immediate.X_op_symbol != NULL) - { - as_bad (_("invalid operand: expression in PT target")); - return 0; - } - - if (opjp->reloctype == BFD_RELOC_32_PLT_PCREL) - init = max = min = SH64PCRELPLT; - - /* If we're not expanding, then just emit a fixup. */ - if (sh64_expand || opjp->reloctype != BFD_RELOC_NONE) - frag_var (rs_machine_dependent, - md_relax_table[C (what, max)].rlx_length, - md_relax_table[C (what, min)].rlx_length, - C (what, init), - opjp->immediate.X_add_symbol, - opjp->immediate.X_add_number, - insn_loc); - else - /* This reloc-type is just temporary, so we can distinguish - PTA from PT. It is changed in shmedia_md_apply_fix to - BFD_RELOC_SH_PT_16. */ - insn |= shmedia_immediate_op (insn_loc, opjp, 1, - opjp->reloctype == BFD_RELOC_NONE - ? SHMEDIA_BFD_RELOC_PT - : opjp->reloctype); - - j++; - break; - } - - case A_IMMU5: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMU5); - j++; - break; - - case A_IMMU6: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - BFD_RELOC_SH_IMMU6); - j++; - break; - - case A_IMMU16: - insn |= shmedia_immediate_op (insn_loc, opjp, 0, - (opjp->reloctype - == BFD_RELOC_NONE) - ? BFD_RELOC_SH_IMMU16 - : opjp->reloctype); - j++; - break; - - default: - BAD_CASE (argtype); - } - } - - md_number_to_chars (insn_loc, insn, 4); - return 4; -} - -/* Assemble a SHmedia instruction. */ - -static void -shmedia_md_assemble (char *str) -{ - char *op_end; - shmedia_opcode_info *opcode; - shmedia_operands_info operands; - int size; - - opcode = shmedia_find_cooked_opcode (&str); - op_end = str; - - if (opcode == NULL) - { - as_bad (_("unknown opcode")); - return; - } - - /* Start a SHmedia code region, if there has been pseudoinsns or similar - seen since the last one. */ - if (!seen_insn) - { - sh64_update_contents_mark (TRUE); - sh64_set_contents_type (CRT_SH5_ISA32); - seen_insn = TRUE; - } - - op_end = shmedia_get_operands (opcode, op_end, &operands); - - if (op_end == NULL) - { - as_bad (_("invalid operands to %s"), opcode->name); - return; - } - - if (*op_end) - { - as_bad (_("excess operands to %s"), opcode->name); - return; - } - - size = shmedia_build_Mytes (opcode, &operands); - if (size == 0) - return; -} - -/* Hook called from md_begin in tc-sh.c. */ - -void -shmedia_md_begin (void) -{ - const shmedia_opcode_info *shmedia_opcode; - shmedia_opcode_hash_control = hash_new (); - - /* Create opcode table for SHmedia mnemonics. */ - for (shmedia_opcode = shmedia_table; - shmedia_opcode->name; - shmedia_opcode++) - hash_insert (shmedia_opcode_hash_control, shmedia_opcode->name, - (char *) shmedia_opcode); -} - -/* Switch instruction set. Only valid if one of the --isa or --abi - options was specified. */ - -static void -s_sh64_mode (int ignore ATTRIBUTE_UNUSED) -{ - char *name = input_line_pointer, ch; - - /* Make sure data up to this location is handled according to the - previous ISA. */ - sh64_update_contents_mark (TRUE); - - while (!is_end_of_line[(unsigned char) *input_line_pointer]) - input_line_pointer++; - ch = *input_line_pointer; - *input_line_pointer = '\0'; - - /* If the mode was not set before, explicitly or implicitly, then we're - not emitting SH64 code, so this pseudo is invalid. */ - if (sh64_isa_mode == sh64_isa_unspecified) - as_bad (_("The `.mode %s' directive is not valid with this architecture"), - name); - - if (strcasecmp (name, "shcompact") == 0) - sh64_isa_mode = sh64_isa_shcompact; - else if (strcasecmp (name, "shmedia") == 0) - sh64_isa_mode = sh64_isa_shmedia; - else - as_bad (_("Invalid argument to .mode: %s"), name); - - /* Make a new frag, marking it with the supposedly-changed ISA. */ - frag_wane (frag_now); - frag_new (0); - - /* Contents type up to this new point is the same as before; don't add a - data region just because the new frag we created. */ - sh64_update_contents_mark (FALSE); - - *input_line_pointer = ch; - demand_empty_rest_of_line (); -} - -/* Check that the right ABI is used. Only valid if one of the --isa or - --abi options was specified. */ - -static void -s_sh64_abi (int ignore ATTRIBUTE_UNUSED) -{ - char *name = input_line_pointer, ch; - - while (!is_end_of_line[(unsigned char) *input_line_pointer]) - input_line_pointer++; - ch = *input_line_pointer; - *input_line_pointer = '\0'; - - /* If the mode was not set before, explicitly or implicitly, then we're - not emitting SH64 code, so this pseudo is invalid. */ - if (sh64_abi == sh64_abi_unspecified) - as_bad (_("The `.abi %s' directive is not valid with this architecture"), - name); - - if (strcmp (name, "64") == 0) - { - if (sh64_abi != sh64_abi_64) - as_bad (_("`.abi 64' but command-line options do not specify 64-bit ABI")); - } - else if (strcmp (name, "32") == 0) - { - if (sh64_abi != sh64_abi_32) - as_bad (_("`.abi 32' but command-line options do not specify 32-bit ABI")); - } - else - as_bad (_("Invalid argument to .abi: %s"), name); - - *input_line_pointer = ch; - demand_empty_rest_of_line (); -} - -/* This function is the first target-specific function called after - parsing command-line options. Therefore we set default values from - command-line options here and do some sanity checking we couldn't do - when options were being parsed. */ - -const char * -sh64_target_format (void) -{ -#ifdef TE_NetBSD - /* For NetBSD, if the ISA is unspecified, always use SHmedia. */ - if (preset_target_arch == 0 && sh64_isa_mode == sh64_isa_unspecified) - sh64_isa_mode = sh64_isa_shmedia; - - /* If the ABI is unspecified, select a default: based on how - we were configured: sh64 == sh64_abi_64, else sh64_abi_32. */ - if (sh64_abi == sh64_abi_unspecified) - { - if (preset_target_arch != 0 || sh64_isa_mode == sh64_isa_shcompact) - sh64_abi = sh64_abi_32; - else if (strncmp (TARGET_CPU, "sh64", 4) == 0) - sh64_abi = sh64_abi_64; - else - sh64_abi = sh64_abi_32; - } -#endif - -#ifdef TE_LINUX - if (preset_target_arch == 0 && sh64_isa_mode == sh64_isa_unspecified) - sh64_isa_mode = sh64_isa_shmedia; - - if (sh64_abi == sh64_abi_unspecified) - sh64_abi = sh64_abi_32; -#endif - - if (sh64_abi == sh64_abi_64 && sh64_isa_mode == sh64_isa_unspecified) - sh64_isa_mode = sh64_isa_shmedia; - - if (sh64_abi == sh64_abi_32 && sh64_isa_mode == sh64_isa_unspecified) - sh64_isa_mode = sh64_isa_shcompact; - - if (sh64_isa_mode == sh64_isa_shcompact - && sh64_abi == sh64_abi_unspecified) - sh64_abi = sh64_abi_32; - - if (sh64_isa_mode == sh64_isa_shmedia - && sh64_abi == sh64_abi_unspecified) - sh64_abi = sh64_abi_64; - - if (sh64_isa_mode == sh64_isa_unspecified && ! sh64_mix) - as_bad (_("-no-mix is invalid without specifying SHcompact or SHmedia")); - - if ((sh64_isa_mode == sh64_isa_unspecified - || sh64_isa_mode == sh64_isa_shmedia) - && sh64_shcompact_const_crange) - as_bad (_("-shcompact-const-crange is invalid without SHcompact")); - - if (sh64_pt32 && sh64_abi != sh64_abi_64) - as_bad (_("-expand-pt32 only valid with -abi=64")); - - if (! sh64_expand && sh64_isa_mode == sh64_isa_unspecified) - as_bad (_("-no-expand only valid with SHcompact or SHmedia")); - - if (sh64_pt32 && ! sh64_expand) - as_bad (_("-expand-pt32 invalid together with -no-expand")); - -#ifdef TE_NetBSD - if (sh64_abi == sh64_abi_64) - return (target_big_endian ? "elf64-sh64-nbsd" : "elf64-sh64l-nbsd"); - else - return (target_big_endian ? "elf32-sh64-nbsd" : "elf32-sh64l-nbsd"); -#elif defined (TE_LINUX) - if (sh64_abi == sh64_abi_64) - return (target_big_endian ? "elf64-sh64big-linux" : "elf64-sh64-linux"); - else - return (target_big_endian ? "elf32-sh64big-linux" : "elf32-sh64-linux"); -#else - /* When the ISA is not one of SHmedia or SHcompact, use the old SH - object format. */ - if (sh64_isa_mode == sh64_isa_unspecified) - return (target_big_endian ? "elf32-sh" : "elf32-shl"); - else if (sh64_abi == sh64_abi_64) - return (target_big_endian ? "elf64-sh64" : "elf64-sh64l"); - else - return (target_big_endian ? "elf32-sh64" : "elf32-sh64l"); -#endif -} - -/* The worker function of TARGET_MACH. */ - -int -sh64_target_mach (void) -{ - /* We need to explicitly set bfd_mach_sh5 instead of the default 0. But - we only do this for the 64-bit ABI: if we do it for the 32-bit ABI, - the SH5 info in the bfd_arch_info structure will be selected. - However correct, as the machine has 64-bit addresses, functions - expected to emit 32-bit data for addresses will start failing. For - example, the dwarf2dbg.c functions will emit 64-bit debugging format, - and we don't want that in the 32-bit ABI. - - We could have two bfd_arch_info structures for SH64; one for the - 32-bit ABI and one for the rest (64-bit ABI). But that would be a - bigger kludge: it's a flaw in the BFD design, and we need to just - work around it by having the default machine set here in the - assembler. For everything else but the assembler, the various bfd - functions will set the machine type right to bfd_mach_sh5 from object - file header flags regardless of the 0 here. */ - - return (sh64_abi == sh64_abi_64) ? bfd_mach_sh5 : 0; -} - -/* This is MD_PCREL_FROM_SECTION, we define so it is called instead of - md_pcrel_from (in tc-sh.c). */ - -valueT -shmedia_md_pcrel_from_section (struct fix *fixP, segT sec ATTRIBUTE_UNUSED) -{ - /* Use the ISA for the instruction to decide which offset to use. We - can glean it from the fixup type. */ - switch (fixP->fx_r_type) - { - case BFD_RELOC_SH_IMM_LOW16: - case BFD_RELOC_SH_IMM_MEDLOW16: - case BFD_RELOC_SH_IMM_MEDHI16: - case BFD_RELOC_SH_IMM_HI16: - case BFD_RELOC_SH_IMM_LOW16_PCREL: - case BFD_RELOC_SH_IMM_MEDLOW16_PCREL: - case BFD_RELOC_SH_IMM_MEDHI16_PCREL: - case BFD_RELOC_SH_IMM_HI16_PCREL: - case BFD_RELOC_SH_IMMU5: - case BFD_RELOC_SH_IMMU6: - case BFD_RELOC_SH_IMMS6: - case BFD_RELOC_SH_IMMS10: - case BFD_RELOC_SH_IMMS10BY2: - case BFD_RELOC_SH_IMMS10BY4: - case BFD_RELOC_SH_IMMS10BY8: - case BFD_RELOC_SH_IMMS16: - case BFD_RELOC_SH_IMMU16: - case BFD_RELOC_SH_PT_16: - case SHMEDIA_BFD_RELOC_PT: - /* PC-relative relocs are relative to the address of the last generated - instruction, i.e. fx_size - 4. */ - return SHMEDIA_MD_PCREL_FROM_FIX (fixP); - - case BFD_RELOC_64: - case BFD_RELOC_64_PCREL: - /* Fall through. */ - - default: - /* If section was SHcompact, use its function. */ - return (valueT) md_pcrel_from_section (fixP, sec); - } - - know (0 /* Shouldn't get here. */); - return 0; -} - -/* Create one .cranges descriptor from two symbols, STARTSYM marking begin - and ENDSYM marking end, and CR_TYPE specifying the type. */ - -static void -sh64_emit_crange (symbolS *startsym, symbolS *endsym, - enum sh64_elf_cr_type cr_type) -{ - expressionS exp; - segT current_seg = now_seg; - subsegT current_subseg = now_subseg; - - asection *cranges - = bfd_make_section_old_way (stdoutput, - SH64_CRANGES_SECTION_NAME); - - /* Temporarily change to the .cranges section. */ - subseg_set (cranges, 0); - - /* Emit the cr_addr part. */ - exp.X_op = O_symbol; - exp.X_add_number = 0; - exp.X_op_symbol = NULL; - exp.X_add_symbol = startsym; - emit_expr (&exp, 4); - - /* Emit the cr_size part. */ - exp.X_op = O_subtract; - exp.X_add_number = 0; - exp.X_add_symbol = endsym; - exp.X_op_symbol = startsym; - emit_expr (&exp, 4); - - /* Emit the cr_size part. */ - exp.X_op = O_constant; - exp.X_add_number = cr_type; - exp.X_add_symbol = NULL; - exp.X_op_symbol = NULL; - emit_expr (&exp, 2); - - /* Now back to our regular program. */ - subseg_set (current_seg, current_subseg); -} - -/* Called when the assembler is about to emit contents of some type into - SEG, so it is *known* that the type of that new contents is in - NEW_CONTENTS_TYPE. If just switching back and forth between different - contents types (for example, with consecutive .mode pseudos), then this - function isn't called. */ - -static void -sh64_set_contents_type (enum sh64_elf_cr_type new_contents_type) -{ - segment_info_type *seginfo; - - /* We will not be called when emitting .cranges output, since callers - stop that. Validize that assumption. */ - know (!emitting_crange); - - seginfo = seg_info (now_seg); - - if (seginfo) - { - symbolS *symp = seginfo->tc_segment_info_data.last_contents_mark; - - enum sh64_elf_cr_type contents_type - = seginfo->tc_segment_info_data.contents_type; - - /* If it was just SHcompact switching between code and constant - pool, don't change contents type. Just make sure we don't set - the contents type to data, as that would join with a data-region - in SHmedia mode. */ - if (sh64_isa_mode == sh64_isa_shcompact - && ! sh64_shcompact_const_crange) - new_contents_type = CRT_SH5_ISA16; - - /* If nothing changed, stop here. */ - if (contents_type == new_contents_type) - return; - - /* If we're in 64-bit ABI mode, we do not emit .cranges, as it is - only specified for 32-bit addresses. It could presumably be - extended, but in 64-bit ABI mode we don't have SHcompact code, so - we would only use it to mark code and data. */ - if (sh64_abi == sh64_abi_64) - { - /* Make the code type "sticky". We don't want to set the - sections contents type to data if there's any code in it as - we don't have .cranges in 64-bit mode to notice the - difference. */ - seginfo->tc_segment_info_data.contents_type - = (new_contents_type == CRT_SH5_ISA32 - || contents_type == CRT_SH5_ISA32) - ? CRT_SH5_ISA32 : new_contents_type; - return; - } - - /* If none was marked, create a start symbol for this range and - perhaps as a closing symbol for the old one. */ - if (symp == NULL) - symp = symbol_new (FAKE_LABEL_NAME, now_seg, (valueT) frag_now_fix (), - frag_now); - - /* We will use this symbol, so don't leave a pointer behind. */ - seginfo->tc_segment_info_data.last_contents_mark = NULL; - - /* We'll be making only datalabel references to it, if we emit a - .cranges descriptor, so remove any code flag. */ - S_SET_OTHER (symp, S_GET_OTHER (symp) & ~STO_SH5_ISA32); - - /* If we have already marked the start of a range, we need to close - and emit it before marking a new one, so emit a new .cranges - descriptor into the .cranges section. */ - if (seginfo->tc_segment_info_data.mode_start_symbol) - { - /* If we're not supposed to emit mixed-mode sections, make it an - error, but continue processing. */ - if (! sh64_mix - && (new_contents_type == CRT_SH5_ISA32 - || contents_type == CRT_SH5_ISA32)) - as_bad ( -_("SHmedia code not allowed in same section as constants and SHcompact code")); - - emitting_crange = TRUE; - sh64_emit_crange (seginfo->tc_segment_info_data.mode_start_symbol, - symp, contents_type); - emitting_crange = FALSE; - seginfo->tc_segment_info_data.emitted_ranges++; - } - - seginfo->tc_segment_info_data.mode_start_symbol = symp; - seginfo->tc_segment_info_data.mode_start_subseg = now_subseg; - seginfo->tc_segment_info_data.contents_type = new_contents_type; - - /* Always reset this, so the SHcompact code will emit a reloc when - it prepares to relax. */ - seginfo->tc_segment_info_data.in_code = 0; - } - else - as_bad (_("No segment info for current section")); -} - -/* Hook when defining symbols and labels. We set the ST_OTHER field if - the symbol is "shmedia" (with "bitor 1" automatically applied). Simple - semantics for a label being "shmedia" : It was defined when .mode - SHmedia was in effect, and it was defined in a code section. It - doesn't matter whether or not an assembled opcode is nearby. */ - -void -sh64_frob_label (symbolS *symp) -{ - segT seg = S_GET_SEGMENT (symp); - static const symbolS *null = NULL; - - /* Reset the tc marker for all newly created symbols. */ - symbol_set_tc (symp, (symbolS **) &null); - - if (seg != NULL && sh64_isa_mode == sh64_isa_shmedia && subseg_text_p (seg)) - S_SET_OTHER (symp, S_GET_OTHER (symp) | STO_SH5_ISA32); -} - -/* Handle the "datalabel" qualifier. We need to call "operand", but it's - static, so a function pointer is passed here instead. FIXME: A target - hook for qualifiers is needed; we currently use the md_parse_name - symbol hook. */ - -int -sh64_consume_datalabel (const char *name, expressionS *exp, - enum expr_mode mode, char *cp, - segT (*operandf) (expressionS *, enum expr_mode)) -{ - static int parsing_datalabel = 0; - - if (strcasecmp (name, "datalabel") == 0) - { - int save_parsing_datalabel = parsing_datalabel; - - if (parsing_datalabel) - as_bad (_("duplicate datalabel operator ignored")); - - *input_line_pointer = *cp; - parsing_datalabel = 1; - (*operandf) (exp, expr_normal); - parsing_datalabel = save_parsing_datalabel; - - if (exp->X_op == O_symbol || exp->X_op == O_PIC_reloc) - { - symbolS *symp = exp->X_add_symbol; - segT symseg = S_GET_SEGMENT (symp); - - /* If the symbol is defined to something that is already a - datalabel, we don't need to bother with any special handling. */ - if (symseg != undefined_section - && S_GET_OTHER (symp) != STO_SH5_ISA32) - /* Do nothing. */ - ; - else - { - symbolS *dl_symp; - const char * sname = S_GET_NAME (symp); - char *dl_name = concat (sname, DATALABEL_SUFFIX, (char *) NULL); - - /* Now we copy the datalabel-qualified symbol into a symbol - with the same name, but with " DL" appended. We mark the - symbol using the TC_SYMFIELD_TYPE field with a pointer to - the main symbol, so we don't have to inspect all symbol - names. Note that use of "datalabel" is not expected to - be a common case. */ - - /* A FAKE_LABEL_NAME marks "$" or ".". There can be any - number of them and all have the same (faked) name; we - must make a new one each time. */ - if (strcmp (sname, FAKE_LABEL_NAME) == 0) - dl_symp = symbol_make (dl_name); - else - dl_symp = symbol_find_or_make (dl_name); - - free (dl_name); - symbol_set_value_expression (dl_symp, - symbol_get_value_expression (symp)); - S_SET_SEGMENT (dl_symp, symseg); - symbol_set_frag (dl_symp, symbol_get_frag (symp)); - symbol_set_tc (dl_symp, &symp); - copy_symbol_attributes (dl_symp, symp); - exp->X_add_symbol = dl_symp; - - /* Unset the BranchTarget mark that can be set at symbol - creation or attributes copying. */ - S_SET_OTHER (dl_symp, S_GET_OTHER (dl_symp) & ~STO_SH5_ISA32); - - /* The GLOBAL and WEAK attributes are not copied over by - copy_symbol_attributes. Do it here. */ - if (S_IS_WEAK (symp)) - S_SET_WEAK (dl_symp); - else if (S_IS_EXTERNAL (symp)) - S_SET_EXTERNAL (dl_symp); - } - } - /* Complain about other types of operands than symbol, unless they - have already been complained about. A constant is always a - datalabel. Removing the low bit would therefore be wrong. - Complaining about it would also be wrong. */ - else if (exp->X_op != O_illegal - && exp->X_op != O_absent - && exp->X_op != O_constant) - as_bad (_("Invalid DataLabel expression")); - - *cp = *input_line_pointer; - - return 1; - } - - return sh_parse_name (name, exp, mode, cp); -} - -/* This function is called just before symbols are being output. It - returns zero when a symbol must be output, non-zero otherwise. - Datalabel references that were fully resolved to local symbols are not - necessary to output. We also do not want to output undefined symbols - that are not used in relocs. For symbols that are used in a reloc, it - does not matter what we set here. If it is *not* used in a reloc, then - it was probably the datalabel counterpart that was used in a reloc; - then we need not output the main symbol. */ - -int -sh64_exclude_symbol (symbolS *symp) -{ - symbolS *main_symbol = *symbol_get_tc (symp); - - return main_symbol != NULL || ! S_IS_DEFINED (symp); -} - -/* If we haven't seen an insn since the last update, and location - indicators have moved (a new frag, new location within frag) we have - emitted data, so change contents type to data. Forget that we have - seen a sequence of insns and store the current location so we can mark - a new region if needed. */ - -static void -sh64_update_contents_mark (bfd_boolean update_type) -{ - segment_info_type *seginfo; - seginfo = seg_info (now_seg); - - if (seginfo != NULL) - { - symbolS *symp = seginfo->tc_segment_info_data.last_contents_mark; - - if (symp == NULL) - { - symp = symbol_new (FAKE_LABEL_NAME, now_seg, - (valueT) frag_now_fix (), frag_now); - seginfo->tc_segment_info_data.last_contents_mark = symp; - } - else - { - /* If we have moved location since last flush, we need to emit a - data range. The previous contents type ended at the location - of the last update. */ - if ((S_GET_VALUE (symp) != frag_now_fix () - || symbol_get_frag (symp) != frag_now)) - { - enum sh64_elf_cr_type contents_type - = seginfo->tc_segment_info_data.contents_type; - - if (update_type - && contents_type != CRT_DATA - && contents_type != CRT_NONE - && ! seen_insn) - { - sh64_set_contents_type (CRT_DATA); - symp = seginfo->tc_segment_info_data.last_contents_mark; - } - - /* If the symbol wasn't used up to make up a new range - descriptor, update it to this new location. */ - if (symp) - { - S_SET_VALUE (symp, (valueT) frag_now_fix ()); - symbol_set_frag (symp, frag_now); - } - } - } - } - - seen_insn = FALSE; -} - -/* Called when the assembler is about to output some data, or maybe it's - just switching segments. */ - -void -sh64_flush_pending_output (void) -{ - sh64_update_contents_mark (TRUE); - sh_flush_pending_output (); -} - -/* Flush out the last crange descriptor after all insns have been emitted. */ - -static void -sh64_flush_last_crange (bfd *abfd ATTRIBUTE_UNUSED, asection *seg, - void *countparg ATTRIBUTE_UNUSED) -{ - segment_info_type *seginfo; - - seginfo = seg_info (seg); - - if (seginfo - /* Only emit .cranges descriptors if we would make it more than one. */ - && seginfo->tc_segment_info_data.emitted_ranges != 0) - { - symbolS *symp; - - /* We need a closing symbol, so switch to the indicated section and - emit it. */ - - /* Change to the section we're about to handle. */ - subseg_set (seg, seginfo->tc_segment_info_data.mode_start_subseg); - - symp = symbol_new (FAKE_LABEL_NAME, now_seg, (valueT) frag_now_fix (), - frag_now); - - /* We'll be making a datalabel reference to it, so remove any code - flag. */ - S_SET_OTHER (symp, S_GET_OTHER (symp) & ~STO_SH5_ISA32); - - sh64_emit_crange (seginfo->tc_segment_info_data.mode_start_symbol, - symp, - seginfo->tc_segment_info_data.contents_type); - } -} - -/* If and only if we see a call to md_number_to_chars without flagging the - start of an insn, we set the contents type to CRT_DATA, and only when - in SHmedia mode. Note that by default we don't bother changing when - going from SHcompact to data, as the constant pools in GCC-generated - SHcompact code would create an inordinate amount of .cranges - descriptors. */ - -static void -sh64_flag_output (void) -{ - if (sh64_isa_mode != sh64_isa_unspecified - && !seen_insn - && !sh64_end_of_assembly - && !emitting_crange) - { - md_flush_pending_output (); - sh64_set_contents_type (CRT_DATA); - } -} - -/* Vtables don't need "datalabel" but we allow it by simply deleting - any we find. */ - -static char * -strip_datalabels (void) -{ - char *src, *dest, *start=input_line_pointer; - - for (src=input_line_pointer, dest=input_line_pointer; *src != '\n'; ) - { - if (strncasecmp (src, "datalabel", 9) == 0 - && ISSPACE (src[9]) - && (src == start || !(ISALNUM (src[-1])) || src[-1] == '_')) - src += 10; - else - *dest++ = *src++; - } - - if (dest < src) - *dest = '\n'; - return src + 1; -} - -static void -sh64_vtable_entry (int ignore ATTRIBUTE_UNUSED) -{ - char *eol = strip_datalabels (); - - obj_elf_vtable_entry (0); - input_line_pointer = eol; -} - -static void -sh64_vtable_inherit (int ignore ATTRIBUTE_UNUSED) -{ - char *eol = strip_datalabels (); - - obj_elf_vtable_inherit (0); - input_line_pointer = eol; -} - -int -sh64_fake_label (const char *name) -{ - size_t len; - - if (strcmp (name, FAKE_LABEL_NAME) == 0) - return 1; - - len = strlen (name); - if (len >= (sizeof (DATALABEL_SUFFIX) - 1)) - return strcmp (&name [len - sizeof (DATALABEL_SUFFIX) + 1], - DATALABEL_SUFFIX) == 0; - - return 0; -} diff --git a/gas/config/tc-sh64.h b/gas/config/tc-sh64.h deleted file mode 100644 index 66b86f1..0000000 --- a/gas/config/tc-sh64.h +++ /dev/null @@ -1,226 +0,0 @@ -/* This file is tc-sh64.h - Copyright (C) 2000-2018 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - - GAS 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, or (at your option) - any later version. - - GAS 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 GAS; see the file COPYING. If not, write to - the Free Software Foundation, 51 Franklin Street - Fifth Floor, - Boston, MA 02110-1301, USA. */ - -#define TC_SH64 -#include "config/tc-sh.h" -#include "elf/sh.h" -#include "elf32-sh64.h" - -/* We need to override the tc-sh.h settings of HANDLE_ALIGN and - MAX_MEM_FOR_RS_ALIGN_CODE; we might need to put in SHmedia NOP:s, not - SHcompact NOP:s. */ -#undef HANDLE_ALIGN -#define HANDLE_ALIGN(frag) sh64_handle_align (frag) -extern void sh64_handle_align (fragS *); - -#undef MAX_MEM_FOR_RS_ALIGN_CODE -#define MAX_MEM_FOR_RS_ALIGN_CODE sh64_max_mem_for_rs_align_code () -extern int sh64_max_mem_for_rs_align_code (void); - -#undef LISTING_HEADER -#define LISTING_HEADER \ - (target_big_endian ? \ - "SuperH SHcompact/SHmedia Big Endian GAS" \ - : "SuperH SHcompact/SHmedia Little Endian GAS") - -/* We need to record the new frag position after an .align. */ -extern void sh64_do_align (int, const char *, int, int); -#define md_do_align(n, fill, len, max, l) \ - do { sh64_do_align (n, fill, len, max); goto l; } while (0) - -struct sh64_segment_info_type -{ - /* The type of the section is initialized when the range_start_symbol - member is non-NULL. */ - symbolS *mode_start_symbol; - subsegT mode_start_subseg; - - /* A stored symbol indicating location of last call of - "md_flush_pending_output". It is NULLed when we actually use it; - otherwise the contents is just filled in with segment, frag and - offset within frag. */ - symbolS *last_contents_mark; - - unsigned int emitted_ranges; - enum sh64_elf_cr_type contents_type; - - /* This is used by the SH1-4 parts; we set it to 0 for SHmedia code and - data. */ - unsigned int in_code : 1; -}; - -#undef TC_SEGMENT_INFO_TYPE -#define TC_SEGMENT_INFO_TYPE struct sh64_segment_info_type - -#undef TARGET_FORMAT -#define TARGET_FORMAT sh64_target_format () -extern const char *sh64_target_format (void); - -#define TARGET_MACH sh64_target_mach () -extern int sh64_target_mach (void); - -#undef TC_FORCE_RELOCATION_LOCAL -#define TC_FORCE_RELOCATION_LOCAL(FIX) \ - (GENERIC_FORCE_RELOCATION_LOCAL (FIX) \ - || (FIX)->fx_r_type == BFD_RELOC_32_PLT_PCREL \ - || (FIX)->fx_r_type == BFD_RELOC_SH_PLT_LOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_PLT_MEDLOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_PLT_MEDHI16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_PLT_HI16 \ - || (FIX)->fx_r_type == BFD_RELOC_32_GOT_PCREL \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOT_LOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOT_MEDLOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOT_MEDHI16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOT_HI16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOT10BY4 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOT10BY8 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT32 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT_LOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT_MEDLOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT_MEDHI16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT_HI16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT10BY4 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPLT10BY8 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPC \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPC_LOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPC_MEDLOW16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPC_MEDHI16 \ - || (FIX)->fx_r_type == BFD_RELOC_SH_GOTPC_HI16) - -#undef TC_FORCE_RELOCATION_SUB_SAME -#define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEC) \ - (GENERIC_FORCE_RELOCATION_SUB_SAME (FIX, SEC) \ - || TC_FORCE_RELOCATION (FIX) \ - || (sh_relax && SWITCH_TABLE (FIX)) \ - || *symbol_get_tc ((FIX)->fx_addsy) != NULL) - -/* Don't complain when we leave fx_subsy around. */ -#undef TC_VALIDATE_FIX_SUB -#define TC_VALIDATE_FIX_SUB(FIX, SEG) \ - ((md_register_arithmetic || (SEG) != reg_section) \ - && ((FIX)->fx_r_type == BFD_RELOC_32_PLT_PCREL \ - || (sh_relax && SWITCH_TABLE (FIX)) \ - || *symbol_get_tc ((FIX)->fx_addsy) != NULL)) - -/* Note the kludge: we want to put back C, and we also want to consume the - expression, since we have handled it ourselves. FIXME: What we really - need is a new GAS infrastructure feature: md_qualifier. */ -#undef md_parse_name -#define md_parse_name(NAME, EXP, MODE, CP) \ - sh64_consume_datalabel (NAME, EXP, MODE, CP, operand) -extern int sh64_consume_datalabel (const char *, expressionS *, - enum expr_mode, char *, - segT (*) (expressionS *, enum expr_mode)); - -/* Saying "$" is the same as saying ".". */ -#define DOLLAR_DOT - -#undef MD_PCREL_FROM_SECTION -#define MD_PCREL_FROM_SECTION(FIX, SEC) \ - shmedia_md_pcrel_from_section (FIX, SEC) - -extern valueT shmedia_md_pcrel_from_section (struct fix *, segT); - -/* We need to mark this symbol as a BranchTarget; setting st_other for it - and adding 1 to its value (temporarily). */ -extern void sh64_frob_label (symbolS *); - -#undef tc_frob_label -#define tc_frob_label(sym) \ - do { sh_frob_label (sym); sh64_frob_label (sym); } while (0) - -#define tc_symbol_new_hook(s) sh64_frob_label (s) - -/* We use this to mark our "datalabel" symbol copies. The "mark" is NULL - for an ordinary symbol, and the pointer to the "ordinary" symbol for a - datalabel symbol. */ -#define TC_SYMFIELD_TYPE symbolS * - -#define tc_frob_symbol(symp, punt) \ - do \ - { \ - punt = sh64_exclude_symbol (symp); \ - } \ - while (0) - -extern int sh64_exclude_symbol (symbolS *); - -extern void sh64_adjust_symtab (void); -#define tc_adjust_symtab sh64_adjust_symtab - -#undef md_flush_pending_output -#define md_flush_pending_output() sh64_flush_pending_output () -extern void sh64_flush_pending_output (void); - -/* Note that tc-sh.c has a sh_frob_section, but it's called from - tc_frob_file_before_adjust. */ -#define tc_frob_section(sec) shmedia_frob_section_type (sec) -extern void shmedia_frob_section_type (asection *); - -/* We need to emit fixups relative to the frag in which the instruction - resides. Safest way without calculating max fragment growth or making - it a fixed number is to provide a pointer to the opcode frag. - - We also need to emit the right NOP pattern in .align frags. This is - done after the text-to-bits assembly pass, so we need to mark it with - the ISA setting at the time the .align was assembled. */ -#define TC_FRAG_TYPE struct sh64_tc_frag_data - -enum sh64_isa_values - { - sh64_isa_unspecified, - sh64_isa_shcompact, - sh64_isa_shmedia, - - /* Special guard value used in contexts when we don't know which ISA it - is, just that it's specified (not sh64_isa_unspecified). */ - sh64_isa_sh5_guard - }; - -struct sh64_tc_frag_data -{ - fragS *opc_frag; - enum sh64_isa_values isa; -}; - -extern enum sh64_isa_values sh64_isa_mode; - -#define TC_FRAG_INIT(FRAGP) \ - do \ - { \ - (FRAGP)->tc_frag_data.opc_frag = sh64_last_insn_frag; \ - (FRAGP)->tc_frag_data.isa = sh64_isa_mode; \ - } \ - while (0) - -/* This variable is set whenever we generate (or grow) a new opcode frag - in shmedia_build_Mytes. */ -extern fragS *sh64_last_insn_frag; - -#define md_end() shmedia_md_end () -void shmedia_md_end (void); - -/* Because we make .debug_line hold the SHmedia instruction address | 1, - we have to say we only have minimum byte-size insns. */ -#undef DWARF2_LINE_MIN_INSN_LENGTH -#define DWARF2_LINE_MIN_INSN_LENGTH 1 - -#define TC_FAKE_LABEL(NAME) sh64_fake_label(NAME) -extern int sh64_fake_label (const char *); diff --git a/gas/configure.tgt b/gas/configure.tgt index c93f7b9..2992825 100644 --- a/gas/configure.tgt +++ b/gas/configure.tgt @@ -97,10 +97,6 @@ case ${cpu} in s390*) cpu_type=s390 arch=s390 ;; score*l) cpu_type=score endian=little ;; score*) cpu_type=score endian=big ;; - sh5le*) cpu_type=sh64 endian=little ;; - sh5*) cpu_type=sh64 endian=big ;; - sh64le*) cpu_type=sh64 endian=little ;; - sh64*) cpu_type=sh64 endian=big ;; sh*le) cpu_type=sh endian=little ;; sh*) cpu_type=sh endian=big ;; sparc64* | sparcv9*) cpu_type=sparc arch=v9-64 ;; @@ -407,8 +403,6 @@ case ${generic_target} in sh*eb) endian=big ;; *) endian=little ;; esac ;; - sh5*-*-netbsd*) fmt=elf em=nbsd ;; - sh64*-*-netbsd*) fmt=elf em=nbsd ;; sh*-*-netbsdelf*) fmt=elf em=nbsd case ${cpu} in sh*l*) endian=little ;; @@ -421,7 +415,6 @@ case ${generic_target} in sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; sh-*-kaos*) fmt=elf ;; shle*-*-kaos*) fmt=elf ;; - sh64-*-elf*) fmt=elf ;; sparc-*-sunos4*) fmt=aout em=sun3 ;; sparc-*-aout) fmt=aout em=sparcaout ;; diff --git a/gas/doc/Makefile.am b/gas/doc/Makefile.am index 79d646d..8089358 100644 --- a/gas/doc/Makefile.am +++ b/gas/doc/Makefile.am @@ -84,7 +84,6 @@ CPU_DOCS = \ c-s390.texi \ c-score.texi \ c-sh.texi \ - c-sh64.texi \ c-sparc.texi \ c-tic54x.texi \ c-tic6x.texi \ diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in index d4b0cf8..643df61 100644 --- a/gas/doc/Makefile.in +++ b/gas/doc/Makefile.in @@ -359,7 +359,6 @@ CPU_DOCS = \ c-s390.texi \ c-score.texi \ c-sh.texi \ - c-sh64.texi \ c-sparc.texi \ c-tic54x.texi \ c-tic6x.texi \ diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index 76ee990..e1ff851 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -7609,7 +7609,6 @@ subject, see the hardware manufacturer's manual. @end ifset @ifset SH * SH-Dependent:: Renesas / SuperH SH Dependent Features -* SH64-Dependent:: SuperH SH64 Dependent Features @end ifset @ifset SPARC * Sparc-Dependent:: SPARC Dependent Features @@ -7838,7 +7837,6 @@ family. @ifset SH @include c-sh.texi -@include c-sh64.texi @end ifset @ifset SPARC diff --git a/gas/doc/c-sh64.texi b/gas/doc/c-sh64.texi deleted file mode 100644 index 30737a6..0000000 --- a/gas/doc/c-sh64.texi +++ /dev/null @@ -1,219 +0,0 @@ -@c Copyright (C) 2002-2018 Free Software Foundation, Inc. -@c This is part of the GAS manual. -@c For copying conditions, see the file as.texinfo. -@page -@node SH64-Dependent -@chapter SuperH SH64 Dependent Features - -@cindex SH64 support -@menu -* SH64 Options:: Options -* SH64 Syntax:: Syntax -* SH64 Directives:: SH64 Machine Directives -* SH64 Opcodes:: Opcodes -@end menu - -@node SH64 Options -@section Options - -@cindex SH64 options -@cindex options, SH64 -@table @code - -@cindex SH64 ISA options -@cindex ISA options, SH64 -@item -isa=sh4 | sh4a -Specify the sh4 or sh4a instruction set. -@item -isa=dsp -Enable sh-dsp insns, and disable sh3e / sh4 insns. -@item -isa=fp -Enable sh2e, sh3e, sh4, and sh4a insn sets. -@item -isa=all -Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets. -@item -isa=shmedia | -isa=shcompact -Specify the default instruction set. @code{SHmedia} specifies the -32-bit opcodes, and @code{SHcompact} specifies the 16-bit opcodes -compatible with previous SH families. The default depends on the ABI -selected; the default for the 64-bit ABI is SHmedia, and the default for -the 32-bit ABI is SHcompact. If neither the ABI nor the ISA is -specified, the default is 32-bit SHcompact. - -Note that the @code{.mode} pseudo-op is not permitted if the ISA is not -specified on the command line. - -@cindex SH64 ABI options -@cindex ABI options, SH64 -@item -abi=32 | -abi=64 -Specify the default ABI. If the ISA is specified and the ABI is not, -the default ABI depends on the ISA, with SHmedia defaulting to 64-bit -and SHcompact defaulting to 32-bit. - -Note that the @code{.abi} pseudo-op is not permitted if the ABI is not -specified on the command line. When the ABI is specified on the command -line, any @code{.abi} pseudo-ops in the source must match it. - -@item -shcompact-const-crange -Emit code-range descriptors for constants in SHcompact code sections. - -@item -no-mix -Disallow SHmedia code in the same section as constants and SHcompact -code. - -@item -no-expand -Do not expand MOVI, PT, PTA or PTB instructions. - -@item -expand-pt32 -With -abi=64, expand PT, PTA and PTB instructions to 32 bits only. - -@item -h-tick-hex -Support H'00 style hex constants in addition to 0x00 style. - -@end table - -@node SH64 Syntax -@section Syntax - -@menu -* SH64-Chars:: Special Characters -* SH64-Regs:: Register Names -* SH64-Addressing:: Addressing Modes -@end menu - -@node SH64-Chars -@subsection Special Characters - -@cindex line comment character, SH64 -@cindex SH64 line comment character -@samp{!} is the line comment character. - -If a @samp{#} appears as the first character of a line then the whole -line is treated as a comment, but in this case the line could also be -a logical line number directive (@pxref{Comments}) or a preprocessor -control command (@pxref{Preprocessing}). - -@cindex line separator, SH64 -@cindex statement separator, SH64 -@cindex SH64 line separator -You can use @samp{;} instead of a newline to separate statements. - -@cindex symbol names, @samp{$} in -@cindex @code{$} in symbol names -Since @samp{$} has no special meaning, you may use it in symbol names. - -@node SH64-Regs -@subsection Register Names - -@cindex SH64 registers -@cindex registers, SH64 -You can use the predefined symbols @samp{r0} through @samp{r63} to refer -to the SH64 general registers, @samp{cr0} through @code{cr63} for -control registers, @samp{tr0} through @samp{tr7} for target address -registers, @samp{fr0} through @samp{fr63} for single-precision floating -point registers, @samp{dr0} through @samp{dr62} (even numbered registers -only) for double-precision floating point registers, @samp{fv0} through -@samp{fv60} (multiples of four only) for single-precision floating point -vectors, @samp{fp0} through @samp{fp62} (even numbered registers only) -for single-precision floating point pairs, @samp{mtrx0} through -@samp{mtrx48} (multiples of 16 only) for 4x4 matrices of -single-precision floating point registers, @samp{pc} for the program -counter, and @samp{fpscr} for the floating point status and control -register. - -You can also refer to the control registers by the mnemonics @samp{sr}, -@samp{ssr}, @samp{pssr}, @samp{intevt}, @samp{expevt}, @samp{pexpevt}, -@samp{tra}, @samp{spc}, @samp{pspc}, @samp{resvec}, @samp{vbr}, -@samp{tea}, @samp{dcr}, @samp{kcr0}, @samp{kcr1}, @samp{ctc}, and -@samp{usr}. - -@node SH64-Addressing -@subsection Addressing Modes - -@cindex addressing modes, SH64 -@cindex SH64 addressing modes - -SH64 operands consist of either a register or immediate value. The -immediate value can be a constant or label reference (or portion of a -label reference), as in this example: - -@example - movi 4,r2 - pt function, tr4 - movi (function >> 16) & 65535,r0 - shori function & 65535, r0 - ld.l r0,4,r0 -@end example - -@cindex datalabel, SH64 -Instruction label references can reference labels in either SHmedia or -SHcompact. To differentiate between the two, labels in SHmedia sections -will always have the least significant bit set (i.e. they will be odd), -which SHcompact labels will have the least significant bit reset -(i.e. they will be even). If you need to reference the actual address -of a label, you can use the @code{datalabel} modifier, as in this -example: - -@example - .long function - .long datalabel function -@end example - -In that example, the first longword may or may not have the least -significant bit set depending on whether the label is an SHmedia label -or an SHcompact label. The second longword will be the actual address -of the label, regardless of what type of label it is. - -@node SH64 Directives -@section SH64 Machine Directives - -In addition to the SH directives, the SH64 provides the following -directives: - -@cindex SH64 machine directives -@cindex machine directives, SH64 - -@table @code - -@item .mode [shmedia|shcompact] -@itemx .isa [shmedia|shcompact] -Specify the ISA for the following instructions (the two directives are -equivalent). Note that programs such as @code{objdump} rely on symbolic -labels to determine when such mode switches occur (by checking the least -significant bit of the label's address), so such mode/isa changes should -always be followed by a label (in practice, this is true anyway). Note -that you cannot use these directives if you didn't specify an ISA on the -command line. - -@item .abi [32|64] -Specify the ABI for the following instructions. Note that you cannot use -this directive unless you specified an ABI on the command line, and the -ABIs specified must match. - -@end table - -@node SH64 Opcodes -@section Opcodes - -@cindex SH64 opcode summary -@cindex opcode summary, SH64 -@cindex mnemonics, SH64 -@cindex instruction summary, SH64 -For detailed information on the SH64 machine instruction set, see -@cite{SuperH 64 bit RISC Series Architecture Manual} (SuperH, Inc.). - -@code{@value{AS}} implements all the standard SH64 opcodes. In -addition, the following pseudo-opcodes may be expanded into one or more -alternate opcodes: - -@table @code - -@item movi -If the value doesn't fit into a standard @code{movi} opcode, -@code{@value{AS}} will replace the @code{movi} with a sequence of -@code{movi} and @code{shori} opcodes. - -@item pt -This expands to a sequence of @code{movi} and @code{shori} opcode, -followed by a @code{ptrel} opcode, or to a @code{pta} or @code{ptb} -opcode, depending on the label referenced. - -@end table diff --git a/gas/po/POTFILES.in b/gas/po/POTFILES.in index a99a276..2290383 100644 --- a/gas/po/POTFILES.in +++ b/gas/po/POTFILES.in @@ -139,8 +139,6 @@ config/tc-score.c config/tc-score.h config/tc-sh.c config/tc-sh.h -config/tc-sh64.c -config/tc-sh64.h config/tc-sparc.c config/tc-sparc.h config/tc-spu.c diff --git a/gas/testsuite/gas/cfi/cfi.exp b/gas/testsuite/gas/cfi/cfi.exp index 588c5d5..b7f8c13 100644 --- a/gas/testsuite/gas/cfi/cfi.exp +++ b/gas/testsuite/gas/cfi/cfi.exp @@ -96,11 +96,7 @@ if { [istarget "i*86-*-*"] || [istarget "x86_64-*-*"] } then { if { [istarget "*-pe" ] || [istarget "*-rtemscoff*"] } then { return } - - if { [istarget sh64*-*-*] || [istarget sh5*-*-*] } then { - } else { - run_dump_test "cfi-sh-1" - } + run_dump_test "cfi-sh-1" } elseif { [istarget sparc*-*-*] } then { global NM diff --git a/gas/testsuite/gas/sh/basic.exp b/gas/testsuite/gas/sh/basic.exp index 9d3719d..7921cf5 100644 --- a/gas/testsuite/gas/sh/basic.exp +++ b/gas/testsuite/gas/sh/basic.exp @@ -23,12 +23,6 @@ if {[istarget "sh*-*-linux-*"] || [istarget "sh*l*-*-netbsdelf*"]} then { global ASFLAGS set ASFLAGS "$ASFLAGS -big" } -if {[istarget "sh64*-*-*"] || [istarget "sh5*-*-*"]} then { - global ASFLAGS - - set old_ASFLAGS $ASFLAGS - set ASFLAGS "$ASFLAGS --abi=32 --isa=SHcompact" -} proc do_fp {} { set testname "fp.s: floating point tests (sh3e)" @@ -132,7 +126,6 @@ if [istarget sh*-*-*] then { run_dump_test "pcrel-coff" } elseif {[istarget sh*-hms] } { run_dump_test "pcrel-hms" - } elseif {![istarget sh64*-*-*] && ![istarget sh5*-*-*] } { # Test DSP instructions run_dump_test "dsp" @@ -142,16 +135,14 @@ if [istarget sh*-*-*] then { } if {[istarget sh*-*elf] || [istarget sh*-*linux*]} then { - if {![istarget "sh64*-*-*"] && ![istarget "sh5*-*-*"]} then { - run_dump_test "sh4a" - run_dump_test "sh4a-fp" + run_dump_test "sh4a" + run_dump_test "sh4a-fp" - run_dump_test "sh4a-dsp" - run_dump_test "sh4al-dsp" + run_dump_test "sh4a-dsp" + run_dump_test "sh4al-dsp" - run_dump_test "sh2a" - run_dump_test "sh2a-pic" - } + run_dump_test "sh2a" + run_dump_test "sh2a-pic" run_dump_test "pic" run_dump_test "fdpic" diff --git a/gas/testsuite/gas/sh/sh64/abi-32.d b/gas/testsuite/gas/sh/sh64/abi-32.d deleted file mode 100644 index b1cf4d9..0000000 --- a/gas/testsuite/gas/sh/sh64/abi-32.d +++ /dev/null @@ -1,10 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#name: Assertion .abi 32. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - diff --git a/gas/testsuite/gas/sh/sh64/abi-32.s b/gas/testsuite/gas/sh/sh64/abi-32.s deleted file mode 100644 index 85d9807..0000000 --- a/gas/testsuite/gas/sh/sh64/abi-32.s +++ /dev/null @@ -1,7 +0,0 @@ -! Check successful .abi assertion for 32-bit ABI. - - .text - .abi 32 - .mode SHmedia -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/abi-64.d b/gas/testsuite/gas/sh/sh64/abi-64.d deleted file mode 100644 index 210e261..0000000 --- a/gas/testsuite/gas/sh/sh64/abi-64.d +++ /dev/null @@ -1,9 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#name: Assertion .abi 64. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/abi-64.s b/gas/testsuite/gas/sh/sh64/abi-64.s deleted file mode 100644 index 8daa31b..0000000 --- a/gas/testsuite/gas/sh/sh64/abi-64.s +++ /dev/null @@ -1,7 +0,0 @@ -! Check successful .abi assertion for 64-bit ABI. - - .text - .abi 64 - -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/basic-1.d b/gas/testsuite/gas/sh/sh64/basic-1.d deleted file mode 100644 index f534c99c..0000000 --- a/gas/testsuite/gas/sh/sh64/basic-1.d +++ /dev/null @@ -1,234 +0,0 @@ -#as: --isa=shmedia -#objdump: -dr -#name: Basic SHmedia instructions. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -[0]+ <start>: -[ ]+0:[ ]+003966b0[ ]+add r3,r25,r43 -[ ]+4:[ ]+00d80be0[ ]+add\.l r13,r2,r62 -[ ]+8:[ ]+d2c7d210[ ]+addi r44,500,r33 -[ ]+c:[ ]+d55832b0[ ]+addi\.l r21,-500,r43 -[ ]+10:[ ]+033ca9e0[ ]+addz\.l r51,r42,r30 -[ ]+14:[ ]+e1347bf0[ ]+alloco r19,960 -[ ]+18:[ ]+048be4c0[ ]+and r8,r57,r12 -[ ]+1c:[ ]+070f8d20[ ]+andc r48,r35,r18 -[ ]+20:[ ]+d987f660[ ]+andi r24,509,r38 -[ ]+24:[ ]+65719620[ ]+beq/l r23,r37,tr2 -[ ]+28:[ ]+65716e40[ ]+beq/l r23,r27,tr4 -[ ]+2c:[ ]+6431bc60[ ]+beq/u r3,r47,tr6 -[ ]+30:[ ]+e4417a50[ ]+beqi/l r4,30,tr5 -[ ]+34:[ ]+e4418600[ ]+beqi/l r4,-31,tr0 -[ ]+38:[ ]+e761a420[ ]+beqi/u r54,-23,tr2 -[ ]+3c:[ ]+6403fe70[ ]+bge/l r0,r63,tr7 -[ ]+40:[ ]+64a31a40[ ]+bge/l r10,r6,tr4 -[ ]+44:[ ]+64b39010[ ]+bge/u r11,r36,tr1 -[ ]+48:[ ]+65ebae30[ ]+bgeu/l r30,r43,tr3 -[ ]+4c:[ ]+64ab6a50[ ]+bgeu/l r10,r26,tr5 -[ ]+50:[ ]+673b9020[ ]+bgeu/u r51,r36,tr2 -[ ]+54:[ ]+6617b270[ ]+bgt/l r33,r44,tr7 -[ ]+58:[ ]+6517fa40[ ]+bgt/l r17,r62,tr4 -[ ]+5c:[ ]+64f71810[ ]+bgt/u r15,r6,tr1 -[ ]+60:[ ]+662f6e60[ ]+bgtu/l r34,r27,tr6 -[ ]+64:[ ]+65cffa00[ ]+bgtu/l r28,r62,tr0 -[ ]+68:[ ]+652f6450[ ]+bgtu/u r18,r25,tr5 -[ ]+6c:[ ]+4411fe60[ ]+blink tr1,r38 -[ ]+70:[ ]+67e5be00[ ]+bne/l r62,r47,tr0 -[ ]+74:[ ]+65d55a10[ ]+bne/l r29,r22,tr1 -[ ]+78:[ ]+6675bc60[ ]+bne/u r39,r47,tr6 -[ ]+7c:[ ]+e4e5ce70[ ]+bnei/l r14,-13,tr7 -[ ]+80:[ ]+e5857e30[ ]+bnei/l r24,31,tr3 -[ ]+84:[ ]+e765a820[ ]+bnei/u r54,-22,tr2 -[ ]+88:[ ]+6ff5fff0[ ]+brk -[ ]+8c:[ ]+015ffcc0[ ]+byterev r21,r12 -[ ]+90:[ ]+00a12d50[ ]+cmpeq r10,r11,r21 -[ ]+94:[ ]+01e37f30[ ]+cmpgt r30,r31,r51 -[ ]+98:[ ]+017786d0[ ]+cmpgtu r23,r33,r45 -[ ]+9c:[ ]+22010ec0[ ]+cmveq r32,r3,r44 -[ ]+a0:[ ]+20d5f040[ ]+cmvne r13,r60,r4 -[ ]+a4:[ ]+19615be0[ ]+fabs\.d dr22,dr62 -[ ]+a8:[ ]+1bb0ed90[ ]+fabs\.s fr59,fr25 -[ ]+ac:[ ]+3681f140[ ]+fadd\.d dr40,dr60,dr20 -[ ]+b0:[ ]+3690ed30[ ]+fadd\.s fr41,fr59,fr19 -[ ]+b4:[ ]+3049cb90[ ]+fcmpeq\.d dr4,dr50,r57 -[ ]+b8:[ ]+32f87910[ ]+fcmpeq\.s fr47,fr30,r17 -[ ]+bc:[ ]+32cfd140[ ]+fcmpge\.d dr44,dr52,r20 -[ ]+c0:[ ]+325e5e00[ ]+fcmpge\.s fr37,fr23,r32 -[ ]+c4:[ ]+314d7330[ ]+fcmpgt\.d dr20,dr28,r51 -[ ]+c8:[ ]+32fc5560[ ]+fcmpgt\.s fr47,fr21,r22 -[ ]+cc:[ ]+320beaf0[ ]+fcmpun\.d dr32,dr58,r47 -[ ]+d0:[ ]+315aa8c0[ ]+fcmpun\.s fr21,fr42,r12 -[ ]+d4:[ ]+3a87a150[ ]+fcnv\.ds dr40,fr21 -[ ]+d8:[ ]+3ab6ae00[ ]+fcnv\.sd fr43,dr32 -[ ]+dc:[ ]+3625e140[ ]+fdiv\.d dr34,dr56,dr20 -[ ]+e0:[ ]+34d46930[ ]+fdiv\.s fr13,fr26,fr19 -[ ]+e4:[ ]+1ff2fe70[ ]+fgetscr fr39 -[ ]+e8:[ ]+14062270[ ]+fipr\.s fv0,fv8,fr39 -[ ]+ec:[ ]+9df3eb00[ ]+fld\.d r31,2000,dr48 -[ ]+f0:[ ]+9b5a2660[ ]+fld\.p r53,-3000,fp38 -[ ]+f4:[ ]+9757f750[ ]+fld\.s r53,2036,fr53 -[ ]+f8:[ ]+1d79a820[ ]+fldx\.d r23,r42,dr2 -[ ]+fc:[ ]+1c2d5a00[ ]+fldx\.p r2,r22,fp32 -[ ]+100:[ ]+1db8e8c0[ ]+fldx\.s r27,r58,fr12 -[ ]+104:[ ]+385e15c0[ ]+float\.ld fr5,dr28 -[ ]+108:[ ]+3b7cde40[ ]+float\.ls fr55,fr36 -[ ]+10c:[ ]+3acdb100[ ]+float\.qd dr44,dr16 -[ ]+110:[ ]+39ef78b0[ ]+float\.qs dr30,fr11 -[ ]+114:[ ]+368e9440[ ]+fmac\.s fr40,fr37,fr4 -[ ]+118:[ ]+38812280[ ]+fmov\.d dr8,dr40 -[ ]+11c:[ ]+33a1ea20[ ]+fmov\.dq dr58,r34 -[ ]+120:[ ]+1d90ff40[ ]+fmov\.ls r25,fr52 -[ ]+124:[ ]+1ed1ff20[ ]+fmov\.qd r45,dr50 -[ ]+128:[ ]+38401370[ ]+fmov\.s fr4,fr55 -[ ]+12c:[ ]+30e038f0[ ]+fmov\.sl fr14,r15 -[ ]+130:[ ]+3587eaa0[ ]+fmul\.d dr24,dr58,dr42 -[ ]+134:[ ]+35b68220[ ]+fmul\.s fr27,fr32,fr34 -[ ]+138:[ ]+18230800[ ]+fneg\.d dr2,dr0 -[ ]+13c:[ ]+18020210[ ]+fneg\.s fr0,fr33 -[ ]+140:[ ]+32c2b3f0[ ]+fputscr fr44 -[ ]+144:[ ]+39e57ac0[ ]+fsqrt\.d dr30,dr44 -[ ]+148:[ ]+38340d70[ ]+fsqrt\.s fr3,fr23 -[ ]+14c:[ ]+bc37d020[ ]+fst\.d r3,4000,dr2 -[ ]+150:[ ]+bb682cc0[ ]+fst\.p r54,-4008,fp12 -[ ]+154:[ ]+b5282570[ ]+fst\.s r18,-2012,fr23 -[ ]+158:[ ]+3d29b8c0[ ]+fstx\.d r18,r46,dr12 -[ ]+15c:[ ]+3e6d6b40[ ]+fstx\.p r38,r26,fp52 -[ ]+160:[ ]+3c785da0[ ]+fstx\.s r7,r23,fr26 -[ ]+164:[ ]+3403b200[ ]+fsub\.d dr0,dr44,dr32 -[ ]+168:[ ]+3432f830[ ]+fsub\.s fr3,fr62,fr3 -[ ]+16c:[ ]+3a6b9b50[ ]+ftrc\.dl dr38,fr53 -[ ]+170:[ ]+3ba8eb10[ ]+ftrc\.sl fr58,fr49 -[ ]+174:[ ]+38e939a0[ ]+ftrc\.dq dr14,dr26 -[ ]+178:[ ]+3bcaf160[ ]+ftrc\.sq fr60,dr22 -[ ]+17c:[ ]+150e81c0[ ]+ftrv\.s mtrx16,fv32,fv28 -[ ]+180:[ ]+c05fd7e0[ ]+getcfg r5,-11,r62 -[ ]+184:[ ]+274ffd00[ ]+getcon cr52,r16 -[ ]+188:[ ]+4465fda0[ ]+gettr tr6,r26 -[ ]+18c:[ ]+e3058bf0[ ]+icbi r48,-960 -[ ]+190:[ ]+83200fe0[ ]+ld\.b r50,3,r62 -[ ]+194:[ ]+885da560[ ]+ld\.l r5,-604,r22 -[ ]+198:[ ]+8e3cdea0[ ]+ld\.q r35,-1608,r42 -[ ]+19c:[ ]+935cdc20[ ]+ld\.ub r53,-201,r2 -[ ]+1a0:[ ]+b17cdea0[ ]+ld\.uw r23,-402,r42 -[ ]+1a4:[ ]+86e25cb0[ ]+ld\.w r46,302,r11 -[ ]+1a8:[ ]+c0668a90[ ]+ldhi\.l r6,-30,r41 -[ ]+1ac:[ ]+c2477df0[ ]+ldhi\.q r36,31,r31 -[ ]+1b0:[ ]+c1325300[ ]+ldlo\.l r19,20,r48 -[ ]+1b4:[ ]+c09381d0[ ]+ldlo\.q r9,-32,r29 -[ ]+1b8:[ ]+40500ef0[ ]+ldx\.b r5,r3,r47 -[ ]+1bc:[ ]+4192ace0[ ]+ldx\.l r25,r43,r14 -[ ]+1c0:[ ]+40c3f290[ ]+ldx\.q r12,r60,r41 -[ ]+1c4:[ ]+40d40010[ ]+ldx\.ub r13,r0,r1 -[ ]+1c8:[ ]+40d50910[ ]+ldx\.uw r13,r2,r17 -[ ]+1cc:[ ]+40a15bc0[ ]+ldx\.w r10,r22,r60 -[ ]+1d0:[ ]+287afe10[ ]+mabs\.l r7,r33 -[ ]+1d4:[ ]+2a59fe20[ ]+mabs\.w r37,r34 -[ ]+1d8:[ ]+0a228070[ ]+madd\.l r34,r32,r7 -[ ]+1dc:[ ]+0971d510[ ]+madd\.w r23,r53,r17 -[ ]+1e0:[ ]+09865c90[ ]+madds\.l r24,r23,r9 -[ ]+1e4:[ ]+0a245f10[ ]+madds\.ub r34,r23,r49 -[ ]+1e8:[ ]+08450bb0[ ]+madds\.w r4,r2,r59 -[ ]+1ec:[ ]+2960e1f0[ ]+mcmpeq\.b r22,r56,r31 -[ ]+1f0:[ ]+2952b7d0[ ]+mcmpeq\.l r21,r45,r61 -[ ]+1f4:[ ]+2a01d810[ ]+mcmpeq\.w r32,r54,r1 -[ ]+1f8:[ ]+28361130[ ]+mcmpgt\.l r3,r4,r19 -[ ]+1fc:[ ]+2a24d8d0[ ]+mcmpgt\.ub r34,r54,r13 -[ ]+200:[ ]+29751430[ ]+mcmpgt\.w r23,r5,r3 -[ ]+204:[ ]+4be3c9e0[ ]+mcmv r62,r50,r30 -[ ]+208:[ ]+4c2d1400[ ]+mcnvs\.lw r2,r5,r0 -[ ]+20c:[ ]+4d581ca0[ ]+mcnvs\.wb r21,r7,r10 -[ ]+210:[ ]+4d7cbcd0[ ]+mcnvs\.wub r23,r47,r13 -[ ]+214:[ ]+2847a470[ ]+mextr1 r4,r41,r7 -[ ]+218:[ ]+2a0b12f0[ ]+mextr2 r32,r4,r47 -[ ]+21c:[ ]+299fb9b0[ ]+mextr3 r25,r46,r27 -[ ]+220:[ ]+2f431820[ ]+mextr4 r52,r6,r2 -[ ]+224:[ ]+2d574150[ ]+mextr5 r21,r16,r21 -[ ]+228:[ ]+2d8bfaa0[ ]+mextr6 r24,r62,r42 -[ ]+22c:[ ]+2f9fb970[ ]+mextr7 r57,r46,r23 -[ ]+230:[ ]+48511020[ ]+mmacfx\.wl r5,r4,r2 -[ ]+234:[ ]+48b5b160[ ]+mmacnfx\.wl r11,r44,r22 -[ ]+238:[ ]+4d6286c0[ ]+mmul\.l r22,r33,r44 -[ ]+23c:[ ]+4cc18ef0[ ]+mmul\.w r12,r35,r47 -[ ]+240:[ ]+4fd69700[ ]+mmulfx\.l r61,r37,r48 -[ ]+244:[ ]+4c151c50[ ]+mmulfx\.w r1,r7,r5 -[ ]+248:[ ]+4ca99720[ ]+mmulfxrp\.w r10,r37,r50 -[ ]+24c:[ ]+4c0e1f70[ ]+mmulhi\.wl r0,r7,r55 -[ ]+250:[ ]+4caa6e30[ ]+mmullo\.wl r10,r27,r35 -[ ]+254:[ ]+4a998250[ ]+mmulsum\.wq r41,r32,r37 -[ ]+258:[ ]+cffe16b0[ ]+movi -123,r43 -[ ]+25c:[ ]+2b9d8040[ ]+mperm\.w r57,r32,r4 -[ ]+260:[ ]+48505d40[ ]+msad\.ubq r5,r23,r20 -[ ]+264:[ ]+0e363140[ ]+mshalds\.l r35,r12,r20 -[ ]+268:[ ]+0eb5d1e0[ ]+mshalds\.w r43,r52,r30 -[ ]+26c:[ ]+0c4a5e80[ ]+mshard\.l r4,r23,r40 -[ ]+270:[ ]+0d89f8a0[ ]+mshard\.w r24,r62,r10 -[ ]+274:[ ]+0c2b4320[ ]+mshards\.q r2,r16,r50 -[ ]+278:[ ]+2ea41bc0[ ]+mshfhi\.b r42,r6,r60 -[ ]+27c:[ ]+2f464bb0[ ]+mshfhi\.l r52,r18,r59 -[ ]+280:[ ]+2c857ee0[ ]+mshfhi\.w r8,r31,r46 -[ ]+284:[ ]+2dc09e90[ ]+mshflo\.b r28,r39,r41 -[ ]+288:[ ]+2dd29ab0[ ]+mshflo\.l r29,r38,r43 -[ ]+28c:[ ]+2de196c0[ ]+mshflo\.w r30,r37,r44 -[ ]+290:[ ]+0df292e0[ ]+mshlld\.l r31,r36,r46 -[ ]+294:[ ]+0e018ef0[ ]+mshlld\.w r32,r35,r47 -[ ]+298:[ ]+0e1e8b10[ ]+mshlrd\.l r33,r34,r49 -[ ]+29c:[ ]+0e2d8720[ ]+mshlrd\.w r34,r33,r50 -[ ]+2a0:[ ]+0a3a8340[ ]+msub\.l r35,r32,r52 -[ ]+2a4:[ ]+0a497f50[ ]+msub\.w r36,r31,r53 -[ ]+2a8:[ ]+0a5e7b70[ ]+msubs\.l r37,r30,r55 -[ ]+2ac:[ ]+0a6c7780[ ]+msubs\.ub r38,r29,r56 -[ ]+2b0:[ ]+0a7d73a0[ ]+msubs\.w r39,r28,r58 -[ ]+2b4:[ ]+03dea5a0[ ]+mulu\.l r61,r41,r26 -[ ]+2b8:[ ]+6ff0fff0[ ]+nop -[ ]+2bc:[ ]+03cdfea0[ ]+nsb r60,r42 -[ ]+2c0:[ ]+e2b987f0[ ]+ocbi r43,-992 -[ ]+2c4:[ ]+e28883f0[ ]+ocbp r40,-1024 -[ ]+2c8:[ ]+e2cc7ff0[ ]+ocbwb r44,992 -[ ]+2cc:[ ]+07b90e80[ ]+or r59,r3,r40 -[ ]+2d0:[ ]+dfa4e680[ ]+ori r58,313,r40 -[ ]+2d4:[ ]+e391fff0[ ]+prefi r57,-32 -[ ]+2d8:[ ]+6bf1e260[ ]+ptabs/l r56,tr6 -[ ]+2dc:[ ]+6bf1fe60[ ]+ptabs/l r63,tr6 -[ ]+2e0:[ ]+6bf1f060[ ]+ptabs/u r60,tr6 -[ ]+2e4:[ ]+6bf5de30[ ]+ptrel/l r55,tr3 -[ ]+2e8:[ ]+6bf53e30[ ]+ptrel/l r15,tr3 -[ ]+2ec:[ ]+6bf5fc30[ ]+ptrel/u r63,tr3 -[ ]+2f0:[ ]+e29fd7e0[ ]+putcfg r41,-11,r62 -[ ]+2f4:[ ]+6e8ffde0[ ]+putcon r40,cr30 -[ ]+2f8:[ ]+6ff3fff0[ ]+rte -[ ]+2fc:[ ]+0727a930[ ]+shard r50,r42,r19 -[ ]+300:[ ]+0746a540[ ]+shard\.l r52,r41,r20 -[ ]+304:[ ]+c757a150[ ]+shari r53,40,r21 -[ ]+308:[ ]+c7769d60[ ]+shari\.l r55,39,r22 -[ ]+30c:[ ]+07819970[ ]+shlld r56,r38,r23 -[ ]+310:[ ]+07909580[ ]+shlld\.l r57,r37,r24 -[ ]+314:[ ]+c7c19190[ ]+shlli r60,36,r25 -[ ]+318:[ ]+c7d07da0[ ]+shlli\.l r61,31,r26 -[ ]+31c:[ ]+07f389b0[ ]+shlrd r63,r34,r27 -[ ]+320:[ ]+040285c0[ ]+shlrd\.l r0,r33,r28 -[ ]+324:[ ]+c42381d0[ ]+shlri r2,32,r29 -[ ]+328:[ ]+c4327de0[ ]+shlri\.l r3,31,r30 -[ ]+32c:[ ]+cbff70d0[ ]+shori 65500,r13 -[ ]+330:[ ]+6ff7fff0[ ]+sleep -[ ]+334:[ ]+a057d5d0[ ]+st\.b r5,501,r29 -[ ]+338:[ ]+a867cdf0[ ]+st\.l r6,1996,r31 -[ ]+33c:[ ]+ac77d600[ ]+st\.q r7,4008,r32 -[ ]+340:[ ]+a497d610[ ]+st\.w r9,1002,r33 -[ ]+344:[ ]+e0a6b2b0[ ]+sthi\.l r10,-20,r43 -[ ]+348:[ ]+e0c75ec0[ ]+sthi\.q r12,23,r44 -[ ]+34c:[ ]+e0d296d0[ ]+stlo\.l r13,-27,r45 -[ ]+350:[ ]+e0f356e0[ ]+stlo\.q r15,21,r46 -[ ]+354:[ ]+610076f0[ ]+stx\.b r16,r29,r47 -[ ]+358:[ ]+6112cb00[ ]+stx\.l r17,r50,r48 -[ ]+35c:[ ]+6133c710[ ]+stx\.q r19,r49,r49 -[ ]+360:[ ]+61413f20[ ]+stx\.w r20,r15,r50 -[ ]+364:[ ]+016b7730[ ]+sub r22,r29,r51 -[ ]+368:[ ]+017a7340[ ]+sub\.l r23,r28,r52 -[ ]+36c:[ ]+21936f50[ ]+swap\.q r25,r27,r53 -[ ]+370:[ ]+6ff2fff0[ ]+synci -[ ]+374:[ ]+6ff6fff0[ ]+synco -[ ]+378:[ ]+6da1fff0[ ]+trapa r26 -[ ]+37c:[ ]+05cd6b60[ ]+xor r28,r26,r54 -[ ]+380:[ ]+c5dd7f70[ ]+xori r29,31,r55 -[ ]+384:[ ]+047ed510[ ]+muls\.l r7,r53,r17 diff --git a/gas/testsuite/gas/sh/sh64/basic-1.s b/gas/testsuite/gas/sh/sh64/basic-1.s deleted file mode 100644 index 057667e..0000000 --- a/gas/testsuite/gas/sh/sh64/basic-1.s +++ /dev/null @@ -1,233 +0,0 @@ -! Various straightforward insn tests, one per insns basic insn format. -! No insns with strange relocs. The insns are from the alphabetical list -! in SH-5/ST50-023-04. - - .text -start: - add r3,r25,r43 - add.l r13,r2,r62 - addi r44,500,r33 - addi.l r21,-500,r43 - addz.l r51,r42,r30 - alloco r19,960 - and r8,r57,r12 - andc r48,r35,r18 - andi r24,509,r38 - beq r23,r37,tr2 - beq/l r23,r27,tr4 - beq/u r3,r47,tr6 - beqi r4,30,tr5 - beqi/l r4,-31,tr0 - beqi/u r54,-23,tr2 - bge r0,r63,tr7 - bge/l r10,r6,tr4 - bge/u r11,r36,tr1 - bgeu r30,r43,tr3 - bgeu/l r10,r26,tr5 - bgeu/u r51,r36,tr2 - bgt r33,r44,tr7 - bgt/l r17,r62,tr4 - bgt/u r15,r6,tr1 - bgtu r34,r27,tr6 - bgtu/l r28,r62,tr0 - bgtu/u r18,r25,tr5 - blink tr1,r38 - bne r62,r47,tr0 - bne/l r29,r22,tr1 - bne/u r39,r47,tr6 - bnei r14,-13,tr7 - bnei/l r24,31,tr3 - bnei/u r54,-22,tr2 - brk - byterev r21,r12 - cmpeq r10,r11,r21 - cmpgt r30,r31,r51 - cmpgtu r23,r33,r45 - cmveq r32,r3,r44 - cmvne r13,r60,r4 - fabs.d dr22,dr62 - fabs.s fr59,fr25 - fadd.d dr40,dr60,dr20 - fadd.s fr41,fr59,fr19 - fcmpeq.d dr4,dr50,r57 - fcmpeq.s fr47,fr30,r17 - fcmpge.d dr44,dr52,r20 - fcmpge.s fr37,fr23,r32 - fcmpgt.d dr20,dr28,r51 - fcmpgt.s fr47,fr21,r22 - fcmpun.d dr32,dr58,r47 - fcmpun.s fr21,fr42,r12 - fcnv.ds dr40,fr21 - fcnv.sd fr43,dr32 - fdiv.d dr34,dr56,dr20 - fdiv.s fr13,fr26,fr19 - fgetscr fr39 - fipr.s fv0,fv8,fr39 - fld.d r31,2000,dr48 - fld.p r53,-3000,fp38 - fld.s r53,2036,fr53 - fldx.d r23,r42,dr2 - fldx.p r2,r22,fp32 - fldx.s r27,r58,fr12 - float.ld fr5,dr28 - float.ls fr55,fr36 - float.qd dr44,dr16 - float.qs dr30,fr11 - fmac.s fr40,fr37,fr4 - fmov.d dr8,dr40 - fmov.dq dr58,r34 - fmov.ls r25,fr52 - fmov.qd r45,dr50 - fmov.s fr4,fr55 - fmov.sl fr14,r15 - fmul.d dr24,dr58,dr42 - fmul.s fr27,fr32,fr34 - fneg.d dr2,dr0 - fneg.s fr0,fr33 - fputscr fr44 - fsqrt.d dr30,dr44 - fsqrt.s fr3,fr23 - fst.d r3,4000,dr2 - fst.p r54,-4008,fp12 - fst.s r18,-2012,fr23 - fstx.d r18,r46,dr12 - fstx.p r38,r26,fp52 - fstx.s r7,r23,fr26 - fsub.d dr0,dr44,dr32 - fsub.s fr3,fr62,fr3 - ftrc.dl dr38,fr53 - ftrc.sl fr58,fr49 - ftrc.dq dr14,dr26 - ftrc.sq fr60,dr22 - ftrv.s mtrx16,fv32,fv28 - getcfg r5,-11,r62 - getcon cr52,r16 - gettr tr6,r26 - icbi r48,-960 - ld.b r50,3,r62 - ld.l r5,-604,r22 - ld.q r35,-1608,r42 - ld.ub r53,-201,r2 - ld.uw r23,-402,r42 - ld.w r46,302,r11 - ldhi.l r6,-30,r41 - ldhi.q r36,31,r31 - ldlo.l r19,20,r48 - ldlo.q r9,-32,r29 - ldx.b r5,r3,r47 - ldx.l r25,r43,r14 - ldx.q r12,r60,r41 - ldx.ub r13,r0,r1 - ldx.uw r13,r2,r17 - ldx.w r10,r22,r60 - mabs.l r7,r33 - mabs.w r37,r34 - madd.l r34,r32,r7 - madd.w r23,r53,r17 - madds.l r24,r23,r9 - madds.ub r34,r23,r49 - madds.w r4,r2,r59 - mcmpeq.b r22,r56,r31 - mcmpeq.l r21,r45,r61 - mcmpeq.w r32,r54,r1 - mcmpgt.l r3,r4,r19 - mcmpgt.ub r34,r54,r13 - mcmpgt.w r23,r5,r3 - mcmv r62,r50,r30 - mcnvs.lw r2,r5,r0 - mcnvs.wb r21,r7,r10 - mcnvs.wub r23,r47,r13 - mextr1 r4,r41,r7 - mextr2 r32,r4,r47 - mextr3 r25,r46,r27 - mextr4 r52,r6,r2 - mextr5 r21,r16,r21 - mextr6 r24,r62,r42 - mextr7 r57,r46,r23 - mmacfx.wl r5,r4,r2 - mmacnfx.wl r11,r44,r22 - mmul.l r22,r33,r44 - mmul.w r12,r35,r47 - mmulfx.l r61,r37,r48 - mmulfx.w r1,r7,r5 - mmulfxrp.w r10,r37,r50 - mmulhi.wl r0,r7,r55 - mmullo.wl r10,r27,r35 - mmulsum.wq r41,r32,r37 - movi -123,r43 - mperm.w r57,r32,r4 - msad.ubq r5,r23,r20 - mshalds.l r35,r12,r20 - mshalds.w r43,r52,r30 - mshard.l r4,r23,r40 - mshard.w r24,r62,r10 - mshards.q r2,r16,r50 - mshfhi.b r42,r6,r60 - mshfhi.l r52,r18,r59 - mshfhi.w r8,r31,r46 - mshflo.b r28,r39,r41 - mshflo.l r29,r38,r43 - mshflo.w r30,r37,r44 - mshlld.l r31,r36,r46 - mshlld.w r32,r35,r47 - mshlrd.l r33,r34,r49 - mshlrd.w r34,r33,r50 - msub.l r35,r32,r52 - msub.w r36,r31,r53 - msubs.l r37,r30,r55 - msubs.ub r38,r29,r56 - msubs.w r39,r28,r58 - mulu.l r61,r41,r26 - nop - nsb r60,r42 - ocbi r43,-992 - ocbp r40,-1024 - ocbwb r44,992 - or r59,r3,r40 - ori r58,313,r40 - prefi r57,-32 -! Note: pta, ptb are not here. - ptabs r56,tr6 - ptabs/l r63,tr6 - ptabs/u r60,tr6 - ptrel r55,tr3 - ptrel/l r15,tr3 - ptrel/u r63,tr3 - putcfg r41,-11,r62 - putcon r40,cr30 - rte - shard r50,r42,r19 - shard.l r52,r41,r20 - shari r53,40,r21 - shari.l r55,39,r22 - shlld r56,r38,r23 - shlld.l r57,r37,r24 - shlli r60,36,r25 - shlli.l r61,31,r26 - shlrd r63,r34,r27 - shlrd.l r0,r33,r28 - shlri r2,32,r29 - shlri.l r3,31,r30 - shori 65500,r13 - sleep - st.b r5,501,r29 - st.l r6,1996,r31 - st.q r7,4008,r32 - st.w r9,1002,r33 - sthi.l r10,-20,r43 - sthi.q r12,23,r44 - stlo.l r13,-27,r45 - stlo.q r15,21,r46 - stx.b r16,r29,r47 - stx.l r17,r50,r48 - stx.q r19,r49,r49 - stx.w r20,r15,r50 - sub r22,r29,r51 - sub.l r23,r28,r52 - swap.q r25,r27,r53 - synci - synco - trapa r26 - xor r28,r26,r54 - xori r29,31,r55 - muls.l r7,r53,r17 diff --git a/gas/testsuite/gas/sh/sh64/case-1.d b/gas/testsuite/gas/sh/sh64/case-1.d deleted file mode 100644 index 8d1d009..0000000 --- a/gas/testsuite/gas/sh/sh64/case-1.d +++ /dev/null @@ -1,23 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#name: Case-insensitive registers and opcodes. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop -[ ]+4:[ ]+6ff0fff0[ ]+nop -[ ]+8:[ ]+cc000190[ ]+movi 0,r25 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16_PCREL foo-0x8 -[ ]+c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+c:[ ]+R_SH_IMM_LOW16_PCREL foo-0x4 -[ ]+10:[ ]+6bf56440[ ]+ptrel/u r25,tr4 -[ ]+14:[ ]+cc000190[ ]+movi 0,r25 -[ ]+14:[ ]+R_SH_IMM_MEDLOW16_PCREL bar-0x8 -[ ]+18:[ ]+c8000190[ ]+shori 0,r25 -[ ]+18:[ ]+R_SH_IMM_LOW16_PCREL bar-0x4 -[ ]+1c:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+20:[ ]+cc00a820[ ]+movi 42,r2 -[ ]+24:[ ]+ebffde20[ ]+pta/l 0 <start>,tr2 diff --git a/gas/testsuite/gas/sh/sh64/case-1.s b/gas/testsuite/gas/sh/sh64/case-1.s deleted file mode 100644 index b9757bc..0000000 --- a/gas/testsuite/gas/sh/sh64/case-1.s +++ /dev/null @@ -1,12 +0,0 @@ -! Tests that opcodes and common registers are recognized case-insensitive, -! and also that the option --isa=shmedia is optional. - - .mode SHmedia - .text -start: - nOp - NOP - pt/U foo,tr4 - PTA/l bar,Tr3 - MOVI 42,R2 - PTA/L start,TR2 diff --git a/gas/testsuite/gas/sh/sh64/case-noexp-1.d b/gas/testsuite/gas/sh/sh64/case-noexp-1.d deleted file mode 100644 index 589dd9d..0000000 --- a/gas/testsuite/gas/sh/sh64/case-noexp-1.d +++ /dev/null @@ -1,18 +0,0 @@ -#as: --abi=32 -no-expand -#objdump: -dr -#source: case-1.s -#name: Case-insensitive registers and opcodes with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop -[ ]+4:[ ]+6ff0fff0[ ]+nop -[ ]+8:[ ]+e8000040[ ]+pta/u 8 <start\+0x8>,tr4 -[ ]+8:[ ]+R_SH_PT_16 foo -[ ]+c:[ ]+e8000630[ ]+pta/l 10 <start\+0x10>,tr3 -[ ]+c:[ ]+R_SH_PT_16 bar -[ ]+10:[ ]+cc00a820[ ]+movi 42,r2 -[ ]+14:[ ]+ebffee20[ ]+pta/l 0 <start>,tr2 diff --git a/gas/testsuite/gas/sh/sh64/crange1-1.d b/gas/testsuite/gas/sh/sh64/crange1-1.d deleted file mode 100644 index 3e97b9a..0000000 --- a/gas/testsuite/gas/sh/sh64/crange1-1.d +++ /dev/null @@ -1,104 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: crange1.s -#name: .cranges descriptors. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.cranges\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 \.text\.shmediaanddata -0+0a R_SH_DIR32 \.text\.codemix -0+14 R_SH_DIR32 \.text\.codemixconst -0+1e R_SH_DIR32 \.text\.codemixconst -0+28 R_SH_DIR32 \.text\.codemixconst2 -0+32 R_SH_DIR32 \.text\.codemixconst2 -0+3c R_SH_DIR32 \.text\.codemixconst2 -0+46 R_SH_DIR32 \.text\.codemixconst2 -0+50 R_SH_DIR32 \.text\.codemixconst2 -0+5a R_SH_DIR32 \.text\.shmediaanddata -0+64 R_SH_DIR32 \.text\.codemix -0+6e R_SH_DIR32 \.text\.codemixconst -0+78 R_SH_DIR32 \.text\.codemixconst2 - - -Contents of section \.text: - 0000 6ff0fff0 cc00aad0 cc0022e0 6ff0fff0 .* -Contents of section \.text\.compact: - 0000 0009e02a 89000009 0009 .* -Contents of section \.text\.shmediaanddata: - 0000 cc00aad0 cc0022e0 6ff0fff0 00000014 .* - 0010 00000032 .* -Contents of section \.cranges: - 0000 00000000 00000008 00030000 00000000 .* - 0010 00180003 00000000 0000001c 00030000 .* - 0020 001c0000 00200001 00000000 00000024 .* - 0030 00030000 00240000 00280001 0000004c .* - 0040 000000e8 00020000 01340000 002c0003 .* - 0050 00000160 0000001c 00010000 00080000 .* - 0060 000c0001 00000018 0000000e 00020000 .* - 0070 003c0000 00800002 0000017c 00000154 .* - 0080 0002 .* -Contents of section \.text\.codemix: - 0000 cc00aad0 6ff0fff0 6ff0fff0 cc0062e0 .* - 0010 6ff0fff0 6ff0fff0 0009e028 00090009 .* - 0020 89000009 0009 .* -Contents of section \.text\.codemixconst: - 0000 6ff0fff0 cc00aad0 6ff0fff0 6ff0fff0 .* - 0010 cc00e2e0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff00000 0000fff0 6ff0fff0 .* - 0030 6ff0fff0 00000000 000000b3 0009e02b .* - 0040 00090009 89020009 00090009 00090000 .* - 0050 00000000 00000000 00000000 00000000 .* - 0060 00000000 00000000 00000000 00000000 .* - 0070 00000000 00000000 00000000 00000000 .* - 0080 00000000 00000000 00000000 00000000 .* - 0090 00000000 00000000 00000000 00000000 .* - 00a0 00000000 00000000 00000000 00000000 .* - 00b0 00000000 00000000 0000007e .* -Contents of section \.text\.codemixconst2: - 0000 6ff0fff0 cc00aad0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 cc0122e0 6ff0fff0 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 00000000 00000044 0009e02c .* - 0050 00090009 89040009 00090009 00090009 .* - 0060 00090009 09000000 00000000 00000000 .* - 0070 00000000 00000000 00000000 00000000 .* - 0080 00000000 00000000 00000000 00000000 .* - 0090 00000000 00000000 00000000 00000000 .* - 00a0 00000000 00000000 00000000 00000000 .* - 00b0 00000000 00000000 00000000 00000000 .* - 00c0 00000000 00000000 00000000 00000000 .* - 00d0 00000000 00000000 00000000 00000000 .* - 00e0 00000000 00000000 00000000 00000000 .* - 00f0 00000000 00000000 00000000 00000000 .* - 0100 00000000 00000000 00000000 00000000 .* - 0110 00000000 00000000 00000000 00000000 .* - 0120 00000000 00000000 00000000 00000000 .* - 0130 000000e6 6ff0fff0 cc00aed0 6ff0fff0 .* - 0140 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0150 6ff0fff0 6ff0fff0 6ff0fff0 cc0112e0 .* - 0160 6ff0fff0 00000000 00000000 00000000 .* - 0170 00000000 00000000 00000044 0009e00e .* - 0180 00090009 890a0009 00090009 00090009 .* - 0190 00090009 00090009 00090009 00090000 .* - 01a0 00000000 00000000 00000000 00000000 .* - 01b0 00000000 00000000 00000000 00000000 .* - 01c0 00000000 00000000 00000000 00000000 .* - 01d0 00000000 00000000 00000000 00000000 .* - 01e0 00000000 00000000 00000000 00000000 .* - 01f0 00000000 00000000 00000000 00000000 .* - 0200 00000000 00000000 00000000 00000000 .* - 0210 00000000 00000000 00000000 00000000 .* - 0220 00000000 00000000 00000000 00000000 .* - 0230 00000000 00000000 00000000 00000000 .* - 0240 00000000 00000000 00000000 00000000 .* - 0250 00000000 00000000 00000000 00000000 .* - 0260 00000000 00000000 00000000 00000000 .* - 0270 00000000 00000000 00000000 00000000 .* - 0280 00000000 00000000 00000000 00000000 .* - 0290 00000000 00000000 00000000 00000000 .* - 02a0 00000000 00000000 00000000 00000000 .* - 02b0 00000000 00000000 00000000 00000000 .* - 02c0 00000000 00000000 00000000 00000152 .* diff --git a/gas/testsuite/gas/sh/sh64/crange1-2.d b/gas/testsuite/gas/sh/sh64/crange1-2.d deleted file mode 100644 index 1bd8321..0000000 --- a/gas/testsuite/gas/sh/sh64/crange1-2.d +++ /dev/null @@ -1,108 +0,0 @@ -#as: --abi=32 --isa=SHcompact -shcompact-const-crange -#objdump: -sr -#source: crange1.s -#name: .cranges descriptors including SHcompact constant pool - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.cranges\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 \.text\.shmediaanddata -0+0a R_SH_DIR32 \.text\.codemix -0+14 R_SH_DIR32 \.text\.codemixconst -0+1e R_SH_DIR32 \.text\.codemixconst -0+28 R_SH_DIR32 \.text\.codemixconst -0+32 R_SH_DIR32 \.text\.codemixconst2 -0+3c R_SH_DIR32 \.text\.codemixconst2 -0+46 R_SH_DIR32 \.text\.codemixconst2 -0+50 R_SH_DIR32 \.text\.codemixconst2 -0+5a R_SH_DIR32 \.text\.codemixconst2 -0+64 R_SH_DIR32 \.text\.codemixconst2 -0+6e R_SH_DIR32 \.text\.codemixconst2 -0+78 R_SH_DIR32 \.text\.shmediaanddata -0+82 R_SH_DIR32 \.text\.codemix -0+8c R_SH_DIR32 \.text\.codemixconst -0+96 R_SH_DIR32 \.text\.codemixconst2 - - -Contents of section \.text: - 0000 6ff0fff0 cc00aad0 cc0022e0 6ff0fff0 .* -Contents of section \.text\.compact: - 0000 0009e02a 89000009 0009 .* -Contents of section \.text\.shmediaanddata: - 0000 cc00aad0 cc0022e0 6ff0fff0 00000014 .* - 0010 00000032 .* -Contents of section \.cranges: - 0000 00000000 00000008 00030000 00000000 .* - 0010 00180003 00000000 0000001c 00030000 .* - 0020 001c0000 00200001 0000003c 00000012 .* - 0030 00020000 00000000 00240003 00000024 .* - 0040 00000028 00010000 004c0000 00160002 .* - 0050 00000062 000000d2 00010000 01340000 .* - 0060 002c0003 00000160 0000001c 00010000 .* - 0070 017c0000 00220002 00000008 0000000c .* - 0080 00010000 00180000 000e0002 0000004e .* - 0090 0000006e 00010000 019e0000 01320001 .* -Contents of section \.text\.codemix: - 0000 cc00aad0 6ff0fff0 6ff0fff0 cc0062e0 .* - 0010 6ff0fff0 6ff0fff0 0009e028 00090009 .* - 0020 89000009 0009 .* -Contents of section \.text\.codemixconst: - 0000 6ff0fff0 cc00aad0 6ff0fff0 6ff0fff0 .* - 0010 cc00e2e0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff00000 0000fff0 6ff0fff0 .* - 0030 6ff0fff0 00000000 000000b3 0009e02b .* - 0040 00090009 89020009 00090009 00090000 .* - 0050 00000000 00000000 00000000 00000000 .* - 0060 00000000 00000000 00000000 00000000 .* - 0070 00000000 00000000 00000000 00000000 .* - 0080 00000000 00000000 00000000 00000000 .* - 0090 00000000 00000000 00000000 00000000 .* - 00a0 00000000 00000000 00000000 00000000 .* - 00b0 00000000 00000000 0000007e .* -Contents of section \.text\.codemixconst2: - 0000 6ff0fff0 cc00aad0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 cc0122e0 6ff0fff0 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 00000000 00000044 0009e02c .* - 0050 00090009 89040009 00090009 00090009 .* - 0060 00090009 09000000 00000000 00000000 .* - 0070 00000000 00000000 00000000 00000000 .* - 0080 00000000 00000000 00000000 00000000 .* - 0090 00000000 00000000 00000000 00000000 .* - 00a0 00000000 00000000 00000000 00000000 .* - 00b0 00000000 00000000 00000000 00000000 .* - 00c0 00000000 00000000 00000000 00000000 .* - 00d0 00000000 00000000 00000000 00000000 .* - 00e0 00000000 00000000 00000000 00000000 .* - 00f0 00000000 00000000 00000000 00000000 .* - 0100 00000000 00000000 00000000 00000000 .* - 0110 00000000 00000000 00000000 00000000 .* - 0120 00000000 00000000 00000000 00000000 .* - 0130 000000e6 6ff0fff0 cc00aed0 6ff0fff0 .* - 0140 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0150 6ff0fff0 6ff0fff0 6ff0fff0 cc0112e0 .* - 0160 6ff0fff0 00000000 00000000 00000000 .* - 0170 00000000 00000000 00000044 0009e00e .* - 0180 00090009 890a0009 00090009 00090009 .* - 0190 00090009 00090009 00090009 00090000 .* - 01a0 00000000 00000000 00000000 00000000 .* - 01b0 00000000 00000000 00000000 00000000 .* - 01c0 00000000 00000000 00000000 00000000 .* - 01d0 00000000 00000000 00000000 00000000 .* - 01e0 00000000 00000000 00000000 00000000 .* - 01f0 00000000 00000000 00000000 00000000 .* - 0200 00000000 00000000 00000000 00000000 .* - 0210 00000000 00000000 00000000 00000000 .* - 0220 00000000 00000000 00000000 00000000 .* - 0230 00000000 00000000 00000000 00000000 .* - 0240 00000000 00000000 00000000 00000000 .* - 0250 00000000 00000000 00000000 00000000 .* - 0260 00000000 00000000 00000000 00000000 .* - 0270 00000000 00000000 00000000 00000000 .* - 0280 00000000 00000000 00000000 00000000 .* - 0290 00000000 00000000 00000000 00000000 .* - 02a0 00000000 00000000 00000000 00000000 .* - 02b0 00000000 00000000 00000000 00000000 .* - 02c0 00000000 00000000 00000000 00000152 .* diff --git a/gas/testsuite/gas/sh/sh64/crange1.s b/gas/testsuite/gas/sh/sh64/crange1.s deleted file mode 100644 index bbd4012..0000000 --- a/gas/testsuite/gas/sh/sh64/crange1.s +++ /dev/null @@ -1,210 +0,0 @@ -! Test that .cranges are emitted: -! 1) Not for sections with single contents. -! 2) For data (through pseudo-ops) in SHmedia. -! 3) For mixed SHcompact and SHmedia sections. -! 4) For a mix of 2 and 3 -! 5) For 4, repeated. -! -! Use section contents that need relaxing to strengthen the check that the -! .cranges implementation handles this correctly. Use different sizes for -! each contents part. -! - -! The .text section has only SHmedia contents, and should not get a -! .cranges descriptor. - .mode SHmedia - .text - nop -shmedia: - movi 42,r45 - movi shmediaend-shmedia,r46 -shmediaend: - nop - -! Likewise the SHcompact section. - .mode SHcompact - .section .text.compact,"ax" - nop -shcompact: - mov #42,r0 - bt shcompactend - nop -shcompactend: - nop - -! This section has SHmedia code followed by data. There should be two -! .cranges descriptors. Note that we put the .mode directive *after* the -! section change. It should not matter. - .section .text.shmediaanddata,"ax" - .mode SHmedia -shmedia_data_code: - movi 42,r45 - movi shmedia_data_code_end-shmedia_data_code,r46 -shmedia_data_code_end: - .long 0x6ff0fff0 - .long shmedia_dataend-shmedia_data_code - .long 50 -shmedia_dataend: - -! This section mixes SHcompact and SHmedia code. There should be two -! .cranges descriptors. - .section .text.codemix,"ax" -shmedia_compact_code: - movi 42,r45 - nop - nop - movi shmedia_compact_code_end-shmedia_compact_code,r46 - nop - nop -shmedia_compact_code_end: - .mode SHcompact -compact_code: - nop -compact: - mov #40,r0 - nop - nop - bt compactend - nop -compactend: - nop - -! This section mixes SHcompact and SHmedia code, and has a constant -! section after the SHmedia code and one after the SHcompact code. There -! should be three or four .cranges descriptors, depending on whether one -! is emitted for the SHcompact constant pool: there's normally one such -! after each SHcompact function. - .mode SHmedia - .section .text.codemixconst,"ax" - nop -shmedia_compact_code2: - movi 42,r45 - nop - nop - movi shmedia_compact_code_end2-shmedia_compact_code2,r46 - nop - nop - .long 0x6ff0fff0 - .long 0x6ff0fff0 - .long 0x6ff00000 - .long 0xfff0 - .long 0x6ff0fff0 - .long 0x6ff0fff0 - .long 0 -mediapoollabel: - .long mediapoollabel2-shmedia_compact_code2 -mediapoolend: -shmedia_compact_code_end2: - .mode SHcompact -compact_code2: - nop -compact2: - mov #43,r0 - nop - nop - bt compactend2 - nop - nop - nop -compactend2: - nop - .space 102,0 - .long 0 -mediapoollabel2: - .long mediapoolend2-compact2 -mediapoolend2: - -! This section is like the previous, but repeated twice and adjusted to -! keep different sizes of each part. - .mode SHmedia - .section .text.codemixconst2,"ax" - nop -shmedia_compact_code3: - movi 42,r45 - nop - nop - nop - nop - nop - nop - movi shmedia_compact_code_end3-shmedia_compact_code3,r46 - .long 0x6ff0fff0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 - .long 0 -mediapoollabel3a: - .long mediapoollabel3a-shmedia_compact_code3 -mediapoolend3a: -shmedia_compact_code_end3: - .mode SHcompact -compact_code3: - nop -compact3: - mov #44,r0 - nop - nop - bt compactend3 - nop - nop - nop - nop - nop -compactend3: - nop - .word 9 - .word 0x900 - .space 198,0 - .long 0 -mediapoollabel3: - .long mediapoolend3-compact3 -mediapoolend3: - .mode SHmedia - nop -shmedia_compact_code4: - movi 43,r45 - nop - nop - nop - nop - nop - nop - nop - nop - movi shmedia_compact_code_end4-shmedia_compact_code4,r46 - .long 0x6ff0fff0 - .space 20,0 -mediapoollabel4a: - .long mediapoolend4a-shmedia_compact_code4 -mediapoolend4a: -shmedia_compact_code_end4: - .mode SHcompact -compact_code4: - nop -compact4: - mov #14,r0 - nop - nop - bt compactend4 - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop - nop -compactend4: - nop - .space 298,0 - .long 0 -mediapoollabel4: - .long mediapoolend4-compact4 -mediapoolend4: diff --git a/gas/testsuite/gas/sh/sh64/crange2-1.d b/gas/testsuite/gas/sh/sh64/crange2-1.d deleted file mode 100644 index c60d7e0..0000000 --- a/gas/testsuite/gas/sh/sh64/crange2-1.d +++ /dev/null @@ -1,43 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#source: crange2.s -#name: PT to SHcompact - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <shmedia>: -[ ]+0:[ ]+e8000a30[ ]+pta/l 8 <shmedia1>,tr3 -[ ]+4:[ ]+ec001240[ ]+ptb/l 14 <shcompact1>,tr4 - -0+8 <shmedia1>: -[ ]+8:[ ]+ec001250[ ]+ptb/l 18 <shcompact2>,tr5 - -0+c <shmedia2>: -[ ]+c:[ ]+6ff0fff0[ ]+nop - -0+10[ ]+<shcompact>: -[ ]+10:[ ]+00[ ]+09[ ]+nop -[ ]+12:[ ]+00[ ]+09[ ]+nop - -0+14 <shcompact1>: -[ ]+14:[ ]+00[ ]+09[ ]+nop -[ ]+16:[ ]+00[ ]+09[ ]+nop - -0+18 <shcompact2>: -[ ]+18:[ ]+00[ ]+09[ ]+nop -[ ]+1a:[ ]+00[ ]+09[ ]+nop - -0+1c <shcompact3>: -[ ]+1c:[ ]+00[ ]+09[ ]+nop -[ ]+1e:[ ]+00[ ]+09[ ]+nop - -0+20[ ]+<shcompact4>: -[ ]+20:[ ]+00[ ]+09[ ]+nop -[ ]+22:[ ]+00[ ]+09[ ]+nop - -0+24 <shmedia3>: -[ ]+24:[ ]+effffa60[ ]+ptb/l 1c <shcompact3>,tr6 -[ ]+28:[ ]+effffa70[ ]+ptb/l 20[ ]+<shcompact4>,tr7 -[ ]+2c:[ ]+ebffe200[ ]+pta/l c <shmedia2>,tr0 diff --git a/gas/testsuite/gas/sh/sh64/crange2-2.d b/gas/testsuite/gas/sh/sh64/crange2-2.d deleted file mode 100644 index 89fc49c..0000000 --- a/gas/testsuite/gas/sh/sh64/crange2-2.d +++ /dev/null @@ -1,22 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: crange2.s -#name: .cranges descriptors for SHcompact and SHmedia in .text. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.cranges\]: - -OFFSET *TYPE *VALUE -0+0 R_SH_DIR32 \.text -0+a R_SH_DIR32 \.text -0+14 R_SH_DIR32 \.text - - -Contents of section \.text: - 0000 e8000a30 ec001240 ec001250 6ff0fff0 .* - 0010 00090009 00090009 00090009 00090009 .* - 0020 00090009 effffa60 effffa70 ebffe200 .* -Contents of section .cranges: - 0000 00000000 00000010 00030000 00100000 .* - 0010 00140002 00000024 0000000c 0003 .* diff --git a/gas/testsuite/gas/sh/sh64/crange2-noexp-1.d b/gas/testsuite/gas/sh/sh64/crange2-noexp-1.d deleted file mode 100644 index cad9f38..0000000 --- a/gas/testsuite/gas/sh/sh64/crange2-noexp-1.d +++ /dev/null @@ -1,43 +0,0 @@ -#as: --abi=32 -no-expand -#objdump: -dr -#source: crange2.s -#name: PT to SHcompact with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <shmedia>: -[ ]+0:[ ]+e8000a30[ ]+pta/l 8 <shmedia1>,tr3 -[ ]+4:[ ]+ec001240[ ]+ptb/l 14 <shcompact1>,tr4 - -0+8 <shmedia1>: -[ ]+8:[ ]+ec001250[ ]+ptb/l 18 <shcompact2>,tr5 - -0+c <shmedia2>: -[ ]+c:[ ]+6ff0fff0[ ]+nop - -0+10[ ]+<shcompact>: -[ ]+10:[ ]+00[ ]+09[ ]+nop -[ ]+12:[ ]+00[ ]+09[ ]+nop - -0+14 <shcompact1>: -[ ]+14:[ ]+00[ ]+09[ ]+nop -[ ]+16:[ ]+00[ ]+09[ ]+nop - -0+18 <shcompact2>: -[ ]+18:[ ]+00[ ]+09[ ]+nop -[ ]+1a:[ ]+00[ ]+09[ ]+nop - -0+1c <shcompact3>: -[ ]+1c:[ ]+00[ ]+09[ ]+nop -[ ]+1e:[ ]+00[ ]+09[ ]+nop - -0+20[ ]+<shcompact4>: -[ ]+20:[ ]+00[ ]+09[ ]+nop -[ ]+22:[ ]+00[ ]+09[ ]+nop - -0+24 <shmedia3>: -[ ]+24:[ ]+effffa60[ ]+ptb/l 1c <shcompact3>,tr6 -[ ]+28:[ ]+effffa70[ ]+ptb/l 20[ ]+<shcompact4>,tr7 -[ ]+2c:[ ]+ebffe200[ ]+pta/l c <shmedia2>,tr0 diff --git a/gas/testsuite/gas/sh/sh64/crange2.s b/gas/testsuite/gas/sh/sh64/crange2.s deleted file mode 100644 index 6fbebc3..0000000 --- a/gas/testsuite/gas/sh/sh64/crange2.s +++ /dev/null @@ -1,34 +0,0 @@ -! Check PT to SHcompact within same section as SHmedia, and that PT to -! nearby SHmedia still gets the right offset. - .text - .mode SHmedia -shmedia: - pt shmedia1,tr3 - pt shcompact1,tr4 -shmedia1: - ptb shcompact2,tr5 -shmedia2: - nop - - .mode SHcompact -shcompact: ! Have a label, so disassembling unrelocated code works. - nop - nop -shcompact1: - nop - nop -shcompact2: - nop - nop -shcompact3: - nop - nop -shcompact4: - nop - nop - - .mode SHmedia -shmedia3: - pt shcompact3,tr6 - ptb shcompact4,tr7 - pt shmedia2,tr0 diff --git a/gas/testsuite/gas/sh/sh64/crange3-1.d b/gas/testsuite/gas/sh/sh64/crange3-1.d deleted file mode 100644 index d7ddb0b..0000000 --- a/gas/testsuite/gas/sh/sh64/crange3-1.d +++ /dev/null @@ -1,24 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: crange3.s -#name: .cranges descriptors, constant mix. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.cranges\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 \.text -0+0a R_SH_DIR32 \.text -0+14 R_SH_DIR32 \.text - - -Contents of section \.text: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 01235678 12345678 12345678 1234fede .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 .* -Contents of section \.rodata: - 0000 abcdef01 12345678 .* -Contents of section \.cranges: - 0000 00000000 00000010 00030000 00100000 .* - 0010 00100001 00000020 00000014 0003 .* diff --git a/gas/testsuite/gas/sh/sh64/crange3.s b/gas/testsuite/gas/sh/sh64/crange3.s deleted file mode 100644 index 23ef76e..0000000 --- a/gas/testsuite/gas/sh/sh64/crange3.s +++ /dev/null @@ -1,34 +0,0 @@ -! There was a bug in which a .cranges data hunk could include a hunk of -! code in front of it. The following illustrates a function (start) -! followed by constants output into .rodata, followed by a function -! (continue), with a case-table (.L173) in it. The bug included code from -! the start of the function (continue) into the case-table range descriptor. - - .text - .mode SHmedia -start: - nop - .section .rodata - .long 0xabcdef01 - .long 0x12345678 - .text -continue: - nop - nop - nop - .align 2 - .align 2 -.L173: - .word 0x0123 - .word 0x5678 - .word 0x1234 - .word 0x5678 - .word 0x1234 - .word 0x5678 - .word 0x1234 - .word 0xfede - nop - nop - nop - nop - nop diff --git a/gas/testsuite/gas/sh/sh64/crange4-1.d b/gas/testsuite/gas/sh/sh64/crange4-1.d deleted file mode 100644 index e31d530..0000000 --- a/gas/testsuite/gas/sh/sh64/crange4-1.d +++ /dev/null @@ -1,19 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: crange4.s -#name: .cranges descriptors with final variant. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.cranges\]: -OFFSET *TYPE *VALUE -0+ R_SH_DIR32 \.text -0+a R_SH_DIR32 \.text - - -Contents of section \.text: - 0000 6ff0fff0 00000000 00000000 00000000 .* - 0010 00000000 00000000 .* -Contents of section \.cranges: - 0000 00000000 00000004 00030000 00040000 .* - 0010 00140001 .* diff --git a/gas/testsuite/gas/sh/sh64/crange4.s b/gas/testsuite/gas/sh/sh64/crange4.s deleted file mode 100644 index 5eaeb79..0000000 --- a/gas/testsuite/gas/sh/sh64/crange4.s +++ /dev/null @@ -1,8 +0,0 @@ -! This will be two .cranges. Original problem was that the second one was -! lost because .space just emitted a frag, without calling emit_expr as -! most other data-generating pseudos. - - .mode SHmedia -start: - nop - .space 20,0 diff --git a/gas/testsuite/gas/sh/sh64/crange5-1.d b/gas/testsuite/gas/sh/sh64/crange5-1.d deleted file mode 100644 index 1c58522..0000000 --- a/gas/testsuite/gas/sh/sh64/crange5-1.d +++ /dev/null @@ -1,12 +0,0 @@ -#as: --abi=32 --isa=SHmedia -#objdump: -sr -#source: crange5.s -#name: Avoid zero length .cranges range descriptor at .align in code. - -.*: file format .*-sh64.* - -Contents of section \.text: - 0000 e8003a00 d4ff80f0 4455fc00 acf000e0 .* - 0010 acf00c00 acf009c0 acf00520 00f8fce0 .* - 0020 0029fc10 e4110200 ebffda50 d81201c0 .* - 0030 e8000a00 cc000420 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/crange5.s b/gas/testsuite/gas/sh/sh64/crange5.s deleted file mode 100644 index 7644f1c..0000000 --- a/gas/testsuite/gas/sh/sh64/crange5.s +++ /dev/null @@ -1,26 +0,0 @@ -! Zero-sized range descriptors are handled well, but GAS should not emit -! them unnecessarily. This can happen if .align handling and insn -! assembling does not cater to this specifically and completely. -! Test-case shortened from gcc.c-torture/execute/20000205-1.c. - - .text -_f: - pt .L2, tr0 - addi.l r15, -32, r15 - gettr tr5, r0 - st.q r15, 0, r14 - st.q r15, 24, r0 - st.q r15, 16, r28 - st.q r15, 8, r18 - add.l r15, r63, r14 - add r2, r63, r1 - beqi r1, 0, tr0 - pt _f, tr5 - andi r1, 128, r28 - .align 2 -.L8: - pt .L2, tr0 - movi 1, r2 -.L2: - nop - diff --git a/gas/testsuite/gas/sh/sh64/creg-1.d b/gas/testsuite/gas/sh/sh64/creg-1.d deleted file mode 100644 index 52fce6f..0000000 --- a/gas/testsuite/gas/sh/sh64/creg-1.d +++ /dev/null @@ -1,77 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#name: Predefined control register names. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+240ffd50[ ]+getcon sr,r21 -[ ]+4:[ ]+241ffdf0[ ]+getcon ssr,r31 -[ ]+8:[ ]+242ffd60[ ]+getcon pssr,r22 -[ ]+c:[ ]+244ffd50[ ]+getcon intevt,r21 -[ ]+10:[ ]+245ffd50[ ]+getcon expevt,r21 -[ ]+14:[ ]+246ffd50[ ]+getcon pexpevt,r21 -[ ]+18:[ ]+247ffcc0[ ]+getcon tra,r12 -[ ]+1c:[ ]+248ffd50[ ]+getcon spc,r21 -[ ]+20:[ ]+249ffe90[ ]+getcon pspc,r41 -[ ]+24:[ ]+24affd50[ ]+getcon resvec,r21 -[ ]+28:[ ]+24bffd30[ ]+getcon vbr,r19 -[ ]+2c:[ ]+24dffd50[ ]+getcon tea,r21 -[ ]+30:[ ]+250ffe30[ ]+getcon dcr,r35 -[ ]+34:[ ]+251ffd50[ ]+getcon kcr0,r21 -[ ]+38:[ ]+252ffd50[ ]+getcon kcr1,r21 -[ ]+3c:[ ]+27effd60[ ]+getcon ctc,r22 -[ ]+40:[ ]+27fffd50[ ]+getcon usr,r21 -[ ]+44:[ ]+240ffc20[ ]+getcon sr,r2 -[ ]+48:[ ]+241ffd50[ ]+getcon ssr,r21 -[ ]+4c:[ ]+242ffd50[ ]+getcon pssr,r21 -[ ]+50:[ ]+244ffd50[ ]+getcon intevt,r21 -[ ]+54:[ ]+245ffe60[ ]+getcon expevt,r38 -[ ]+58:[ ]+246ffd50[ ]+getcon pexpevt,r21 -[ ]+5c:[ ]+247ffd50[ ]+getcon tra,r21 -[ ]+60:[ ]+248ffc10[ ]+getcon spc,r1 -[ ]+64:[ ]+249ffd50[ ]+getcon pspc,r21 -[ ]+68:[ ]+24affd50[ ]+getcon resvec,r21 -[ ]+6c:[ ]+24bffef0[ ]+getcon vbr,r47 -[ ]+70:[ ]+24dffd50[ ]+getcon tea,r21 -[ ]+74:[ ]+250ffd50[ ]+getcon dcr,r21 -[ ]+78:[ ]+251ffe30[ ]+getcon kcr0,r35 -[ ]+7c:[ ]+252ffd50[ ]+getcon kcr1,r21 -[ ]+80:[ ]+27effd50[ ]+getcon ctc,r21 -[ ]+84:[ ]+27fffd50[ ]+getcon usr,r21 -[ ]+88:[ ]+6d5ffc00[ ]+putcon r21,sr -[ ]+8c:[ ]+6dfffc10[ ]+putcon r31,ssr -[ ]+90:[ ]+6d6ffc20[ ]+putcon r22,pssr -[ ]+94:[ ]+6d5ffc40[ ]+putcon r21,intevt -[ ]+98:[ ]+6d5ffc50[ ]+putcon r21,expevt -[ ]+9c:[ ]+6d5ffc60[ ]+putcon r21,pexpevt -[ ]+a0:[ ]+6ccffc70[ ]+putcon r12,tra -[ ]+a4:[ ]+6d5ffc80[ ]+putcon r21,spc -[ ]+a8:[ ]+6e9ffc90[ ]+putcon r41,pspc -[ ]+ac:[ ]+6d5ffca0[ ]+putcon r21,resvec -[ ]+b0:[ ]+6d3ffcb0[ ]+putcon r19,vbr -[ ]+b4:[ ]+6d5ffcd0[ ]+putcon r21,tea -[ ]+b8:[ ]+6e3ffd00[ ]+putcon r35,dcr -[ ]+bc:[ ]+6d5ffd10[ ]+putcon r21,kcr0 -[ ]+c0:[ ]+6d5ffd20[ ]+putcon r21,kcr1 -[ ]+c4:[ ]+6d6fffe0[ ]+putcon r22,ctc -[ ]+c8:[ ]+6d5ffff0[ ]+putcon r21,usr -[ ]+cc:[ ]+6c2ffc00[ ]+putcon r2,sr -[ ]+d0:[ ]+6d5ffc10[ ]+putcon r21,ssr -[ ]+d4:[ ]+6d5ffc20[ ]+putcon r21,pssr -[ ]+d8:[ ]+6d5ffc40[ ]+putcon r21,intevt -[ ]+dc:[ ]+6e6ffc50[ ]+putcon r38,expevt -[ ]+e0:[ ]+6d5ffc60[ ]+putcon r21,pexpevt -[ ]+e4:[ ]+6d5ffc70[ ]+putcon r21,tra -[ ]+e8:[ ]+6c1ffc80[ ]+putcon r1,spc -[ ]+ec:[ ]+6d5ffc90[ ]+putcon r21,pspc -[ ]+f0:[ ]+6d5ffca0[ ]+putcon r21,resvec -[ ]+f4:[ ]+6efffcb0[ ]+putcon r47,vbr -[ ]+f8:[ ]+6d5ffcd0[ ]+putcon r21,tea -[ ]+fc:[ ]+6d5ffd00[ ]+putcon r21,dcr -[ ]+100:[ ]+6e3ffd10[ ]+putcon r35,kcr0 -[ ]+104:[ ]+6d5ffd20[ ]+putcon r21,kcr1 -[ ]+108:[ ]+6d5fffe0[ ]+putcon r21,ctc -[ ]+10c:[ ]+6d5ffff0[ ]+putcon r21,usr diff --git a/gas/testsuite/gas/sh/sh64/creg-1.s b/gas/testsuite/gas/sh/sh64/creg-1.s deleted file mode 100644 index 775f211..0000000 --- a/gas/testsuite/gas/sh/sh64/creg-1.s +++ /dev/null @@ -1,79 +0,0 @@ -! Test recognition of predefined control register names, lower and upper -! case; getcon and putcon. Exhaustive test in those domain is small and -! simple enough. Note that basic-1.s has already tested non-predefined -! register names. - - .mode SHmedia - .text -start: - getcon sr,r21 - getcon ssr,r31 - getcon pssr,r22 - getcon intevt,r21 - getcon expevt,r21 - getcon pexpevt,r21 - getcon tra,r12 - getcon spc,r21 - getcon pspc,r41 - getcon resvec,r21 - getcon vbr,r19 - getcon tea,r21 - getcon dcr,r35 - getcon kcr0,r21 - getcon kcr1,r21 - getcon ctc,r22 - getcon usr,r21 - - getcon SR,r2 - getcon SSR,r21 - getcon PSSR,r21 - getcon INTEVT,r21 - getcon EXPEVT,r38 - getcon PEXPEVT,r21 - getcon TRA,r21 - getcon SPC,r1 - getcon PSPC,r21 - getcon RESVEC,r21 - getcon VBR,r47 - getcon TEA,r21 - getcon DCR,r21 - getcon KCR0,r35 - getcon KCR1,r21 - getcon CTC,r21 - getcon USR,r21 - - putcon r21,sr - putcon r31,ssr - putcon r22,pssr - putcon r21,intevt - putcon r21,expevt - putcon r21,pexpevt - putcon r12,tra - putcon r21,spc - putcon r41,pspc - putcon r21,resvec - putcon r19,vbr - putcon r21,tea - putcon r35,dcr - putcon r21,kcr0 - putcon r21,kcr1 - putcon r22,ctc - putcon r21,usr - - putcon r2,SR - putcon r21,SSR - putcon r21,PSSR - putcon r21,INTEVT - putcon r38,EXPEVT - putcon r21,PEXPEVT - putcon r21,TRA - putcon r1,SPC - putcon r21,PSPC - putcon r21,RESVEC - putcon r47,VBR - putcon r21,TEA - putcon r21,DCR - putcon r35,KCR0 - putcon r21,KCR1 - putcon r21,CTC - putcon r21,USR diff --git a/gas/testsuite/gas/sh/sh64/creg-2.d b/gas/testsuite/gas/sh/sh64/creg-2.d deleted file mode 100644 index 2de2735..0000000 --- a/gas/testsuite/gas/sh/sh64/creg-2.d +++ /dev/null @@ -1,17 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#name: Predefined control register names specified in crN syntax. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+240ffd50[ ]+getcon sr,r21 -[ ]+4:[ ]+24dffd50[ ]+getcon tea,r21 -[ ]+8:[ ]+27effd60[ ]+getcon ctc,r22 -[ ]+c:[ ]+248ffd50[ ]+getcon spc,r21 -[ ]+10:[ ]+244ffd50[ ]+getcon intevt,r21 -[ ]+14:[ ]+6d3ffcb0[ ]+putcon r19,vbr -[ ]+18:[ ]+6e6ffc50[ ]+putcon r38,expevt -[ ]+1c:[ ]+6d5ffc10[ ]+putcon r21,ssr diff --git a/gas/testsuite/gas/sh/sh64/creg-2.s b/gas/testsuite/gas/sh/sh64/creg-2.s deleted file mode 100644 index fdfe46e..0000000 --- a/gas/testsuite/gas/sh/sh64/creg-2.s +++ /dev/null @@ -1,14 +0,0 @@ -! Test recognition of predefined control register names specified as crN -! syntax, lower and upper case. - - .mode SHmedia - .text -start: - getcon cr0,r21 - getcon cr13,r21 - getcon CR62,r22 - getcon cr8,r21 - getcon CR4,r21 - putcon r19,cr11 - putcon r38,CR5 - putcon r21,CR1 diff --git a/gas/testsuite/gas/sh/sh64/datal-1.s b/gas/testsuite/gas/sh/sh64/datal-1.s deleted file mode 100644 index 074cf7a..0000000 --- a/gas/testsuite/gas/sh/sh64/datal-1.s +++ /dev/null @@ -1,41 +0,0 @@ -! Check "datalabel" qualifier. -! This is the most simple use; references to local symbols where it is -! completely redundant. Code tests are for SHmedia mode. - - .mode SHmedia - .text -start: - movi datalabel foo,r3 - movi DataLabel foo2 + 42,r3 - movi (datalabel (foo3 + 46) >> 16) & 65535,r3 - movi datalabel myrodata3 & 65535, r45 - movi datalabel myrodata4 & 65535, r45 - movi DATALABEL (myrodata2 + 50) & 65535, r45 - - .section .rodata - .long datalabel foo4 -myrodata1: - .long DATALABEL foo5 + 56 -myrodata2: - .long datalabel $ - .global myrodata3 -myrodata3: - .long datalabel $+20 -myrodata4: - .long datalabel myrodata1+0x100 - - .data - .long datalabel myrodata1 -foo: - .long DATALABEL myrodata2+30 -foo2: - .long DataLabel foo -foo3: - .long datalabel $ -foo4: - .long datalabel $+40 -foo5: - .long datalabel myrodata3 - .global foo6 -foo6: - .long datalabel foo6 + 42 diff --git a/gas/testsuite/gas/sh/sh64/datal-2.d b/gas/testsuite/gas/sh/sh64/datal-2.d deleted file mode 100644 index ec9794d..0000000 --- a/gas/testsuite/gas/sh/sh64/datal-2.d +++ /dev/null @@ -1,44 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: datal-2.s -#name: DataLabel redundant local use, SHcompact - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+08 R_SH_DIR32 \.rodata -0+0c R_SH_DIR32 myrodata2 -0+10 R_SH_DIR32 \.text -0+14 R_SH_DIR32 \.text -0+18 R_SH_DIR32 \.text -0+1c R_SH_DIR32 \.text - - -RELOCATION RECORDS FOR \[\.data\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 myrodata2 -0+04 R_SH_DIR32 \.data -0+08 R_SH_DIR32 \.data -0+0c R_SH_DIR32 foo2 -0+10 R_SH_DIR32 foo3 -0+14 R_SH_DIR32 \.text -0+18 R_SH_DIR32 \.text - - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 \.data -0+04 R_SH_DIR32 \.data -0+08 R_SH_DIR32 \.rodata -0+0c R_SH_DIR32 \.rodata - - -Contents of section \.text: - 0000 c701c70d 00090009 00000004 00000014 .* - 0010 00000002 0000002e 00000018 00000030 .* -Contents of section \.data: - 0000 00000000 00000004 0000001c 00000000 .* - 0010 00000014 00000002 00000018 .* -Contents of section \.rodata: - 0000 00000010 0000004c 00000008 00000020 .* diff --git a/gas/testsuite/gas/sh/sh64/datal-2.s b/gas/testsuite/gas/sh/sh64/datal-2.s deleted file mode 100644 index 4aeb25b..0000000 --- a/gas/testsuite/gas/sh/sh64/datal-2.s +++ /dev/null @@ -1,46 +0,0 @@ -! Check "datalabel" qualifier. -! This is the most simple use; references to local symbols where it is -! completely redundant. Code tests are for SHcompact mode. - - .mode SHcompact - .text -start: - mova datalabel litpool1,r0 -start1: - mova datalabel litpool2 + 44,r0 -start2: - nop - nop -litpool1: - .long datalabel myrodata1 -litpool2: - .long datalabel myrodata2 + 20 - .long DATALABEL start1 - .long datalabel start2+42 - .long DataLabel $ - .long datalabel $+20 - - .section .rodata - .long datalabel foo4 -myrodata1: - .long DataLabel foo5 + 56 - .global myrodata2 -myrodata2: - .long datalabel $ - .long datalabel $+20 - - .data - .long DATALABEL myrodata2 -foo: - .long datalabel $ - .global foo2 -foo2: - .long datalabel $+20 - .global foo3 -foo3: - .long DataLabel foo2 -foo4: - .long datalabel foo3+20 -foo5: - .long DATALABEL start1 - .long datalabel start2+20 diff --git a/gas/testsuite/gas/sh/sh64/datal-3.s b/gas/testsuite/gas/sh/sh64/datal-3.s deleted file mode 100644 index 2583a22..0000000 --- a/gas/testsuite/gas/sh/sh64/datal-3.s +++ /dev/null @@ -1,48 +0,0 @@ -! Check "datalabel" qualifier. -! This is the next most simple use; references symbols defined in this file. -! Code tests are for SHmedia mode. - - .mode SHmedia - .text -start: - movi datalabel foo,r3 - movi DataLabel foo2 + 42,r3 - movi ((datalabel foo3 + 46) >> 16) & 65535,r3 - - .section .rodata - .long datalabel foo4 -myrodata1: - .long DATALABEL foo5 + 56 -myrodata2: - .long datalabel $ - .global myrodata3 -myrodata3: - .long datalabel $+20 - - .text - movi datalabel foo7 + 42,r30 - movi datalabel foo8,r30 - movi ((datalabel foo9 + 64) >> 16) & 65535,r3 - movi datalabel myrodata1,r56 -foo: - movi DATALABEL myrodata2+30,r21 -foo2: - movi DataLabel foo,r10 -foo3: - movi datalabel $,r33 -foo4: - movi datalabel $+40,r8 -foo5: - movi datalabel myrodata3,r44 - .global foo6 -foo6: - movi datalabel foo6 + 42,r30 - .global foo7 -foo7: - nop - .global foo8 -foo8: - nop - .global foo9 -foo9: - nop diff --git a/gas/testsuite/gas/sh/sh64/datal32-1.d b/gas/testsuite/gas/sh/sh64/datal32-1.d deleted file mode 100644 index 2a546c3..0000000 --- a/gas/testsuite/gas/sh/sh64/datal32-1.d +++ /dev/null @@ -1,45 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: datal-1.s -#name: DataLabel redundant local use, SHmedia 32-bit ABI - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+10 R_SH_IMM_MEDLOW16 \.data\+0x0+3a -0+14 R_SH_IMM_LOW16 myrodata3 -0+18 R_SH_IMM_LOW16 \.rodata\+0x0+10 -0+1c R_SH_IMM_LOW16 \.rodata\+0x0+3a -0+00 R_SH_IMM_MEDLOW16 \.data\+0x0+4 -0+04 R_SH_IMM_LOW16 \.data\+0x0+4 -0+08 R_SH_IMM_MEDLOW16 \.data\+0x0+32 -0+0c R_SH_IMM_LOW16 \.data\+0x0+32 - -RELOCATION RECORDS FOR \[\.data\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 \.rodata -0+04 R_SH_DIR32 \.rodata -0+08 R_SH_DIR32 \.data -0+0c R_SH_DIR32 \.data -0+10 R_SH_DIR32 \.data -0+14 R_SH_DIR32 myrodata3 -0+18 R_SH_DIR32 foo6 - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET *TYPE *VALUE -0+00 R_SH_DIR32 \.data -0+04 R_SH_DIR32 \.data -0+08 R_SH_DIR32 \.rodata -0+0c R_SH_DIR32 \.rodata -0+10 R_SH_DIR32 \.rodata - -Contents of section \.text: - 0000 cc000030 c8000030 cc000030 c8000030 .* - 0010 cc000030 cc0002d0 cc0002d0 cc0002d0 .* -Contents of section \.data: - 0000 00000004 00000026 00000004 0000000c .* - 0010 00000038 00000000 0000002a .* -Contents of section \.rodata: - 0000 00000010 0000004c 00000008 00000020 .* - 0010 00000104 .* diff --git a/gas/testsuite/gas/sh/sh64/datal32-3.d b/gas/testsuite/gas/sh/sh64/datal32-3.d deleted file mode 100644 index a1e3a3c..0000000 --- a/gas/testsuite/gas/sh/sh64/datal32-3.d +++ /dev/null @@ -1,94 +0,0 @@ -#as: --abi=32 -#objdump: -xsr -#source: datal-3.s -#name: DataLabel local def/use, SHmedia 32-bit ABI - -# We should have the st_type field of each symbol displayed too, so we can -# check that STT_DATALABEL is set, but objdump doesn't do that at present, -# and readelf isn't supported as a run_dump_test tool. - -.*: file format .*-sh64.* -.* -architecture: sh5, flags 0x0+11: -HAS_RELOC, HAS_SYMS -start address 0x0+ - -Sections: -Idx Name Size VMA LMA File off Algn - 0 \.text 0+6c 0+ 0+ 0+34 2\*\*0 - CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE - 1 \.data 0+ 0+ 0+ 0+a0 2\*\*0 - CONTENTS, ALLOC, LOAD, DATA - 2 \.bss 0+ 0+ 0+ 0+a0 2\*\*0 - ALLOC - 3 \.rodata 0+10 0+ 0+ 0+a0 2\*\*2 - CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA -SYMBOL TABLE: -0+ l d \.text 0+ (|\.text) -0+ l d \.data 0+ (|\.data) -0+ l d \.bss 0+ (|\.bss) -0+ l \.text 0+ 0x04 start -0+30 l \.text 0+ 0x04 foo -0+38 l \.text 0+ 0x04 foo2 -0+40 l \.text 0+ 0x04 foo3 -0+ l d \.rodata 0+ (|\.rodata) -0+48 l \.text 0+ 0x04 foo4 -0+4 l \.rodata 0+ myrodata1 -0+50 l \.text 0+ 0x04 foo5 -0+8 l \.rodata 0+ myrodata2 -0+c g \.rodata 0+ myrodata3 -0+60 g \.text 0+ 0x04 foo7 -0+60 \*UND\* 0+ foo7 -0+64 g \.text 0+ 0x04 foo8 -0+64 \*UND\* 0+ foo8 -0+68 g \.text 0+ 0x04 foo9 -0+68 \*UND\* 0+ foo9 -0+58 g \.text 0+ 0x04 foo6 -0+58 \*UND\* 0+ foo6 - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+10 R_SH_IMM_MEDLOW16 \.text\+0x0+6e -0+24 R_SH_IMM_MEDLOW16 foo9\+0x0+40 -0+00 R_SH_IMM_MEDLOW16 \.text\+0x0+30 -0+04 R_SH_IMM_LOW16 \.text\+0x0+30 -0+08 R_SH_IMM_MEDLOW16 \.text\+0x0+62 -0+0c R_SH_IMM_LOW16 \.text\+0x0+62 -0+14 R_SH_IMM_MEDLOW16 foo7\+0x0+2a -0+18 R_SH_IMM_LOW16 foo7\+0x0+2a -0+1c R_SH_IMM_MEDLOW16 foo8 -0+20 R_SH_IMM_LOW16 foo8 -0+28 R_SH_IMM_MEDLOW16 \.rodata\+0x0+4 -0+2c R_SH_IMM_LOW16 \.rodata\+0x0+4 -0+30 R_SH_IMM_MEDLOW16 \.rodata\+0x0+26 -0+34 R_SH_IMM_LOW16 \.rodata\+0x0+26 -0+38 R_SH_IMM_MEDLOW16 \.text\+0x0+30 -0+3c R_SH_IMM_LOW16 \.text\+0x0+30 -0+40 R_SH_IMM_MEDLOW16 \.text\+0x0+40 -0+44 R_SH_IMM_LOW16 \.text\+0x0+40 -0+48 R_SH_IMM_MEDLOW16 \.text\+0x0+70 -0+4c R_SH_IMM_LOW16 \.text\+0x0+70 -0+50 R_SH_IMM_MEDLOW16 myrodata3 -0+54 R_SH_IMM_LOW16 myrodata3 -0+58 R_SH_IMM_MEDLOW16 foo6\+0x0+2a -0+5c R_SH_IMM_LOW16 foo6\+0x0+2a - - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET *TYPE *VALUE -0+ R_SH_DIR32 \.text -0+4 R_SH_DIR32 \.text -0+8 R_SH_DIR32 \.rodata -0+c R_SH_DIR32 \.rodata - - -Contents of section \.text: - 0000 cc000030 c8000030 cc000030 c8000030 .* - 0010 cc000030 cc0001e0 c80001e0 cc0001e0 .* - 0020 c80001e0 cc000030 cc000380 c8000380 .* - 0030 cc000150 c8000150 cc0000a0 c80000a0 .* - 0040 cc000210 c8000210 cc000080 c8000080 .* - 0050 cc0002c0 c80002c0 cc0001e0 c80001e0 .* - 0060 6ff0fff0 6ff0fff0 6ff0fff0 .* -Contents of section \.rodata: - 0000 00000048 00000088 00000008 00000020 .* diff --git a/gas/testsuite/gas/sh/sh64/datal64-1.d b/gas/testsuite/gas/sh/sh64/datal64-1.d deleted file mode 100644 index 247ba80..0000000 --- a/gas/testsuite/gas/sh/sh64/datal64-1.d +++ /dev/null @@ -1,50 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: datal-1.s -#name: DataLabel redundant local use, SHmedia 64-bit ABI - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+20 R_SH_IMM_MEDLOW16 \.data\+0x0+3a -0+24 R_SH_IMM_LOW16 myrodata3 -0+28 R_SH_IMM_LOW16 \.rodata\+0x0+10 -0+2c R_SH_IMM_LOW16 \.rodata\+0x0+3a -0+00 R_SH_IMM_HI16 \.data\+0x0+4 -0+04 R_SH_IMM_MEDHI16 \.data\+0x0+4 -0+08 R_SH_IMM_MEDLOW16 \.data\+0x0+4 -0+0c R_SH_IMM_LOW16 \.data\+0x0+4 -0+10 R_SH_IMM_HI16 \.data\+0x0+32 -0+14 R_SH_IMM_MEDHI16 \.data\+0x0+32 -0+18 R_SH_IMM_MEDLOW16 \.data\+0x0+32 -0+1c R_SH_IMM_LOW16 \.data\+0x0+32 - -RELOCATION RECORDS FOR \[\.data\]: -OFFSET TYPE VALUE -0+00 R_SH_DIR32 \.rodata -0+04 R_SH_DIR32 \.rodata -0+08 R_SH_DIR32 \.data -0+0c R_SH_DIR32 \.data -0+10 R_SH_DIR32 \.data -0+14 R_SH_DIR32 myrodata3 -0+18 R_SH_DIR32 foo6 - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET TYPE VALUE -0+00 R_SH_DIR32 \.data -0+04 R_SH_DIR32 \.data -0+08 R_SH_DIR32 \.rodata -0+0c R_SH_DIR32 \.rodata -0+10 R_SH_DIR32 \.rodata - -Contents of section \.text: - 0000 cc000030 c8000030 c8000030 c8000030 .* - 0010 cc000030 c8000030 c8000030 c8000030 .* - 0020 cc000030 cc0002d0 cc0002d0 cc0002d0 .* -Contents of section \.data: - 0000 00000004 00000026 00000004 0000000c .* - 0010 00000038 00000000 0000002a .* -Contents of section \.rodata: - 0000 00000010 0000004c 00000008 00000020 .* - 0010 00000104 .* diff --git a/gas/testsuite/gas/sh/sh64/datal64-3.d b/gas/testsuite/gas/sh/sh64/datal64-3.d deleted file mode 100644 index a6e8129..0000000 --- a/gas/testsuite/gas/sh/sh64/datal64-3.d +++ /dev/null @@ -1,123 +0,0 @@ -#as: --abi=64 -#objdump: -xsr -#source: datal-3.s -#name: DataLabel local def/use, SHmedia 64-bit ABI - -# We should have the st_type field of each symbol displayed too, so we can -# check that STT_DATALABEL is set, but objdump doesn't do that at present, -# and readelf isn't supported as a run_dump_test tool. - -.*: file format .*-sh64.* -.* -architecture: sh5, flags 0x0+11: -HAS_RELOC, HAS_SYMS -start address 0x0+ - -Sections: -Idx Name Size VMA LMA File off Algn - 0 \.text 0+c4 0+ 0+ 0+40 2\*\*0 - CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE - 1 \.data 0+ 0+ 0+ 0+104 2\*\*0 - CONTENTS, ALLOC, LOAD, DATA - 2 \.bss 0+ 0+ 0+ 0+104 2\*\*0 - ALLOC - 3 \.rodata 0+10 0+ 0+ 0+104 2\*\*2 - CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA -SYMBOL TABLE: -0+ l d \.text 0+ (|\.text) -0+ l d \.data 0+ (|\.data) -0+ l d \.bss 0+ (|\.bss) -0+ l \.text 0+ 0x04 start -0+58 l \.text 0+ 0x04 foo -0+68 l \.text 0+ 0x04 foo2 -0+78 l \.text 0+ 0x04 foo3 -0+ l d \.rodata 0+ (|\.rodata) -0+88 l \.text 0+ 0x04 foo4 -0+4 l \.rodata 0+ myrodata1 -0+98 l \.text 0+ 0x04 foo5 -0+8 l \.rodata 0+ myrodata2 -0+c g \.rodata 0+ myrodata3 -0+b8 g \.text 0+ 0x04 foo7 -0+b8 \*UND\* 0+ foo7 -0+bc g \.text 0+ 0x04 foo8 -0+bc \*UND\* 0+ foo8 -0+c0 g \.text 0+ 0x04 foo9 -0+c0 \*UND\* 0+ foo9 -0+a8 g \.text 0+ 0x04 foo6 -0+a8 \*UND\* 0+ foo6 - - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+20 R_SH_IMM_MEDLOW16 \.text\+0x0+a6 -0+44 R_SH_IMM_MEDLOW16 foo9\+0x0+40 -0+ R_SH_IMM_HI16 \.text\+0x0+58 -0+4 R_SH_IMM_MEDHI16 \.text\+0x0+58 -0+8 R_SH_IMM_MEDLOW16 \.text\+0x0+58 -0+c R_SH_IMM_LOW16 \.text\+0x0+58 -0+10 R_SH_IMM_HI16 \.text\+0x0+92 -0+14 R_SH_IMM_MEDHI16 \.text\+0x0+92 -0+18 R_SH_IMM_MEDLOW16 \.text\+0x0+92 -0+1c R_SH_IMM_LOW16 \.text\+0x0+92 -0+24 R_SH_IMM_HI16 foo7\+0x0+2a -0+28 R_SH_IMM_MEDHI16 foo7\+0x0+2a -0+2c R_SH_IMM_MEDLOW16 foo7\+0x0+2a -0+30 R_SH_IMM_LOW16 foo7\+0x0+2a -0+34 R_SH_IMM_HI16 foo8 -0+38 R_SH_IMM_MEDHI16 foo8 -0+3c R_SH_IMM_MEDLOW16 foo8 -0+40 R_SH_IMM_LOW16 foo8 -0+48 R_SH_IMM_HI16 \.rodata\+0x0+4 -0+4c R_SH_IMM_MEDHI16 \.rodata\+0x0+4 -0+50 R_SH_IMM_MEDLOW16 \.rodata\+0x0+4 -0+54 R_SH_IMM_LOW16 \.rodata\+0x0+4 -0+58 R_SH_IMM_HI16 \.rodata\+0x0+26 -0+5c R_SH_IMM_MEDHI16 \.rodata\+0x0+26 -0+60 R_SH_IMM_MEDLOW16 \.rodata\+0x0+26 -0+64 R_SH_IMM_LOW16 \.rodata\+0x0+26 -0+68 R_SH_IMM_HI16 \.text\+0x0+58 -0+6c R_SH_IMM_MEDHI16 \.text\+0x0+58 -0+70 R_SH_IMM_MEDLOW16 \.text\+0x0+58 -0+74 R_SH_IMM_LOW16 \.text\+0x0+58 -0+78 R_SH_IMM_HI16 \.text\+0x0+78 -0+7c R_SH_IMM_MEDHI16 \.text\+0x0+78 -0+80 R_SH_IMM_MEDLOW16 \.text\+0x0+78 -0+84 R_SH_IMM_LOW16 \.text\+0x0+78 -0+88 R_SH_IMM_HI16 \.text\+0x0+b0 -0+8c R_SH_IMM_MEDHI16 \.text\+0x0+b0 -0+90 R_SH_IMM_MEDLOW16 \.text\+0x0+b0 -0+94 R_SH_IMM_LOW16 \.text\+0x0+b0 -0+98 R_SH_IMM_HI16 myrodata3 -0+9c R_SH_IMM_MEDHI16 myrodata3 -0+a0 R_SH_IMM_MEDLOW16 myrodata3 -0+a4 R_SH_IMM_LOW16 myrodata3 -0+a8 R_SH_IMM_HI16 foo6\+0x0+2a -0+ac R_SH_IMM_MEDHI16 foo6\+0x0+2a -0+b0 R_SH_IMM_MEDLOW16 foo6\+0x0+2a -0+b4 R_SH_IMM_LOW16 foo6\+0x0+2a - - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET TYPE VALUE -0+ R_SH_DIR32 \.text -0+4 R_SH_DIR32 \.text -0+8 R_SH_DIR32 \.rodata -0+c R_SH_DIR32 \.rodata - - -Contents of section \.text: - 0000 cc000030 c8000030 c8000030 c8000030 .* - 0010 cc000030 c8000030 c8000030 c8000030 .* - 0020 cc000030 cc0001e0 c80001e0 c80001e0 .* - 0030 c80001e0 cc0001e0 c80001e0 c80001e0 .* - 0040 c80001e0 cc000030 cc000380 c8000380 .* - 0050 c8000380 c8000380 cc000150 c8000150 .* - 0060 c8000150 c8000150 cc0000a0 c80000a0 .* - 0070 c80000a0 c80000a0 cc000210 c8000210 .* - 0080 c8000210 c8000210 cc000080 c8000080 .* - 0090 c8000080 c8000080 cc0002c0 c80002c0 .* - 00a0 c80002c0 c80002c0 cc0001e0 c80001e0 .* - 00b0 c80001e0 c80001e0 6ff0fff0 6ff0fff0 .* - 00c0 6ff0fff0 .* -Contents of section \.rodata: - 0000 00000088 000000d0 00000008 00000020 .* diff --git a/gas/testsuite/gas/sh/sh64/eh-1.d b/gas/testsuite/gas/sh/sh64/eh-1.d deleted file mode 100644 index da267e3..0000000 --- a/gas/testsuite/gas/sh/sh64/eh-1.d +++ /dev/null @@ -1,14 +0,0 @@ -#as: --abi=32 --isa=shmedia -#objdump: -sr -#source: eh-1.s -#name: PR gas/6043 - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.eh_frame\]: -OFFSET *TYPE *VALUE -00000000 R_SH_64_PCREL \.text\+0x00000005 - - -Contents of section .eh_frame: - 0000 00000000 00000000 .* diff --git a/gas/testsuite/gas/sh/sh64/eh-1.s b/gas/testsuite/gas/sh/sh64/eh-1.s deleted file mode 100644 index c1cc672..0000000 --- a/gas/testsuite/gas/sh/sh64/eh-1.s +++ /dev/null @@ -1,7 +0,0 @@ -! PR gas/6043 - - .text -.LFB1: - .section .eh_frame,"a",@progbits -.LASFDE1: - .uaquad .LFB1-. diff --git a/gas/testsuite/gas/sh/sh64/endian-1.d b/gas/testsuite/gas/sh/sh64/endian-1.d deleted file mode 100644 index 3d2ca8e..0000000 --- a/gas/testsuite/gas/sh/sh64/endian-1.d +++ /dev/null @@ -1,9 +0,0 @@ -#as: --isa=shmedia --abi=64 --no-exp -little -#objdump: -s -#name: SH64 Little Endian - -.*: file format elf64-sh64.* - -Contents of section .text: - 0000 00d048cc 78563412 34120000.* - diff --git a/gas/testsuite/gas/sh/sh64/endian-1.s b/gas/testsuite/gas/sh/sh64/endian-1.s deleted file mode 100644 index 79bc9e4..0000000 --- a/gas/testsuite/gas/sh/sh64/endian-1.s +++ /dev/null @@ -1,7 +0,0 @@ - .text - .mode shmedia -start: - - movi 0x1234,r0 - .long 0x12345678 - .word 0x1234, 0 diff --git a/gas/testsuite/gas/sh/sh64/endian-2.d b/gas/testsuite/gas/sh/sh64/endian-2.d deleted file mode 100644 index 7f6d265..0000000 --- a/gas/testsuite/gas/sh/sh64/endian-2.d +++ /dev/null @@ -1,10 +0,0 @@ -#as: --isa=shmedia --abi=64 --no-exp -big -#objdump: -s -#name: SH64 Big Endian - -.*: file format elf64-sh64.* - -Contents of section .text: - 0000 cc48d000 12345678 12340000.* - - diff --git a/gas/testsuite/gas/sh/sh64/endian-2.s b/gas/testsuite/gas/sh/sh64/endian-2.s deleted file mode 100644 index 79bc9e4..0000000 --- a/gas/testsuite/gas/sh/sh64/endian-2.s +++ /dev/null @@ -1,7 +0,0 @@ - .text - .mode shmedia -start: - - movi 0x1234,r0 - .long 0x12345678 - .word 0x1234, 0 diff --git a/gas/testsuite/gas/sh/sh64/err-1.s b/gas/testsuite/gas/sh/sh64/err-1.s deleted file mode 100644 index 4e23c4f..0000000 --- a/gas/testsuite/gas/sh/sh64/err-1.s +++ /dev/null @@ -1,47 +0,0 @@ -! { dg-do assemble } - -! Various operand errors experienced during the creation of basic-1.s; -! some are redundant. -! - addz.l r51,-42,r30 ! { dg-error "invalid operand" } - beqi r4,-33,tr5 ! { dg-error "not a 6-bit signed value" } - fadd.s dr41,dr59,dr19 ! { dg-error "invalid operand" } - fdiv.s fr13,dr26,fr19 ! { dg-error "invalid operand" } - fld.p r53,-3000,fp39 ! { dg-error "invalid operand" } - fld.s r53,1010,fr53 ! { dg-error "not a multiple of 4" } - float.qd dr45,dr16 ! { dg-error "invalid operand" } - float.qs dr31,fr11 ! { dg-error "invalid operand" } - fmov.d dr8,dr43 ! { dg-error "invalid operand" } - fmov.qd r45,dr5 ! { dg-error "invalid operand" } - fmul.d dr7,dr57,dr42 ! { dg-error "invalid operand" } - fneg.s fr0,dr33 ! { dg-error "invalid operand" } - fsqrt.d dr31,dr43 ! { dg-error "invalid operand" } - fst.p r54,-4008,fp11 ! { dg-error "invalid operand" } - fstx.p r38,r26,dr52 ! { dg-error "invalid operand" } - ftrc.dq dr15,dr29 ! { dg-error "invalid operand" } - ftrv.s mtrx16,fv32,fv7 ! { dg-error "invalid operand" } - icbi r48,12000 ! { dg-error "not a 11-bit signed value" } - ld.w r46,301,r11 ! { dg-error "not an even value" } - ldhi.l r6,302,r41 ! { dg-error "not a 6-bit signed value" } - ldlo.l r19,334,r48 ! { dg-error "not a 6-bit signed value" } - ldlo.q r9,311,r29 ! { dg-error "not a 6-bit signed value" } - ocbi r43,11008 ! { dg-error "not a 11-bit signed value" } - ocbp r40,-11008 ! { dg-error "not a 11-bit signed value" } - ocbwb r44,-10016 ! { dg-error "not a 11-bit signed value" } - prefi r57,16000 ! { dg-error "not a 11-bit signed value" } - putcfg r41,-511,r62 ! { dg-error "not a 6-bit signed value" } - shlld r56,38,r23 ! { dg-error "invalid operand" } - shlli.l r61,r35,r26 ! { dg-error "invalid operand" } - shlli r60,r36,r25 ! { dg-error "invalid operand" } - shlri r2,r32,r29 ! { dg-error "invalid operand" } - shlri.l r3,r31,r30 ! { dg-error "invalid operand" } - st.w r9,2002,r33 ! { dg-error "not a 11-bit signed value" } - sthi.l r10,-201,r43 ! { dg-error "not a 6-bit signed value" } - sthi.q r12,203,r44 ! { dg-error "not a 6-bit signed value" } - stlo.l r13,-207,r45 ! { dg-error "not a 6-bit signed value" } - stlo.q r15,217,r46 ! { dg-error "not a 6-bit signed value" } - stx.b r16,219,r47 ! { dg-error "invalid operand" } - stx.l r17,-500,r48 ! { dg-error "invalid operand" } - stx.q r19,-50,r49 ! { dg-error "invalid operand" } - stx.w r20,-150,r50 ! { dg-error "invalid operand" } - xori r29,-51,r55 ! { dg-error "not a 6-bit signed value" } diff --git a/gas/testsuite/gas/sh/sh64/err-2.s b/gas/testsuite/gas/sh/sh64/err-2.s deleted file mode 100644 index 8078a3b..0000000 --- a/gas/testsuite/gas/sh/sh64/err-2.s +++ /dev/null @@ -1,16 +0,0 @@ -! { dg-do assemble } -! { dg-options "--abi=32 --isa=shmedia" } -! - -! This is a mainly a copy of movi64-2.s, but we check that out-of-range -! errors are emitted for the 32-bit ABI. - .text -start: - movi 65536 << 16,r3 ! { dg-error "not a 32-bit signed value" } - movi -32769 << 16,r3 ! { dg-error "not a 32-bit signed value" } - movi 32768 << 16,r3 - movi -32768 << 16,r3 - movi 32767 << 48,r3 ! { dg-error "not a 32-bit signed value" } - movi 32768 << 48,r3 ! { dg-error "not a 32-bit signed value" } - movi -32768 << 48,r3 ! { dg-error "not a 32-bit signed value" } - diff --git a/gas/testsuite/gas/sh/sh64/err-3.s b/gas/testsuite/gas/sh/sh64/err-3.s deleted file mode 100644 index dd1a88c..0000000 --- a/gas/testsuite/gas/sh/sh64/err-3.s +++ /dev/null @@ -1,36 +0,0 @@ -! { dg-do assemble } -! { dg-options "--abi=32" } - -! Check that we get errors for immediate operands with expressions with -! resolvable differences between local symbols, but not in range for the -! operands, and no errors for nearby valid values. - - .text - .mode SHmedia -start: - addi r50,.Lab500 - .Lab1,r40 - addi r50,.Lab1000 - .Lab1,r40 ! { dg-error "not a 10-bit signed value" } - addi r50,.Lab500 - .Lab1 + 1,r40 - addi r50,.Lab500 - .Lab1 + 2,r40 - ld.uw r30,.Lab1000 - .Lab1,r40 - ld.uw r30,.Lab500 - .Lab1 + 1,r40 ! { dg-error "not an even value" } - ld.uw r30,.Lab500 - .Lab1 + 2,r40 - ld.uw r50,.Lab2000 - .Lab1,r20 ! { dg-error "not a 11-bit signed value" } - ld.l r50,.Lab2000 - .Lab1,r20 - ld.l r50,.Lab2000 - .Lab1 + 1,r20 ! { dg-error "not a multiple of 4" } - ld.l r50,.Lab2000 - .Lab1 + 2,r20 ! { dg-error "not a multiple of 4" } - ld.l r50,.Lab4000 - .Lab1,r20 ! { dg-error "not a 12-bit signed value" } - nop - - .data - .long 0 -.Lab1: - .zero 500,0 -.Lab500: - .zero 500,0 -.Lab1000: - .zero 1000,0 -.Lab2000: - .zero 2000,0 -.Lab4000: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/err-4.s b/gas/testsuite/gas/sh/sh64/err-4.s deleted file mode 100644 index 2bd72f1..0000000 --- a/gas/testsuite/gas/sh/sh64/err-4.s +++ /dev/null @@ -1,27 +0,0 @@ -! { dg-do assemble } -! { dg-options "--abi=32 -no-mix" } - -! Check that we can't have different ISA:s in the same section if disallowed. - - .text - .mode SHmedia -start: - nop - - .mode SHcompact - nop ! { dg-error "not allowed in same section" } - - .section .text.other,"ax" - .mode SHmedia - nop - - .mode SHcompact - nop ! { dg-error "not allowed in same section" } - - .section .text.more,"ax" - .mode SHmedia - nop - - .section .text.yetmore,"ax" - .mode SHcompact - nop diff --git a/gas/testsuite/gas/sh/sh64/err-abi-32.s b/gas/testsuite/gas/sh/sh64/err-abi-32.s deleted file mode 100644 index 400a262..0000000 --- a/gas/testsuite/gas/sh/sh64/err-abi-32.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check .abi pseudo assertion. - -! { dg-do assemble } -! { dg-options "-abi=64" } - - .text - .abi 32 ! { dg-error "options do not specify 32-bit ABI" } - -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/err-abi-64.s b/gas/testsuite/gas/sh/sh64/err-abi-64.s deleted file mode 100644 index 3e136d2..0000000 --- a/gas/testsuite/gas/sh/sh64/err-abi-64.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check .abi pseudo assertion. - -! { dg-do assemble } -! { dg-options "-abi=32" } - - .text - .abi 64 ! { dg-error "options do not specify 64-bit ABI" } - -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/err-dsp.s b/gas/testsuite/gas/sh/sh64/err-dsp.s deleted file mode 100644 index 3cee009..0000000 --- a/gas/testsuite/gas/sh/sh64/err-dsp.s +++ /dev/null @@ -1,15 +0,0 @@ -! Check that we get errors when assembling DSP instructions. - -! { dg-do assemble } -! { dg-options "-isa=SHcompact" } - -! Regarding the opcode table, all insns are marked arch_sh_dsp_up; there are -! no insns marked arch_sh3_dsp_up. We check a few marked arch_sh_dsp_up: -! two have operands only recognized with -dsp; the other has an opcode not -! recognized without -dsp. - - .text -start: - ldc r3,mod ! { dg-error "invalid operands" } - ldre @(16,pc) ! { dg-error "opcode not valid for this cpu variant" } - lds r4,a0 ! { dg-error "invalid operands" } diff --git a/gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s b/gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s deleted file mode 100644 index 50374f9..0000000 --- a/gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s +++ /dev/null @@ -1,24 +0,0 @@ -! Check that we get errors for MOVI operands out-of-range with -no-expand. - -! { dg-do assemble } -! { dg-options "--abi=32 --isa=shmedia -no-expand" } - - .text -start: - movi externalsym + 123,r3 - movi 65535,r3 ! { dg-error "not a 16-bit signed value" } - movi 65536,r3 ! { dg-error "not a 16-bit signed value" } - movi 65535 << 16,r3 ! { dg-error "not a 16-bit signed value" } - movi 32767,r3 - movi 32768,r3 ! { dg-error "not a 16-bit signed value" } - movi 32767 << 16,r3 ! { dg-error "not a 16-bit signed value" } - movi -32768,r3 - movi -32769,r3 ! { dg-error "not a 16-bit signed value" } - movi -32768 << 16,r3 ! { dg-error "not a 16-bit signed value" } - movi localsym + 73,r4 - movi forwardsym - 42,r4 - .set forwardsym,47 - - .data -localsym: - .long 1 diff --git a/gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s b/gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s deleted file mode 100644 index 20190c2..0000000 --- a/gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check command-line error checking. The option -no-expand is not valid -! unless SHcompact/SHmedia is specified. - -! { dg-do assemble } -! { dg-options "-no-expand" } -! { dg-error ".* only valid with SHcompact or SHmedia" "" { target sh64-*-elf* } 0 } - - .text -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/err-pt-1.s b/gas/testsuite/gas/sh/sh64/err-pt-1.s deleted file mode 100644 index c8a50a8..0000000 --- a/gas/testsuite/gas/sh/sh64/err-pt-1.s +++ /dev/null @@ -1,18 +0,0 @@ -! Check that we get errors for a PT operand out of range with -no-relax. - -! { dg-do assemble } -! { dg-options "--abi=32 --no-expand" } - - .mode SHmedia -start: - nop -start2: - pt x0,tr3 ! { dg-error "operand out of range" } -x1: - pt x0,tr4 - .space 32767*4-4,0 -x0: - pt x1,tr5 - pt x1,tr6 - pt x1,tr6 ! { dg-error "operand out of range" } - pt x1,tr7 ! { dg-error "operand out of range" } diff --git a/gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s b/gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s deleted file mode 100644 index d92f62f..0000000 --- a/gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check command-line error checking. The option -expand-pt32 is only valid -! with -abi=64 - -! { dg-do assemble } -! { dg-options "-expand-pt32" } -! { dg-error ".* only valid with -abi=64" "" { target sh64-*-* } 0 } - - .text -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s b/gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s deleted file mode 100644 index f75f3c8..0000000 --- a/gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check command-line error checking. The option -expand-pt32 is invalid with -! -no-expand. - -! { dg-do assemble } -! { dg-options "-abi=64 -expand-pt32 -no-expand" } -! { dg-error ".* invalid together with -no-expand" "" { target sh64-*-* } 0 } - - .text -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s b/gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s deleted file mode 100644 index d64cc44..0000000 --- a/gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check command-line error checking. The option -expand-pt32 is invalid with -! -abi=32 just as it is invalid with no SHmedia/SHcompact options. - -! { dg-do assemble } -! { dg-options "-abi=32 -expand-pt32" } -! { dg-error ".* only valid with -abi=64" "" { target sh64-*-* } 0 } - - .text -start: - nop diff --git a/gas/testsuite/gas/sh/sh64/err-ptb-1.s b/gas/testsuite/gas/sh/sh64/err-ptb-1.s deleted file mode 100644 index 7c881bd..0000000 --- a/gas/testsuite/gas/sh/sh64/err-ptb-1.s +++ /dev/null @@ -1,34 +0,0 @@ -! Check that PTB to a assembly-time-resolvable SHcompact operand -! gets an error. Likewise PTA. - -! { dg-do assemble } -! { dg-options "--abi=32" } - - .text - .mode SHmedia -start: - ptb shmediasymbol1,tr1 ! { dg-error "PTB operand is a SHmedia symbol" } -shmediasymbol3: - ptb shcompactsymbol1,tr1 - pta shcompactsymbol2,tr3 ! { dg-error "PTA operand is a SHcompact symbol" } -shmediasymbol1: - ptb shmediasymbol2,tr2 ! { dg-error "PTB operand is a SHmedia symbol" } - - .mode SHcompact -shcompact: - nop - nop -shcompactsymbol2: - nop - nop -shcompactsymbol1: - nop - nop - - .mode SHmedia -shmedia: - nop -shmediasymbol2: - nop - ptb shmediasymbol3,tr3 ! { dg-error "PTB operand is a SHmedia symbol" } - nop diff --git a/gas/testsuite/gas/sh/sh64/err-ptb-2.s b/gas/testsuite/gas/sh/sh64/err-ptb-2.s deleted file mode 100644 index 216e434..0000000 --- a/gas/testsuite/gas/sh/sh64/err-ptb-2.s +++ /dev/null @@ -1,34 +0,0 @@ -! Check that PTB to a assembly-time-resolvable SHcompact operand gets an -! error. Mostly like err-ptb-1.s, except we also specify --no-expand. - -! { dg-do assemble } -! { dg-options "--abi=32 --no-expand" } - - .text - .mode SHmedia -start: - ptb shmediasymbol1,tr1 ! { dg-error "PTB operand is a SHmedia symbol" } -shmediasymbol3: - ptb shcompactsymbol1,tr1 - pta shcompactsymbol2,tr3 ! { dg-error "PTA operand is a SHcompact symbol" } -shmediasymbol1: - ptb shmediasymbol2,tr2 ! { dg-error "PTB operand is a SHmedia symbol" } - - .mode SHcompact -shcompact: - nop - nop -shcompactsymbol2: - nop - nop -shcompactsymbol1: - nop - nop - - .mode SHmedia -shmedia: - nop -shmediasymbol2: - nop - ptb shmediasymbol3,tr3 ! { dg-error "PTB operand is a SHmedia symbol" } - nop diff --git a/gas/testsuite/gas/sh/sh64/err.exp b/gas/testsuite/gas/sh/sh64/err.exp deleted file mode 100644 index 22a5251..0000000 --- a/gas/testsuite/gas/sh/sh64/err.exp +++ /dev/null @@ -1,9 +0,0 @@ -load_lib gas-dg.exp -dg-init - -if [istarget sh64-*-*] then { - dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/warn-*.s]] "" "--isa=SHmedia" - dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/err-*.s]] "" "--isa=SHmedia" -} - -dg-finish diff --git a/gas/testsuite/gas/sh/sh64/immexpr1.s b/gas/testsuite/gas/sh/sh64/immexpr1.s deleted file mode 100644 index 31060a12d..0000000 --- a/gas/testsuite/gas/sh/sh64/immexpr1.s +++ /dev/null @@ -1,85 +0,0 @@ -! Check that immediate operands with expressions with differences between -! local symbols work for other than 16-bit operands. - - .text - .mode SHmedia -start: - addi r50,.Lab500 - .Lab1,r40 - addi r50,-(.Lab500 - .Lab1),r40 - addi r50,(.Lab1000 - .Lab1)/2,r40 - addi r50,(.Lab4000 - .Lab1)/8,r40 - addi r50,-(.Lab1000 - .Lab1)/2,r40 - addi r50,-(.Lab4000 - .Lab1)/8,r40 - addi r50,.Lab500 - .Lab1 + 1,r40 - addi r50,.Lab500 - .Lab1 + 2,r40 - addi r50,-(.Lab500 - .Lab1 + 1),r40 - addi r50,-(.Lab500 - .Lab1 + 2),r40 - ld.uw r30,.Lab1000 - .Lab1,r40 - ld.uw r30,.Lab500 - .Lab1 - 2,r40 - ld.uw r30,.Lab500 - .Lab1 + 2,r40 - ld.uw r50,(.Lab2000 - .Lab1)/2,r20 - ld.uw r30,-(.Lab1000 - .Lab1),r40 - ld.uw r30,-(.Lab500 - .Lab1 - 2),r40 - ld.uw r30,-(.Lab500 - .Lab1 + 2),r40 - ld.uw r50,-(.Lab2000 - .Lab1)/2,r20 - ld.l r50,.Lab2000 - .Lab1,r20 - ld.l r50,.Lab2000 - .Lab1 + 4,r20 - ld.l r50,.Lab2000 - .Lab1 - 4,r20 - ld.l r50,(.Lab4000 - .Lab1)/2,r20 - ld.l r50,(.Lab4000 - .Lab1)/2 + 4,r20 - ld.l r50,(.Lab4000 - .Lab1)/2 - 4,r20 - ld.l r50,-(.Lab2000 - .Lab1),r20 - ld.l r50,-(.Lab2000 - .Lab1 + 4),r20 - ld.l r50,-(.Lab2000 - .Lab1 - 4),r20 - ld.l r50,-(.Lab4000 - .Lab1)/2,r20 - ld.l r50,-(.Lab4000 - .Lab1)/2 + 4,r20 - ld.l r50,-(.Lab4000 - .Lab1)/2 - 4,r20 - nop - addi r50,.Lab500t - .Lab1t,r40 - addi r50,(.Lab1000t - .Lab1t)/2,r40 - addi r50,(.Lab4000t - .Lab1t)/8,r40 - addi r50,.Lab500t - .Lab1t + 1,r40 - addi r50,.Lab500t - .Lab1t + 2,r40 - ld.uw r30,.Lab1000t - .Lab1t,r40 - ld.uw r30,.Lab500t - .Lab1t - 2,r40 - ld.uw r30,.Lab500t - .Lab1t + 2,r40 - ld.uw r50,(.Lab2000t - .Lab1t)/2,r20 - ld.l r50,.Lab2000t - .Lab1t,r20 - ld.l r50,.Lab2000t - .Lab1t + 4,r20 - ld.l r50,.Lab2000t - .Lab1t - 4,r20 - addi r50,.Lab500t - .Lab1t,r40 - addi r50,-((.Lab1000t - .Lab1t)/2),r40 - addi r50,-((.Lab4000t - .Lab1t)/8),r40 - addi r50,-(.Lab500t - .Lab1t + 1),r40 - addi r50,-(.Lab500t - .Lab1t + 2),r40 - ld.uw r30,-(.Lab1000t - .Lab1t),r40 - ld.uw r30,-(.Lab500t - .Lab1t - 2),r40 - ld.uw r30,-(.Lab500t - .Lab1t + 2),r40 - ld.uw r50,-((.Lab2000t - .Lab1t)/2),r20 - ld.l r50,-(.Lab2000t - .Lab1t),r20 - ld.l r50,-(.Lab2000t - .Lab1t + 4),r20 - ld.l r50,-(.Lab2000t - .Lab1t - 4),r20 - nop - .long 0 -.Lab1t: - .zero 500,0 -.Lab500t: - .zero 500,0 -.Lab1000t: - .zero 1000,0 -.Lab2000t: - .zero 2000,0 -.Lab4000t: - - .data - .long 0 -.Lab1: - .zero 500,0 -.Lab500: - .zero 500,0 -.Lab1000: - .zero 1000,0 -.Lab2000: - .zero 2000,0 -.Lab4000: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/immexpr2.s b/gas/testsuite/gas/sh/sh64/immexpr2.s deleted file mode 100644 index 2eeda98..0000000 --- a/gas/testsuite/gas/sh/sh64/immexpr2.s +++ /dev/null @@ -1,16 +0,0 @@ -! This expression and the associated resolved-expression case is new for SH64. - - .data - .uaquad end-start - .uaquad .Lend-.Lstart - - .text - .mode SHmedia -start: - nop -end: -.Lstart: - nop - nop -.Lend: - diff --git a/gas/testsuite/gas/sh/sh64/immexpr32-1.d b/gas/testsuite/gas/sh/sh64/immexpr32-1.d deleted file mode 100644 index f27b602..0000000 --- a/gas/testsuite/gas/sh/sh64/immexpr32-1.d +++ /dev/null @@ -1,67 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#source: immexpr1.s -#name: Immediate resolved operands, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+4:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+8:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+c:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+10:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+14:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+18:[ ]+d327d680[ ]+addi r50,501,r40 -[ ]+1c:[ ]+d327da80[ ]+addi r50,502,r40 -[ ]+20:[ ]+d3282e80[ ]+addi r50,-501,r40 -[ ]+24:[ ]+d3282a80[ ]+addi r50,-502,r40 -[ ]+28:[ ]+b1e7d280[ ]+ld\.uw r30,1000,r40 -[ ]+2c:[ ]+b1e3e680[ ]+ld\.uw r30,498,r40 -[ ]+30:[ ]+b1e3ee80[ ]+ld\.uw r30,502,r40 -[ ]+34:[ ]+b327d140[ ]+ld\.uw r50,1000,r20 -[ ]+38:[ ]+b1e83280[ ]+ld\.uw r30,-1000,r40 -[ ]+3c:[ ]+b1ec1e80[ ]+ld\.uw r30,-498,r40 -[ ]+40:[ ]+b1ec1680[ ]+ld\.uw r30,-502,r40 -[ ]+44:[ ]+b3283140[ ]+ld\.uw r50,-1000,r20 -[ ]+48:[ ]+8b27d140[ ]+ld\.l r50,2000,r20 -[ ]+4c:[ ]+8b27d540[ ]+ld\.l r50,2004,r20 -[ ]+50:[ ]+8b27cd40[ ]+ld\.l r50,1996,r20 -[ ]+54:[ ]+8b27d140[ ]+ld\.l r50,2000,r20 -[ ]+58:[ ]+8b27d540[ ]+ld\.l r50,2004,r20 -[ ]+5c:[ ]+8b27cd40[ ]+ld\.l r50,1996,r20 -[ ]+60:[ ]+8b283140[ ]+ld\.l r50,-2000,r20 -[ ]+64:[ ]+8b282d40[ ]+ld\.l r50,-2004,r20 -[ ]+68:[ ]+8b283540[ ]+ld\.l r50,-1996,r20 -[ ]+6c:[ ]+8b283140[ ]+ld\.l r50,-2000,r20 -[ ]+70:[ ]+8b283540[ ]+ld\.l r50,-1996,r20 -[ ]+74:[ ]+8b282d40[ ]+ld\.l r50,-2004,r20 -[ ]+78:[ ]+6ff0fff0[ ]+nop -[ ]+7c:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+80:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+84:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+88:[ ]+d327d680[ ]+addi r50,501,r40 -[ ]+8c:[ ]+d327da80[ ]+addi r50,502,r40 -[ ]+90:[ ]+b1e7d280[ ]+ld\.uw r30,1000,r40 -[ ]+94:[ ]+b1e3e680[ ]+ld\.uw r30,498,r40 -[ ]+98:[ ]+b1e3ee80[ ]+ld\.uw r30,502,r40 -[ ]+9c:[ ]+b327d140[ ]+ld\.uw r50,1000,r20 -[ ]+a0:[ ]+8b27d140[ ]+ld\.l r50,2000,r20 -[ ]+a4:[ ]+8b27d540[ ]+ld\.l r50,2004,r20 -[ ]+a8:[ ]+8b27cd40[ ]+ld\.l r50,1996,r20 -[ ]+ac:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+b0:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+b4:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+b8:[ ]+d3282e80[ ]+addi r50,-501,r40 -[ ]+bc:[ ]+d3282a80[ ]+addi r50,-502,r40 -[ ]+c0:[ ]+b1e83280[ ]+ld\.uw r30,-1000,r40 -[ ]+c4:[ ]+b1ec1e80[ ]+ld\.uw r30,-498,r40 -[ ]+c8:[ ]+b1ec1680[ ]+ld\.uw r30,-502,r40 -[ ]+cc:[ ]+b3283140[ ]+ld\.uw r50,-1000,r20 -[ ]+d0:[ ]+8b283140[ ]+ld\.l r50,-2000,r20 -[ ]+d4:[ ]+8b282d40[ ]+ld\.l r50,-2004,r20 -[ ]+d8:[ ]+8b283540[ ]+ld\.l r50,-1996,r20 -[ ]+dc:[ ]+6ff0fff0[ ]+nop -[ ]\.\.\. diff --git a/gas/testsuite/gas/sh/sh64/immexpr32-2.d b/gas/testsuite/gas/sh/sh64/immexpr32-2.d deleted file mode 100644 index 3073ae9..0000000 --- a/gas/testsuite/gas/sh/sh64/immexpr32-2.d +++ /dev/null @@ -1,11 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: immexpr2.s -#name: Resolved 64-bit operand, 32-bit ABI. - -.*: file format .*-sh64.* - -Contents of section \.text: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 .* -Contents of section .data: - 0000 00000000 00000004 00000000 00000008 .* diff --git a/gas/testsuite/gas/sh/sh64/immexpr64-1.d b/gas/testsuite/gas/sh/sh64/immexpr64-1.d deleted file mode 100644 index 118bf02..0000000 --- a/gas/testsuite/gas/sh/sh64/immexpr64-1.d +++ /dev/null @@ -1,68 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: immexpr1.s -#name: Immediate resolved operands, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+4:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+8:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+c:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+10:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+14:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+18:[ ]+d327d680[ ]+addi r50,501,r40 -[ ]+1c:[ ]+d327da80[ ]+addi r50,502,r40 -[ ]+20:[ ]+d3282e80[ ]+addi r50,-501,r40 -[ ]+24:[ ]+d3282a80[ ]+addi r50,-502,r40 -[ ]+28:[ ]+b1e7d280[ ]+ld\.uw r30,1000,r40 -[ ]+2c:[ ]+b1e3e680[ ]+ld\.uw r30,498,r40 -[ ]+30:[ ]+b1e3ee80[ ]+ld\.uw r30,502,r40 -[ ]+34:[ ]+b327d140[ ]+ld\.uw r50,1000,r20 -[ ]+38:[ ]+b1e83280[ ]+ld\.uw r30,-1000,r40 -[ ]+3c:[ ]+b1ec1e80[ ]+ld\.uw r30,-498,r40 -[ ]+40:[ ]+b1ec1680[ ]+ld\.uw r30,-502,r40 -[ ]+44:[ ]+b3283140[ ]+ld\.uw r50,-1000,r20 -[ ]+48:[ ]+8b27d140[ ]+ld\.l r50,2000,r20 -[ ]+4c:[ ]+8b27d540[ ]+ld\.l r50,2004,r20 -[ ]+50:[ ]+8b27cd40[ ]+ld\.l r50,1996,r20 -[ ]+54:[ ]+8b27d140[ ]+ld\.l r50,2000,r20 -[ ]+58:[ ]+8b27d540[ ]+ld\.l r50,2004,r20 -[ ]+5c:[ ]+8b27cd40[ ]+ld\.l r50,1996,r20 -[ ]+60:[ ]+8b283140[ ]+ld\.l r50,-2000,r20 -[ ]+64:[ ]+8b282d40[ ]+ld\.l r50,-2004,r20 -[ ]+68:[ ]+8b283540[ ]+ld\.l r50,-1996,r20 -[ ]+6c:[ ]+8b283140[ ]+ld\.l r50,-2000,r20 -[ ]+70:[ ]+8b283540[ ]+ld\.l r50,-1996,r20 -[ ]+74:[ ]+8b282d40[ ]+ld\.l r50,-2004,r20 -[ ]+78:[ ]+6ff0fff0[ ]+nop -[ ]+7c:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+80:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+84:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+88:[ ]+d327d680[ ]+addi r50,501,r40 -[ ]+8c:[ ]+d327da80[ ]+addi r50,502,r40 -[ ]+90:[ ]+b1e7d280[ ]+ld\.uw r30,1000,r40 -[ ]+94:[ ]+b1e3e680[ ]+ld\.uw r30,498,r40 -[ ]+98:[ ]+b1e3ee80[ ]+ld\.uw r30,502,r40 -[ ]+9c:[ ]+b327d140[ ]+ld\.uw r50,1000,r20 -[ ]+a0:[ ]+8b27d140[ ]+ld\.l r50,2000,r20 -[ ]+a4:[ ]+8b27d540[ ]+ld\.l r50,2004,r20 -[ ]+a8:[ ]+8b27cd40[ ]+ld\.l r50,1996,r20 -[ ]+ac:[ ]+d327d280[ ]+addi r50,500,r40 -[ ]+b0:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+b4:[ ]+d3283280[ ]+addi r50,-500,r40 -[ ]+b8:[ ]+d3282e80[ ]+addi r50,-501,r40 -[ ]+bc:[ ]+d3282a80[ ]+addi r50,-502,r40 -[ ]+c0:[ ]+b1e83280[ ]+ld\.uw r30,-1000,r40 -[ ]+c4:[ ]+b1ec1e80[ ]+ld\.uw r30,-498,r40 -[ ]+c8:[ ]+b1ec1680[ ]+ld\.uw r30,-502,r40 -[ ]+cc:[ ]+b3283140[ ]+ld\.uw r50,-1000,r20 -[ ]+d0:[ ]+8b283140[ ]+ld\.l r50,-2000,r20 -[ ]+d4:[ ]+8b282d40[ ]+ld\.l r50,-2004,r20 -[ ]+d8:[ ]+8b283540[ ]+ld\.l r50,-1996,r20 -[ ]+dc:[ ]+6ff0fff0[ ]+nop -[ ]\.\.\. - diff --git a/gas/testsuite/gas/sh/sh64/immexpr64-2.d b/gas/testsuite/gas/sh/sh64/immexpr64-2.d deleted file mode 100644 index eff3faa..0000000 --- a/gas/testsuite/gas/sh/sh64/immexpr64-2.d +++ /dev/null @@ -1,11 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: immexpr2.s -#name: Resolved 64-bit operand, 64-bit ABI. - -.*: file format .*-sh64.* - -Contents of section \.text: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 .* -Contents of section .data: - 0000 00000000 00000004 00000000 00000008 .* diff --git a/gas/testsuite/gas/sh/sh64/lineno.d b/gas/testsuite/gas/sh/sh64/lineno.d deleted file mode 100644 index f2bb155..0000000 --- a/gas/testsuite/gas/sh/sh64/lineno.d +++ /dev/null @@ -1,19 +0,0 @@ -#as: --abi=32 --isa=shmedia -gdwarf2 -#objdump: -dl -#source: lineno.s -#name: Dwarf2 line numbers vs macro opcodes - -.*: file format .*-sh64.* - -Disassembly of section .text: - -[0]+ <start>: -start.*: -[ ]+0:[ ]+cc000410[ ]+movi[ ]+1,r1 -.*:4 -[ ]+4:[ ]+cc000410[ ]+movi[ ]+1,r1 -.*:5 -[ ]+8:[ ]+ca1a8010[ ]+shori[ ]+34464,r1 -[ ]+c:[ ]+6ff0fff0[ ]+nop[ ]* -.*:6 -[ ]+10:[ ]+6ff0fff0[ ]+nop[ ]* diff --git a/gas/testsuite/gas/sh/sh64/lineno.s b/gas/testsuite/gas/sh/sh64/lineno.s deleted file mode 100644 index 3804976..0000000 --- a/gas/testsuite/gas/sh/sh64/lineno.s +++ /dev/null @@ -1,7 +0,0 @@ - .text - -start: - movi 1,r1 - movi 100000,r1 - nop - nop diff --git a/gas/testsuite/gas/sh/sh64/localcom-1.d b/gas/testsuite/gas/sh/sh64/localcom-1.d deleted file mode 100644 index 83a91b0..0000000 --- a/gas/testsuite/gas/sh/sh64/localcom-1.d +++ /dev/null @@ -1,30 +0,0 @@ -#as: --abi=32 -#objdump: -srt -#source: localcom-1.s -#name: Datalabel on local comm symbol and equated local comm symbol - -.*: file format .*-sh64.* - -SYMBOL TABLE: -0+0 l d \.text 0+ (|\.text) -0+0 l d \.data 0+ (|\.data) -0+0 l d \.bss 0+ (|\.bss) -0+0 l \.text 0+ start -0+c l O \.bss 0+4 dd -0+c l O \.bss 0+4 d -0+4 l O \.bss 0+4 b -0+0 l O \.bss 0+4 a -0+8 l O \.bss 0+4 c - - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+10 R_SH_DIR32 \.bss -0+14 R_SH_DIR32 \.bss -0+18 R_SH_DIR32 \.bss - - -Contents of section \.text: - 0000 00090009 00090009 00090009 00090009 .* - 0010 00000004 00000004 0000000c 12340009 .* - diff --git a/gas/testsuite/gas/sh/sh64/localcom-1.s b/gas/testsuite/gas/sh/sh64/localcom-1.s deleted file mode 100644 index 53295d6..0000000 --- a/gas/testsuite/gas/sh/sh64/localcom-1.s +++ /dev/null @@ -1,26 +0,0 @@ -! The implicit equation from a datalabel to the main symbol was incorrect -! at one time. This is reasonably close to the original testcase. - - .mode SHcompact -start: - nop - nop - nop - nop - nop - nop - nop - nop - .set dd,d - .long b - .long datalabel b - .long datalabel dd - .word 0x1234 - .local a - .comm a,4,4 - .local b - .comm b,4,4 - .local c - .comm c,4,4 - .local d - .comm d,4,4 diff --git a/gas/testsuite/gas/sh/sh64/mix-1.d b/gas/testsuite/gas/sh/sh64/mix-1.d deleted file mode 100644 index 45fbefb..0000000 --- a/gas/testsuite/gas/sh/sh64/mix-1.d +++ /dev/null @@ -1,42 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#name: Mixed-ISA objects. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+89 01 bt 6 <forw> -[ ]+2:[ ]+c7 00[ ]+mova 4 <start2>,r0 - -0+4 <start2>: -[ ]+4:[ ]+00[ ]+09 nop - -0+6 <forw>: -[ ]+6:[ ]+00[ ]+09 nop -Disassembly of section \.text\.media: - -0+ <mediacode>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text-0x2 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_LOW16_PCREL \.text\+0x2 -[ ]+8:[ ]+6bf56640[ ]+ptrel/l r25,tr4 -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text-0x4 -[ ]+10:[ ]+c8000190[ ]+shori 0,r25 -[ ]+10:[ ]+R_SH_IMM_LOW16_PCREL \.text -[ ]+14:[ ]+6bf56650[ ]+ptrel/l r25,tr5 - -0+18 <mediacode2>: -[ ]+18:[ ]+cc000360[ ]+movi 0,r54 -[ ]+18:[ ]+R_SH_IMM_MEDLOW16 \.text\+0x4 -[ ]+1c:[ ]+c8000360[ ]+shori 0,r54 -[ ]+1c:[ ]+R_SH_IMM_LOW16 \.text\+0x4 -[ ]+20:[ ]+cc0002d0[ ]+movi 0,r45 -[ ]+20:[ ]+R_SH_IMM_MEDLOW16 \.text\.media\+0x19 -[ ]+24:[ ]+c80002d0[ ]+shori 0,r45 -[ ]+24:[ ]+R_SH_IMM_LOW16 \.text\.media\+0x19 -[ ]+28:[ ]+ebfff270[ ]+pta/l 18 <mediacode2>,tr7 -[ ]+2c:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/mix-1.s b/gas/testsuite/gas/sh/sh64/mix-1.s deleted file mode 100644 index 03b96eb..0000000 --- a/gas/testsuite/gas/sh/sh64/mix-1.s +++ /dev/null @@ -1,21 +0,0 @@ -! Check mixed-mode objects; different sections holding different ISA:s. - .mode SHcompact - .text -start: - bt forw - mova start2,r0 -start2: - nop -forw: - nop - - .section .text.media,"ax" - .mode SHmedia -mediacode: - ptb forw,tr4 - pt start2,tr5 -mediacode2: - movi start2,r54 - movi mediacode2,r45 - pta mediacode2,tr7 - nop diff --git a/gas/testsuite/gas/sh/sh64/mix-noexp-1.d b/gas/testsuite/gas/sh/sh64/mix-noexp-1.d deleted file mode 100644 index 9759f66..0000000 --- a/gas/testsuite/gas/sh/sh64/mix-noexp-1.d +++ /dev/null @@ -1,33 +0,0 @@ -#as: --abi=32 -no-expand -#objdump: -dr -#source: mix-1.s -#name: Mixed-ISA objects with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+89 01 bt 6 <forw> -[ ]+2:[ ]+c7 00[ ]+mova 4 <start2>,r0 - -0+4 <start2>: -[ ]+4:[ ]+00[ ]+09 nop - -0+6 <forw>: -[ ]+6:[ ]+00[ ]+09 nop -Disassembly of section \.text\.media: - -0+ <mediacode>: -[ ]+0:[ ]+ec000640[ ]+ptb/l 4 <mediacode\+0x4>,tr4 -[ ]+0:[ ]+R_SH_PT_16[ ]+\.text\+0x6 -[ ]+4:[ ]+e8000250[ ]+pta/l 4 <mediacode\+0x4>,tr5 -[ ]+4:[ ]+R_SH_PT_16[ ]+\.text\+0x4 - -0+8 <mediacode2>: -[ ]+8:[ ]+cc000360[ ]+movi 0,r54 -[ ]+8:[ ]+R_SH_IMMS16[ ]+\.text\+0x4 -[ ]+c:[ ]+cc0002d0[ ]+movi 0,r45 -[ ]+c:[ ]+R_SH_IMMS16[ ]+\.text\.media\+0x9 -[ ]+10:[ ]+ebfffa70[ ]+pta/l 8 <mediacode2>,tr7 -[ ]+14:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/movi-1.s b/gas/testsuite/gas/sh/sh64/movi-1.s deleted file mode 100644 index 7268548..0000000 --- a/gas/testsuite/gas/sh/sh64/movi-1.s +++ /dev/null @@ -1,20 +0,0 @@ -! Check MOVI expansion. This one for the 32-bit subset. - .text -start: - movi externalsym + 123,r3 - movi 65535,r3 - movi 65536,r3 - movi 65535 << 16,r3 - movi 32767,r3 - movi 32768,r3 - movi 32767 << 16,r3 - movi -32768,r3 - movi -32769,r3 - movi -32768 << 16,r3 - movi localsym + 73,r4 - movi forwardsym - 42,r4 - .set forwardsym,47 - - .data -localsym: - .long 1 diff --git a/gas/testsuite/gas/sh/sh64/movi-2.s b/gas/testsuite/gas/sh/sh64/movi-2.s deleted file mode 100644 index 222cec6..0000000 --- a/gas/testsuite/gas/sh/sh64/movi-2.s +++ /dev/null @@ -1,28 +0,0 @@ -! Check MOVI expansion of local symbols that should get segment-relative -! relocations. - .text -start: - movi forw + 32,r33 - movi forwdata + 40,r54 - movi forwothertext + 44,r15 -forw: - movi forwotherdata + 48,r25 - - .data - .long 0 ! To get a non-zero segment offset for "forwdata". -forwdata: - .long 0 - - .section .text.other,"ax" -forwdummylabel: ! Needed to hang a marker that this section is SHmedia. - nop - nop -forwothertext: - nop - - .section .data.other,"aw" - .long 0 - .long 0 -forwotherdata: - .long 0 - diff --git a/gas/testsuite/gas/sh/sh64/movi-3.d b/gas/testsuite/gas/sh/sh64/movi-3.d deleted file mode 100644 index 2cd4a71..0000000 --- a/gas/testsuite/gas/sh/sh64/movi-3.d +++ /dev/null @@ -1,18 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: movi-3.s -#name: Assembler PC-rel resolved negative MOVI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cef68040[ ]+movi -16992,r4 -[ ]+4:[ ]+cfffc050[ ]+movi -16,r5 -[ ]+8:[ ]+cffffc60[ ]+movi -1,r6 -[ ]+c:[ ]+cffffc70[ ]+movi -1,r7 -[ ]+10:[ ]+cffffc80[ ]+movi -1,r8 -[ ]+14:[ ]+cbfffc80[ ]+shori 65535,r8 -[ ]+18:[ ]+cbffc080[ ]+shori 65520,r8 -[ ]+1c:[ ]+caf68080[ ]+shori 48544,r8 diff --git a/gas/testsuite/gas/sh/sh64/movi-3.s b/gas/testsuite/gas/sh/sh64/movi-3.s deleted file mode 100644 index b301001..0000000 --- a/gas/testsuite/gas/sh/sh64/movi-3.s +++ /dev/null @@ -1,10 +0,0 @@ -! There was a bug with negative pc-relative numbers. - .mode SHmedia - .text -start: - movi (start - 1000000 - end) & 65535,r4 - movi ((start - 1000000 - end) >> 16) & 65535,r5 - movi ((start - 1000000 - end) >> 32) & 65535,r6 - movi ((start - 1000000 - end) >> 48) & 65535,r7 - movi (start - 1000000 - end),r8 -end: diff --git a/gas/testsuite/gas/sh/sh64/movi32-1.d b/gas/testsuite/gas/sh/sh64/movi32-1.d deleted file mode 100644 index df515c5..0000000 --- a/gas/testsuite/gas/sh/sh64/movi32-1.d +++ /dev/null @@ -1,35 +0,0 @@ -#as: --isa=shmedia --abi=32 -#objdump: -dr -#source: movi-1.s -#name: MOVI expansion, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000030[ ]+movi 0,r3 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16 externalsym\+0x7b -[ ]+4:[ ]+c8000030[ ]+shori 0,r3 -[ ]+4:[ ]+R_SH_IMM_LOW16 externalsym\+0x7b -[ ]+8:[ ]+cc000030[ ]+movi 0,r3 -[ ]+c:[ ]+cbfffc30[ ]+shori 65535,r3 -[ ]+10:[ ]+cc000430[ ]+movi 1,r3 -[ ]+14:[ ]+c8000030[ ]+shori 0,r3 -[ ]+18:[ ]+cffffc30[ ]+movi -1,r3 -[ ]+1c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+20:[ ]+cdfffc30[ ]+movi 32767,r3 -[ ]+24:[ ]+cc000030[ ]+movi 0,r3 -[ ]+28:[ ]+ca000030[ ]+shori 32768,r3 -[ ]+2c:[ ]+cdfffc30[ ]+movi 32767,r3 -[ ]+30:[ ]+c8000030[ ]+shori 0,r3 -[ ]+34:[ ]+ce000030[ ]+movi -32768,r3 -[ ]+38:[ ]+cffffc30[ ]+movi -1,r3 -[ ]+3c:[ ]+c9fffc30[ ]+shori 32767,r3 -[ ]+40:[ ]+ce000030[ ]+movi -32768,r3 -[ ]+44:[ ]+c8000030[ ]+shori 0,r3 -[ ]+48:[ ]+cc000040[ ]+movi 0,r4 -[ ]+48:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x49 -[ ]+4c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+4c:[ ]+R_SH_IMM_LOW16 \.data\+0x49 -[ ]+50:[ ]+cc001440[ ]+movi 5,r4 diff --git a/gas/testsuite/gas/sh/sh64/movi32-2.d b/gas/testsuite/gas/sh/sh64/movi32-2.d deleted file mode 100644 index a539c23..0000000 --- a/gas/testsuite/gas/sh/sh64/movi32-2.d +++ /dev/null @@ -1,36 +0,0 @@ -#as: --isa=shmedia --abi=32 -#objdump: -dr -#source: movi-2.s -#name: MOVI expansion of local symbols with relocs, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+cc000210[ ]+movi 0,r33 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16 \.text\+0x39 -[ ]+4:[ ]+c8000210[ ]+shori 0,r33 -[ ]+4:[ ]+R_SH_IMM_LOW16 \.text\+0x39 -[ ]+8:[ ]+cc000360[ ]+movi 0,r54 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x2c -[ ]+c:[ ]+c8000360[ ]+shori 0,r54 -[ ]+c:[ ]+R_SH_IMM_LOW16 \.data\+0x2c -[ ]+10:[ ]+cc0000f0[ ]+movi 0,r15 -[ ]+10:[ ]+R_SH_IMM_MEDLOW16 \.text\.other\+0x35 -[ ]+14:[ ]+c80000f0[ ]+shori 0,r15 -[ ]+14:[ ]+R_SH_IMM_LOW16 \.text\.other\+0x35 - -0+18 <forw>: -[ ]+18:[ ]+cc000190[ ]+movi 0,r25 -[ ]+18:[ ]+R_SH_IMM_MEDLOW16 \.data\.other\+0x38 -[ ]+1c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+1c:[ ]+R_SH_IMM_LOW16 \.data\.other\+0x38 -Disassembly of section \.text\.other: - -0+ <forwdummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <forwothertext>: -[ ]+8:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/movi32-noexp-2.d b/gas/testsuite/gas/sh/sh64/movi32-noexp-2.d deleted file mode 100644 index 1771bca..0000000 --- a/gas/testsuite/gas/sh/sh64/movi32-noexp-2.d +++ /dev/null @@ -1,28 +0,0 @@ -#as: --isa=shmedia --abi=32 -no-expand -#objdump: -dr -#source: movi-2.s -#name: MOVI non-expansion of local symbols with relocs, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+cc000210[ ]+movi 0,r33 -[ ]+0:[ ]+R_SH_IMMS16 \.text\+0x2d -[ ]+4:[ ]+cc000360[ ]+movi 0,r54 -[ ]+4:[ ]+R_SH_IMMS16 \.data\+0x2c -[ ]+8:[ ]+cc0000f0[ ]+movi 0,r15 -[ ]+8:[ ]+R_SH_IMMS16 \.text\.other\+0x35 - -0+c <forw>: -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMMS16 \.data\.other\+0x38 -Disassembly of section \.text\.other: - -0+ <forwdummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <forwothertext>: -[ ]+8:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/movi64-1.d b/gas/testsuite/gas/sh/sh64/movi64-1.d deleted file mode 100644 index 680b803..0000000 --- a/gas/testsuite/gas/sh/sh64/movi64-1.d +++ /dev/null @@ -1,44 +0,0 @@ -#as: --isa=shmedia --abi=64 -#objdump: -dr -#source: movi-1.s -#name: MOVI expansion, 64-bit ABI, 32-bit subset. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000030[ ]+movi 0,r3 -[ ]+0:[ ]+R_SH_IMM_HI16 externalsym\+0x7b -[ ]+4:[ ]+c8000030[ ]+shori 0,r3 -[ ]+4:[ ]+R_SH_IMM_MEDHI16 externalsym\+0x7b -[ ]+8:[ ]+c8000030[ ]+shori 0,r3 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16 externalsym\+0x7b -[ ]+c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+c:[ ]+R_SH_IMM_LOW16 externalsym\+0x7b -[ ]+10:[ ]+cc000030[ ]+movi 0,r3 -[ ]+14:[ ]+cbfffc30[ ]+shori 65535,r3 -[ ]+18:[ ]+cc000430[ ]+movi 1,r3 -[ ]+1c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+20:[ ]+cc000030[ ]+movi 0,r3 -[ ]+24:[ ]+cbfffc30[ ]+shori 65535,r3 -[ ]+28:[ ]+c8000030[ ]+shori 0,r3 -[ ]+2c:[ ]+cdfffc30[ ]+movi 32767,r3 -[ ]+30:[ ]+cc000030[ ]+movi 0,r3 -[ ]+34:[ ]+ca000030[ ]+shori 32768,r3 -[ ]+38:[ ]+cdfffc30[ ]+movi 32767,r3 -[ ]+3c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+40:[ ]+ce000030[ ]+movi -32768,r3 -[ ]+44:[ ]+cffffc30[ ]+movi -1,r3 -[ ]+48:[ ]+c9fffc30[ ]+shori 32767,r3 -[ ]+4c:[ ]+ce000030[ ]+movi -32768,r3 -[ ]+50:[ ]+c8000030[ ]+shori 0,r3 -[ ]+54:[ ]+cc000040[ ]+movi 0,r4 -[ ]+54:[ ]+R_SH_IMM_HI16 \.data\+0x49 -[ ]+58:[ ]+c8000040[ ]+shori 0,r4 -[ ]+58:[ ]+R_SH_IMM_MEDHI16 \.data\+0x49 -[ ]+5c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+5c:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x49 -[ ]+60:[ ]+c8000040[ ]+shori 0,r4 -[ ]+60:[ ]+R_SH_IMM_LOW16 \.data\+0x49 -[ ]+64:[ ]+cc001440[ ]+movi 5,r4 diff --git a/gas/testsuite/gas/sh/sh64/movi64-2.d b/gas/testsuite/gas/sh/sh64/movi64-2.d deleted file mode 100644 index 980abfa..0000000 --- a/gas/testsuite/gas/sh/sh64/movi64-2.d +++ /dev/null @@ -1,30 +0,0 @@ -#as: --isa=shmedia --abi=64 -#objdump: -dr -#name: MOVI expansion, 64-bit ABI, 64-bit subset. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000430[ ]+movi 1,r3 -[ ]+4:[ ]+c8000030[ ]+shori 0,r3 -[ ]+8:[ ]+c8000030[ ]+shori 0,r3 -[ ]+c:[ ]+cffffc30[ ]+movi -1,r3 -[ ]+10:[ ]+c9fffc30[ ]+shori 32767,r3 -[ ]+14:[ ]+c8000030[ ]+shori 0,r3 -[ ]+18:[ ]+cc000030[ ]+movi 0,r3 -[ ]+1c:[ ]+ca000030[ ]+shori 32768,r3 -[ ]+20:[ ]+c8000030[ ]+shori 0,r3 -[ ]+24:[ ]+cdfffc30[ ]+movi 32767,r3 -[ ]+28:[ ]+c8000030[ ]+shori 0,r3 -[ ]+2c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+30:[ ]+c8000030[ ]+shori 0,r3 -[ ]+34:[ ]+ce000030[ ]+movi -32768,r3 -[ ]+38:[ ]+c8000030[ ]+shori 0,r3 -[ ]+3c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+40:[ ]+c8000030[ ]+shori 0,r3 -[ ]+44:[ ]+ce000030[ ]+movi -32768,r3 -[ ]+48:[ ]+c8000030[ ]+shori 0,r3 -[ ]+4c:[ ]+c8000030[ ]+shori 0,r3 -[ ]+50:[ ]+c8000030[ ]+shori 0,r3 diff --git a/gas/testsuite/gas/sh/sh64/movi64-2.s b/gas/testsuite/gas/sh/sh64/movi64-2.s deleted file mode 100644 index 607e17f..0000000 --- a/gas/testsuite/gas/sh/sh64/movi64-2.s +++ /dev/null @@ -1,10 +0,0 @@ -! Check MOVI expansion. This one for the 64-bit ABI only. - .text -start: - movi 65536 << 16,r3 - movi -32769 << 16,r3 - movi 32768 << 16,r3 - movi 32767 << 48,r3 - movi 32768 << 48,r3 ! Perhaps a warning on this or the next, - movi -32768 << 48,r3 ! for being out of range? - diff --git a/gas/testsuite/gas/sh/sh64/movi64-3.d b/gas/testsuite/gas/sh/sh64/movi64-3.d deleted file mode 100644 index 94236ec..0000000 --- a/gas/testsuite/gas/sh/sh64/movi64-3.d +++ /dev/null @@ -1,52 +0,0 @@ -#as: --isa=shmedia --abi=64 -#objdump: -dr -#source: movi-2.s -#name: MOVI expansion of local symbols with relocs, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+cc000210[ ]+movi 0,r33 -[ ]+0:[ ]+R_SH_IMM_HI16 \.text\+0x51 -[ ]+4:[ ]+c8000210[ ]+shori 0,r33 -[ ]+4:[ ]+R_SH_IMM_MEDHI16 \.text\+0x51 -[ ]+8:[ ]+c8000210[ ]+shori 0,r33 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16 \.text\+0x51 -[ ]+c:[ ]+c8000210[ ]+shori 0,r33 -[ ]+c:[ ]+R_SH_IMM_LOW16 \.text\+0x51 -[ ]+10:[ ]+cc000360[ ]+movi 0,r54 -[ ]+10:[ ]+R_SH_IMM_HI16 \.data\+0x2c -[ ]+14:[ ]+c8000360[ ]+shori 0,r54 -[ ]+14:[ ]+R_SH_IMM_MEDHI16 \.data\+0x2c -[ ]+18:[ ]+c8000360[ ]+shori 0,r54 -[ ]+18:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x2c -[ ]+1c:[ ]+c8000360[ ]+shori 0,r54 -[ ]+1c:[ ]+R_SH_IMM_LOW16 \.data\+0x2c -[ ]+20:[ ]+cc0000f0[ ]+movi 0,r15 -[ ]+20:[ ]+R_SH_IMM_HI16 \.text\.other\+0x35 -[ ]+24:[ ]+c80000f0[ ]+shori 0,r15 -[ ]+24:[ ]+R_SH_IMM_MEDHI16 \.text\.other\+0x35 -[ ]+28:[ ]+c80000f0[ ]+shori 0,r15 -[ ]+28:[ ]+R_SH_IMM_MEDLOW16 \.text\.other\+0x35 -[ ]+2c:[ ]+c80000f0[ ]+shori 0,r15 -[ ]+2c:[ ]+R_SH_IMM_LOW16 \.text\.other\+0x35 - -0+30 <forw>: -[ ]+30:[ ]+cc000190[ ]+movi 0,r25 -[ ]+30:[ ]+R_SH_IMM_HI16 \.data\.other\+0x38 -[ ]+34:[ ]+c8000190[ ]+shori 0,r25 -[ ]+34:[ ]+R_SH_IMM_MEDHI16 \.data\.other\+0x38 -[ ]+38:[ ]+c8000190[ ]+shori 0,r25 -[ ]+38:[ ]+R_SH_IMM_MEDLOW16 \.data\.other\+0x38 -[ ]+3c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+3c:[ ]+R_SH_IMM_LOW16 \.data\.other\+0x38 -Disassembly of section \.text\.other: - -0+ <forwdummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <forwothertext>: -[ ]+8:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/movi64-noexp-2.d b/gas/testsuite/gas/sh/sh64/movi64-noexp-2.d deleted file mode 100644 index 62fc24e..0000000 --- a/gas/testsuite/gas/sh/sh64/movi64-noexp-2.d +++ /dev/null @@ -1,28 +0,0 @@ -#as: --isa=shmedia --abi=64 -no-expand -#objdump: -dr -#source: movi-2.s -#name: MOVI non-expansion of local symbols with relocs, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+cc000210[ ]+movi 0,r33 -[ ]+0:[ ]+R_SH_IMMS16 \.text\+0x2d -[ ]+4:[ ]+cc000360[ ]+movi 0,r54 -[ ]+4:[ ]+R_SH_IMMS16 \.data\+0x2c -[ ]+8:[ ]+cc0000f0[ ]+movi 0,r15 -[ ]+8:[ ]+R_SH_IMMS16 \.text\.other\+0x35 - -0+c <forw>: -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMMS16 \.data\.other\+0x38 -Disassembly of section \.text\.other: - -0+ <forwdummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <forwothertext>: -[ ]+8:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt-1.d b/gas/testsuite/gas/sh/sh64/pt-1.d deleted file mode 100644 index 1040f8b..0000000 --- a/gas/testsuite/gas/sh/sh64/pt-1.d +++ /dev/null @@ -1,26 +0,0 @@ -#as: --isa=shmedia -#objdump: -dr -#name: Basic SHmedia PT and PTA instructions. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -[0]+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -[0]+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+e8000a70[ ]+pta/l 18 <start2>,tr7 -[ ]+14:[ ]+6ff0fff0[ ]+nop - -[0]+18 <start2>: -[ ]+18:[ ]+e8000a40[ ]+pta/l 20 <start3>,tr4 -[ ]+1c:[ ]+6ff0fff0[ ]+nop - -[0]+20 <start3>: -[ ]+20:[ ]+ebffea30[ ]+pta/l 8 <start4>,tr3 -[ ]+24:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt-1.s b/gas/testsuite/gas/sh/sh64/pt-1.s deleted file mode 100644 index cf5cd70..0000000 --- a/gas/testsuite/gas/sh/sh64/pt-1.s +++ /dev/null @@ -1,17 +0,0 @@ -! Check simple use of PT/PTA. - .text -start: - nop -start1: - nop -start4: - pt start1,tr5 - nop - pt start2,tr7 - nop -start2: - pta start3,tr4 - nop -start3: - pta start4,tr3 - nop diff --git a/gas/testsuite/gas/sh/sh64/pt-2.s b/gas/testsuite/gas/sh/sh64/pt-2.s deleted file mode 100644 index b9b6597..0000000 --- a/gas/testsuite/gas/sh/sh64/pt-2.s +++ /dev/null @@ -1,22 +0,0 @@ -! Check inter-segment pt and pta - .text -start: - nop -start1: - nop -start4: - pt start1,tr5 - nop - - pt start2,tr7 - nop - - .section .text.other,"ax" -dummylabel: ! Needed to hang a marker that this is SHmedia. - nop -start2: - pta start3,tr4 - nop -start3: - pta start4,tr3 - nop diff --git a/gas/testsuite/gas/sh/sh64/pt-noexp-1.d b/gas/testsuite/gas/sh/sh64/pt-noexp-1.d deleted file mode 100644 index 5050763..0000000 --- a/gas/testsuite/gas/sh/sh64/pt-noexp-1.d +++ /dev/null @@ -1,27 +0,0 @@ -#as: --isa=shmedia -no-expand -#objdump: -dr -#source: pt-1.s -#name: Basic SHmedia PT and PTA instructions with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -[0]+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -[0]+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+e8000a70[ ]+pta/l 18 <start2>,tr7 -[ ]+14:[ ]+6ff0fff0[ ]+nop - -[0]+18 <start2>: -[ ]+18:[ ]+e8000a40[ ]+pta/l 20 <start3>,tr4 -[ ]+1c:[ ]+6ff0fff0[ ]+nop - -[0]+20 <start3>: -[ ]+20:[ ]+ebffea30[ ]+pta/l 8 <start4>,tr3 -[ ]+24:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt32-1.d b/gas/testsuite/gas/sh/sh64/pt32-1.d deleted file mode 100644 index 0b738a7..0000000 --- a/gas/testsuite/gas/sh/sh64/pt32-1.d +++ /dev/null @@ -1,39 +0,0 @@ -#as: --isa=shmedia -abi=32 -#objdump: -dr -#source: pt-2.s -#name: Inter-segment PT, 32-bit. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -0+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+cc000190[ ]+movi 0,r25 -[ ]+10:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text\.other-0x3 -[ ]+14:[ ]+c8000190[ ]+shori 0,r25 -[ ]+14:[ ]+R_SH_IMM_LOW16_PCREL \.text\.other\+0x1 -[ ]+18:[ ]+6bf56670[ ]+ptrel/l r25,tr7 -[ ]+1c:[ ]+6ff0fff0[ ]+nop -Disassembly of section \.text\.other: - -0+ <dummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+e8000a40[ ]+pta/l c <start3>,tr4 -[ ]+8:[ ]+6ff0fff0[ ]+nop - -0+c <start3>: -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text\+0x1 -[ ]+10:[ ]+c8000190[ ]+shori 0,r25 -[ ]+10:[ ]+R_SH_IMM_LOW16_PCREL \.text\+0x5 -[ ]+14:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+18:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt32-noexp-2.d b/gas/testsuite/gas/sh/sh64/pt32-noexp-2.d deleted file mode 100644 index 54bf4c9..0000000 --- a/gas/testsuite/gas/sh/sh64/pt32-noexp-2.d +++ /dev/null @@ -1,34 +0,0 @@ -#as: --isa=shmedia -abi=32 -no-expand -#objdump: -dr -#source: pt-2.s -#name: Inter-segment PT, 32-bit with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -0+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+e8000270[ ]+pta/l 10 <start4\+0x8>,tr7 -[ ]+10:[ ]+R_SH_PT_16 \.text\.other\+0x5 -[ ]+14:[ ]+6ff0fff0[ ]+nop - -Disassembly of section \.text\.other: - -0+ <dummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+e8000a40[ ]+pta/l c <start3>,tr4 -[ ]+8:[ ]+6ff0fff0[ ]+nop - -0+c <start3>: -[ ]+c:[ ]+e8000630[ ]+pta/l 10 <start3\+0x4>,tr3 -[ ]+c:[ ]R_SH_PT_16 \.text\+0x9 -[ ]+10:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt64-1.d b/gas/testsuite/gas/sh/sh64/pt64-1.d deleted file mode 100644 index b0b61ca..0000000 --- a/gas/testsuite/gas/sh/sh64/pt64-1.d +++ /dev/null @@ -1,47 +0,0 @@ -#as: --isa=shmedia -abi=64 -#objdump: -dr -#source: pt-2.s -#name: Inter-segment PT, 64-bit. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -0+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+cc000190[ ]+movi 0,r25 -[ ]+10:[ ]+R_SH_IMM_HI16_PCREL \.text\.other-0xb -[ ]+14:[ ]+c8000190[ ]+shori 0,r25 -[ ]+14:[ ]+R_SH_IMM_MEDHI16_PCREL \.text\.other-0x7 -[ ]+18:[ ]+c8000190[ ]+shori 0,r25 -[ ]+18:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text\.other-0x3 -[ ]+1c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+1c:[ ]+R_SH_IMM_LOW16_PCREL \.text\.other\+0x1 -[ ]+20:[ ]+6bf56670[ ]+ptrel/l r25,tr7 -[ ]+24:[ ]+6ff0fff0[ ]+nop -Disassembly of section \.text\.other: - -0+ <dummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+e8000a40[ ]+pta/l c <start3>,tr4 -[ ]+8:[ ]+6ff0fff0[ ]+nop - -0+c <start3>: -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMM_HI16_PCREL \.text-0x7 -[ ]+10:[ ]+c8000190[ ]+shori 0,r25 -[ ]+10:[ ]+R_SH_IMM_MEDHI16_PCREL \.text-0x3 -[ ]+14:[ ]+c8000190[ ]+shori 0,r25 -[ ]+14:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text\+0x1 -[ ]+18:[ ]+c8000190[ ]+shori 0,r25 -[ ]+18:[ ]+R_SH_IMM_LOW16_PCREL \.text\+0x5 -[ ]+1c:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+20:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt64-32-1.d b/gas/testsuite/gas/sh/sh64/pt64-32-1.d deleted file mode 100644 index 1094516..0000000 --- a/gas/testsuite/gas/sh/sh64/pt64-32-1.d +++ /dev/null @@ -1,27 +0,0 @@ -#as: --isa=shmedia --abi=64 -expand-pt32 -#objdump: -dr -#source: pt-1.s -#name: Basic SHmedia PT and PTA instructions with -expand-pt32. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -[0]+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -[0]+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+e8000a70[ ]+pta/l 18 <start2>,tr7 -[ ]+14:[ ]+6ff0fff0[ ]+nop - -[0]+18 <start2>: -[ ]+18:[ ]+e8000a40[ ]+pta/l 20 <start3>,tr4 -[ ]+1c:[ ]+6ff0fff0[ ]+nop - -[0]+20 <start3>: -[ ]+20:[ ]+ebffea30[ ]+pta/l 8 <start4>,tr3 -[ ]+24:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt64-32-2.d b/gas/testsuite/gas/sh/sh64/pt64-32-2.d deleted file mode 100644 index 096f4eb..0000000 --- a/gas/testsuite/gas/sh/sh64/pt64-32-2.d +++ /dev/null @@ -1,39 +0,0 @@ -#as: --isa=shmedia -abi=64 -expand-pt32 -#objdump: -dr -#source: pt-2.s -#name: Inter-segment PT, 64-bit with -expand-pt32. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -0+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+cc000190[ ]+movi 0,r25 -[ ]+10:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text\.other-0x3 -[ ]+14:[ ]+c8000190[ ]+shori 0,r25 -[ ]+14:[ ]+R_SH_IMM_LOW16_PCREL \.text\.other\+0x1 -[ ]+18:[ ]+6bf56670[ ]+ptrel/l r25,tr7 -[ ]+1c:[ ]+6ff0fff0[ ]+nop -Disassembly of section \.text\.other: - -0+ <dummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+e8000a40[ ]+pta/l c <start3>,tr4 -[ ]+8:[ ]+6ff0fff0[ ]+nop - -0+c <start3>: -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMM_MEDLOW16_PCREL \.text\+0x1 -[ ]+10:[ ]+c8000190[ ]+shori 0,r25 -[ ]+10:[ ]+R_SH_IMM_LOW16_PCREL \.text\+0x5 -[ ]+14:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+18:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/pt64-noexp-2.d b/gas/testsuite/gas/sh/sh64/pt64-noexp-2.d deleted file mode 100644 index 7a8d1d5..0000000 --- a/gas/testsuite/gas/sh/sh64/pt64-noexp-2.d +++ /dev/null @@ -1,34 +0,0 @@ -#as: --isa=shmedia -abi=64 -no-expand -#objdump: -dr -#source: pt-2.s -#name: Inter-segment PT, 64-bit with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: -0+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start1>: -[ ]+4:[ ]+6ff0fff0[ ]+nop - -0+8 <start4>: -[ ]+8:[ ]+ebfffe50[ ]+pta/l 4 <start1>,tr5 -[ ]+c:[ ]+6ff0fff0[ ]+nop -[ ]+10:[ ]+e8000270[ ]+pta/l 10 <start4\+0x8>,tr7 -[ ]+10:[ ]+R_SH_PT_16 \.text\.other\+0x5 -[ ]+14:[ ]+6ff0fff0[ ]+nop - -Disassembly of section \.text\.other: - -0+ <dummylabel>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+e8000a40[ ]+pta/l c <start3>,tr4 -[ ]+8:[ ]+6ff0fff0[ ]+nop - -0+c <start3>: -[ ]+c:[ ]+e8000630[ ]+pta/l 10 <start3\+0x4>,tr3 -[ ]+c:[ ]R_SH_PT_16 \.text\+0x9 -[ ]+10:[ ]+6ff0fff0[ ]+nop diff --git a/gas/testsuite/gas/sh/sh64/ptc-1.s b/gas/testsuite/gas/sh/sh64/ptc-1.s deleted file mode 100644 index d6199fd..0000000 --- a/gas/testsuite/gas/sh/sh64/ptc-1.s +++ /dev/null @@ -1,5 +0,0 @@ -! Check that simple constants get expected results. - .mode SHmedia - .text -start: - pta 0x100, tr1 diff --git a/gas/testsuite/gas/sh/sh64/ptc32-1.d b/gas/testsuite/gas/sh/sh64/ptc32-1.d deleted file mode 100644 index 579fadb..0000000 --- a/gas/testsuite/gas/sh/sh64/ptc32-1.d +++ /dev/null @@ -1,15 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#source: ptc-1.s -#name: PT constant, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16_PCREL \*ABS\*\+0xf8 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_LOW16_PCREL \*ABS\*\+0xfc -[ ]+8:[ ]+6bf56610[ ]+ptrel/l r25,tr1 diff --git a/gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d b/gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d deleted file mode 100644 index 977277d..0000000 --- a/gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d +++ /dev/null @@ -1,12 +0,0 @@ -#as: --abi=32 -no-expand -#objdump: -dr -#source: ptc-1.s -#name: PT constant, 32-bit ABI with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+e8000610[ ]+pta/l 4 <start\+0x4>,tr1 -[ ]+0:[ ]+R_SH_PT_16 \*ABS\*\+0x100 diff --git a/gas/testsuite/gas/sh/sh64/ptc64-1.d b/gas/testsuite/gas/sh/sh64/ptc64-1.d deleted file mode 100644 index 0ba58cc..0000000 --- a/gas/testsuite/gas/sh/sh64/ptc64-1.d +++ /dev/null @@ -1,19 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: ptc-1.s -#name: PT constant, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -0+ <start>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_HI16_PCREL \*ABS\*\+0xf0 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_MEDHI16_PCREL \*ABS\*\+0xf4 -[ ]+8:[ ]+c8000190[ ]+shori 0,r25 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16_PCREL \*ABS\*\+0xf8 -[ ]+c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+c:[ ]+R_SH_IMM_LOW16_PCREL \*ABS\*\+0xfc -[ ]+10:[ ]+6bf56610[ ]+ptrel/l r25,tr1 diff --git a/gas/testsuite/gas/sh/sh64/ptc64-32-1.d b/gas/testsuite/gas/sh/sh64/ptc64-32-1.d deleted file mode 100644 index 1337cd4..0000000 --- a/gas/testsuite/gas/sh/sh64/ptc64-32-1.d +++ /dev/null @@ -1,15 +0,0 @@ -#as: --abi=64 -expand-pt32 -#objdump: -dr -#source: ptc-1.s -#name: PT constant, 64-bit ABI with -expand-pt32. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16_PCREL \*ABS\*\+0xf8 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_LOW16_PCREL \*ABS\*\+0xfc -[ ]+8:[ ]+6bf56610[ ]+ptrel/l r25,tr1 diff --git a/gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d b/gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d deleted file mode 100644 index 325e57c..0000000 --- a/gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d +++ /dev/null @@ -1,13 +0,0 @@ -#as: --abi=64 -no-expand -#objdump: -dr -#source: ptc-1.s -#name: PT constant, 64-bit ABI with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+e8000610[ ]+pta/l 4 <start\+0x4>,tr1 -[ ]+0:[ ]+R_SH_PT_16 \*ABS\*\+0x100 - diff --git a/gas/testsuite/gas/sh/sh64/ptext-1.s b/gas/testsuite/gas/sh/sh64/ptext-1.s deleted file mode 100644 index 794d0f5..0000000 --- a/gas/testsuite/gas/sh/sh64/ptext-1.s +++ /dev/null @@ -1,8 +0,0 @@ -! PT, PTA, PTB expansion for external symbols. -start: - pt externalsym1 + 40,tr5 - pta externalsym2 + 44,tr4 - ptb externalsym3 + 48,tr3 - pt/u externalsym4 + 52,tr5 - pta/u externalsym5 + 56,tr4 - ptb/u externalsym6 + 60,tr3 diff --git a/gas/testsuite/gas/sh/sh64/ptext32-1.d b/gas/testsuite/gas/sh/sh64/ptext32-1.d deleted file mode 100644 index 834e9cd..0000000 --- a/gas/testsuite/gas/sh/sh64/ptext32-1.d +++ /dev/null @@ -1,40 +0,0 @@ -#as: --isa=shmedia --abi=32 -#source: ptext-1.s -#objdump: -dr -#name: PT, PTA, PTB expansion for external symbols, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym1\+0x20 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_LOW16_PCREL externalsym1\+0x24 -[ ]+8:[ ]+6bf56650[ ]+ptrel/l r25,tr5 -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym2\+0x24 -[ ]+10:[ ]+c8000190[ ]+shori 0,r25 -[ ]+10:[ ]+R_SH_IMM_LOW16_PCREL externalsym2\+0x28 -[ ]+14:[ ]+6bf56640[ ]+ptrel/l r25,tr4 -[ ]+18:[ ]+cc000190[ ]+movi 0,r25 -[ ]+18:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym3\+0x28 -[ ]+1c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+1c:[ ]+R_SH_IMM_LOW16_PCREL externalsym3\+0x2c -[ ]+20:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+24:[ ]+cc000190[ ]+movi 0,r25 -[ ]+24:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym4\+0x2c -[ ]+28:[ ]+c8000190[ ]+shori 0,r25 -[ ]+28:[ ]+R_SH_IMM_LOW16_PCREL externalsym4\+0x30 -[ ]+2c:[ ]+6bf56450[ ]+ptrel/u r25,tr5 -[ ]+30:[ ]+cc000190[ ]+movi 0,r25 -[ ]+30:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym5\+0x30 -[ ]+34:[ ]+c8000190[ ]+shori 0,r25 -[ ]+34:[ ]+R_SH_IMM_LOW16_PCREL externalsym5\+0x34 -[ ]+38:[ ]+6bf56440[ ]+ptrel/u r25,tr4 -[ ]+3c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+3c:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym6\+0x34 -[ ]+40:[ ]+c8000190[ ]+shori 0,r25 -[ ]+40:[ ]+R_SH_IMM_LOW16_PCREL externalsym6\+0x38 -[ ]+44:[ ]+6bf56430[ ]+ptrel/u r25,tr3 diff --git a/gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d b/gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d deleted file mode 100644 index a5dbdf4..0000000 --- a/gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d +++ /dev/null @@ -1,22 +0,0 @@ -#as: --isa=shmedia --abi=32 -no-expand -#source: ptext-1.s -#objdump: -dr -#name: PT, PTA, PTB non-expansion for external symbols, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+e8000250[ ]+pta/l 0 <start>,tr5 -[ ]+0:[ ]+R_SH_PT_16 externalsym1\+0x28 -[ ]+4:[ ]+e8000640[ ]+pta/l 8 <start\+0x8>,tr4 -[ ]+4:[ ]+R_SH_PT_16 externalsym2\+0x2c -[ ]+8:[ ]+ec000630[ ]+ptb/l c <start\+0xc>,tr3 -[ ]+8:[ ]+R_SH_PT_16 externalsym3\+0x30 -[ ]+c:[ ]+e8000050[ ]+pta/u c <start\+0xc>,tr5 -[ ]+c:[ ]+R_SH_PT_16 externalsym4\+0x34 -[ ]+10:[ ]+e8000440[ ]+pta/u 14 <start\+0x14>,tr4 -[ ]+10:[ ]+R_SH_PT_16 externalsym5\+0x38 -[ ]+14:[ ]+ec000430[ ]+ptb/u 18 <start\+0x18>,tr3 -[ ]+14:[ ]+R_SH_PT_16 externalsym6\+0x3c diff --git a/gas/testsuite/gas/sh/sh64/ptext64-1.d b/gas/testsuite/gas/sh/sh64/ptext64-1.d deleted file mode 100644 index 8b99d5d..0000000 --- a/gas/testsuite/gas/sh/sh64/ptext64-1.d +++ /dev/null @@ -1,64 +0,0 @@ -#as: --isa=shmedia --abi=64 -#source: ptext-1.s -#objdump: -dr -#name: PT, PTA, PTB expansion for external symbols, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_HI16_PCREL externalsym1\+0x18 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_MEDHI16_PCREL externalsym1\+0x1c -[ ]+8:[ ]+c8000190[ ]+shori 0,r25 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym1\+0x20 -[ ]+c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+c:[ ]+R_SH_IMM_LOW16_PCREL externalsym1\+0x24 -[ ]+10:[ ]+6bf56650[ ]+ptrel/l r25,tr5 -[ ]+14:[ ]+cc000190[ ]+movi 0,r25 -[ ]+14:[ ]+R_SH_IMM_HI16_PCREL externalsym2\+0x1c -[ ]+18:[ ]+c8000190[ ]+shori 0,r25 -[ ]+18:[ ]+R_SH_IMM_MEDHI16_PCREL externalsym2\+0x20 -[ ]+1c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+1c:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym2\+0x24 -[ ]+20:[ ]+c8000190[ ]+shori 0,r25 -[ ]+20:[ ]+R_SH_IMM_LOW16_PCREL externalsym2\+0x28 -[ ]+24:[ ]+6bf56640[ ]+ptrel/l r25,tr4 -[ ]+28:[ ]+cc000190[ ]+movi 0,r25 -[ ]+28:[ ]+R_SH_IMM_HI16_PCREL externalsym3\+0x20 -[ ]+2c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+2c:[ ]+R_SH_IMM_MEDHI16_PCREL externalsym3\+0x24 -[ ]+30:[ ]+c8000190[ ]+shori 0,r25 -[ ]+30:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym3\+0x28 -[ ]+34:[ ]+c8000190[ ]+shori 0,r25 -[ ]+34:[ ]+R_SH_IMM_LOW16_PCREL externalsym3\+0x2c -[ ]+38:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+3c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+3c:[ ]+R_SH_IMM_HI16_PCREL externalsym4\+0x24 -[ ]+40:[ ]+c8000190[ ]+shori 0,r25 -[ ]+40:[ ]+R_SH_IMM_MEDHI16_PCREL externalsym4\+0x28 -[ ]+44:[ ]+c8000190[ ]+shori 0,r25 -[ ]+44:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym4\+0x2c -[ ]+48:[ ]+c8000190[ ]+shori 0,r25 -[ ]+48:[ ]+R_SH_IMM_LOW16_PCREL externalsym4\+0x30 -[ ]+4c:[ ]+6bf56450[ ]+ptrel/u r25,tr5 -[ ]+50:[ ]+cc000190[ ]+movi 0,r25 -[ ]+50:[ ]+R_SH_IMM_HI16_PCREL externalsym5\+0x28 -[ ]+54:[ ]+c8000190[ ]+shori 0,r25 -[ ]+54:[ ]+R_SH_IMM_MEDHI16_PCREL externalsym5\+0x2c -[ ]+58:[ ]+c8000190[ ]+shori 0,r25 -[ ]+58:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym5\+0x30 -[ ]+5c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+5c:[ ]+R_SH_IMM_LOW16_PCREL externalsym5\+0x34 -[ ]+60:[ ]+6bf56440[ ]+ptrel/u r25,tr4 -[ ]+64:[ ]+cc000190[ ]+movi 0,r25 -[ ]+64:[ ]+R_SH_IMM_HI16_PCREL externalsym6\+0x2c -[ ]+68:[ ]+c8000190[ ]+shori 0,r25 -[ ]+68:[ ]+R_SH_IMM_MEDHI16_PCREL externalsym6\+0x30 -[ ]+6c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+6c:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym6\+0x34 -[ ]+70:[ ]+c8000190[ ]+shori 0,r25 -[ ]+70:[ ]+R_SH_IMM_LOW16_PCREL externalsym6\+0x38 -[ ]+74:[ ]+6bf56430[ ]+ptrel/u r25,tr3 diff --git a/gas/testsuite/gas/sh/sh64/ptext64-32-1.d b/gas/testsuite/gas/sh/sh64/ptext64-32-1.d deleted file mode 100644 index d4d17e2..0000000 --- a/gas/testsuite/gas/sh/sh64/ptext64-32-1.d +++ /dev/null @@ -1,40 +0,0 @@ -#as: --isa=shmedia --abi=64 -expand-pt32 -#source: ptext-1.s -#objdump: -dr -#name: PT, PTA, PTB expansion for external symbols, 64-bit ABI with -expand-pt32. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000190[ ]+movi 0,r25 -[ ]+0:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym1\+0x20 -[ ]+4:[ ]+c8000190[ ]+shori 0,r25 -[ ]+4:[ ]+R_SH_IMM_LOW16_PCREL externalsym1\+0x24 -[ ]+8:[ ]+6bf56650[ ]+ptrel/l r25,tr5 -[ ]+c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+c:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym2\+0x24 -[ ]+10:[ ]+c8000190[ ]+shori 0,r25 -[ ]+10:[ ]+R_SH_IMM_LOW16_PCREL externalsym2\+0x28 -[ ]+14:[ ]+6bf56640[ ]+ptrel/l r25,tr4 -[ ]+18:[ ]+cc000190[ ]+movi 0,r25 -[ ]+18:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym3\+0x28 -[ ]+1c:[ ]+c8000190[ ]+shori 0,r25 -[ ]+1c:[ ]+R_SH_IMM_LOW16_PCREL externalsym3\+0x2c -[ ]+20:[ ]+6bf56630[ ]+ptrel/l r25,tr3 -[ ]+24:[ ]+cc000190[ ]+movi 0,r25 -[ ]+24:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym4\+0x2c -[ ]+28:[ ]+c8000190[ ]+shori 0,r25 -[ ]+28:[ ]+R_SH_IMM_LOW16_PCREL externalsym4\+0x30 -[ ]+2c:[ ]+6bf56450[ ]+ptrel/u r25,tr5 -[ ]+30:[ ]+cc000190[ ]+movi 0,r25 -[ ]+30:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym5\+0x30 -[ ]+34:[ ]+c8000190[ ]+shori 0,r25 -[ ]+34:[ ]+R_SH_IMM_LOW16_PCREL externalsym5\+0x34 -[ ]+38:[ ]+6bf56440[ ]+ptrel/u r25,tr4 -[ ]+3c:[ ]+cc000190[ ]+movi 0,r25 -[ ]+3c:[ ]+R_SH_IMM_MEDLOW16_PCREL externalsym6\+0x34 -[ ]+40:[ ]+c8000190[ ]+shori 0,r25 -[ ]+40:[ ]+R_SH_IMM_LOW16_PCREL externalsym6\+0x38 -[ ]+44:[ ]+6bf56430[ ]+ptrel/u r25,tr3 diff --git a/gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d b/gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d deleted file mode 100644 index 8a8daab..0000000 --- a/gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d +++ /dev/null @@ -1,22 +0,0 @@ -#as: --isa=shmedia --abi=64 -no-expand -#source: ptext-1.s -#objdump: -dr -#name: PT, PTA, PTB non-expansion for external symbols, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+e8000250[ ]+pta/l 0 <start>,tr5 -[ ]+0:[ ]+R_SH_PT_16 externalsym1\+0x28 -[ ]+4:[ ]+e8000640[ ]+pta/l 8 <start\+0x8>,tr4 -[ ]+4:[ ]+R_SH_PT_16 externalsym2\+0x2c -[ ]+8:[ ]+ec000630[ ]+ptb/l c <start\+0xc>,tr3 -[ ]+8:[ ]+R_SH_PT_16 externalsym3\+0x30 -[ ]+c:[ ]+e8000050[ ]+pta/u c <start\+0xc>,tr5 -[ ]+c:[ ]+R_SH_PT_16 externalsym4\+0x34 -[ ]+10:[ ]+e8000440[ ]+pta/u 14 <start\+0x14>,tr4 -[ ]+10:[ ]+R_SH_PT_16 externalsym5\+0x38 -[ ]+14:[ ]+ec000430[ ]+ptb/u 18 <start\+0x18>,tr3 -[ ]+14:[ ]+R_SH_PT_16 externalsym6\+0x3c diff --git a/gas/testsuite/gas/sh/sh64/rel-1.s b/gas/testsuite/gas/sh/sh64/rel-1.s deleted file mode 100644 index c402ecd..0000000 --- a/gas/testsuite/gas/sh/sh64/rel-1.s +++ /dev/null @@ -1,137 +0,0 @@ -! Test pc-relative relocations in MOVI and MOVI expansion. - - .mode SHmedia - .text -start: - movi data1 - datalabel $,r10 - movi (data2 - datalabel $) & 65535,r10 - movi ((data3 - datalabel $) >> 0) & 65535,r10 - movi ((data4 - datalabel $) >> 16) & 65535,r10 - movi data5 + 8 - datalabel $,r10 - movi (data6 + 16 - datalabel $) & 65535,r10 - movi ((data7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((data8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi othertext1 - datalabel $,r10 - movi (othertext2 - datalabel $) & 65535,r10 - movi ((othertext3 - datalabel $) >> 0) & 65535,r10 - movi ((othertext4 - datalabel $) >> 16) & 65535,r10 - movi othertext5 + 8 - datalabel $,r10 - movi (othertext6 + 16 - datalabel $) & 65535,r10 - movi ((othertext7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((othertext8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi extern1 - datalabel $,r10 - movi (extern2 - datalabel $) & 65535,r10 - movi ((extern3 - datalabel $) >> 0) & 65535,r10 - movi ((extern4 - datalabel $) >> 16) & 65535,r10 - movi extern5 + 8 - datalabel $,r10 - movi (extern6 + 16 - datalabel $) & 65535,r10 - movi ((extern7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((extern8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi gdata1 - datalabel $,r10 - movi (gdata2 - datalabel $) & 65535,r10 - movi ((gdata3 - datalabel $) >> 0) & 65535,r10 - movi ((gdata4 - datalabel $) >> 16) & 65535,r10 - movi gdata5 + 8 - datalabel $,r10 - movi (gdata6 + 16 - datalabel $) & 65535,r10 - movi ((gdata7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((gdata8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi gothertext1 - datalabel $,r10 - movi (gothertext2 - datalabel $) & 65535,r10 - movi ((gothertext3 - datalabel $) >> 0) & 65535,r10 - movi ((gothertext4 - datalabel $) >> 16) & 65535,r10 - movi gothertext5 + 8 - datalabel $,r10 - movi (gothertext6 + 16 - datalabel $) & 65535,r10 - movi ((gothertext7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((gothertext8 + 4 - datalabel $) >> 16) & 65535,r10 - - .section .othertext,"ax" -x: - nop -othertext1: - nop -othertext2: - nop -othertext3: - nop -othertext4: - nop -othertext5: - nop -othertext6: - nop -othertext7: - nop -othertext8: - nop - .global gothertext1 -gothertext1: - nop - .global gothertext2 -gothertext2: - nop - .global gothertext3 -gothertext3: - nop - .global gothertext4 -gothertext4: - nop - .global gothertext5 -gothertext5: - nop - .global gothertext6 -gothertext6: - nop - .global gothertext7 -gothertext7: - nop - .global gothertext8 -gothertext8: - nop - - .data -y: - .long 0 -data1: - .long 0 -data2: - .long 0 -data3: - .long 0 -data4: - .long 0 -data5: - .long 0 -data6: - .long 0 -data7: - .long 0 -data8: - .long 0 - .global gdata1 -gdata1: - .long 0 - .global gdata2 -gdata2: - .long 0 - .global gdata3 -gdata3: - .long 0 - .global gdata4 -gdata4: - .long 0 - .global gdata5 -gdata5: - .long 0 - .global gdata6 -gdata6: - .long 0 - .global gdata7 -gdata7: - .long 0 - .global gdata8 -gdata8: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/rel-2.s b/gas/testsuite/gas/sh/sh64/rel-2.s deleted file mode 100644 index 798cf41..0000000 --- a/gas/testsuite/gas/sh/sh64/rel-2.s +++ /dev/null @@ -1,138 +0,0 @@ -! Like rel-1.s, but using "$", not "datalabel $" as self expression. It's -! not as useful, but should emit the obvious output. - - .mode SHmedia - .text -start: - movi data1 - $,r10 - movi (data2 - $) & 65535,r10 - movi ((data3 - $) >> 0) & 65535,r10 - movi ((data4 - $) >> 16) & 65535,r10 - movi data5 + 8 - $,r10 - movi (data6 + 16 - $) & 65535,r10 - movi ((data7 + 12 - $) >> 0) & 65535,r10 - movi ((data8 + 4 - $) >> 16) & 65535,r10 - - movi othertext1 - $,r10 - movi (othertext2 - $) & 65535,r10 - movi ((othertext3 - $) >> 0) & 65535,r10 - movi ((othertext4 - $) >> 16) & 65535,r10 - movi othertext5 + 8 - $,r10 - movi (othertext6 + 16 - $) & 65535,r10 - movi ((othertext7 + 12 - $) >> 0) & 65535,r10 - movi ((othertext8 + 4 - $) >> 16) & 65535,r10 - - movi extern1 - $,r10 - movi (extern2 - $) & 65535,r10 - movi ((extern3 - $) >> 0) & 65535,r10 - movi ((extern4 - $) >> 16) & 65535,r10 - movi extern5 + 8 - $,r10 - movi (extern6 + 16 - $) & 65535,r10 - movi ((extern7 + 12 - $) >> 0) & 65535,r10 - movi ((extern8 + 4 - $) >> 16) & 65535,r10 - - movi gdata1 - $,r10 - movi (gdata2 - $) & 65535,r10 - movi ((gdata3 - $) >> 0) & 65535,r10 - movi ((gdata4 - $) >> 16) & 65535,r10 - movi gdata5 + 8 - $,r10 - movi (gdata6 + 16 - $) & 65535,r10 - movi ((gdata7 + 12 - $) >> 0) & 65535,r10 - movi ((gdata8 + 4 - $) >> 16) & 65535,r10 - - movi gothertext1 - $,r10 - movi (gothertext2 - $) & 65535,r10 - movi ((gothertext3 - $) >> 0) & 65535,r10 - movi ((gothertext4 - $) >> 16) & 65535,r10 - movi gothertext5 + 8 - $,r10 - movi (gothertext6 + 16 - $) & 65535,r10 - movi ((gothertext7 + 12 - $) >> 0) & 65535,r10 - movi ((gothertext8 + 4 - $) >> 16) & 65535,r10 - - .section .othertext,"ax" -x: - nop -othertext1: - nop -othertext2: - nop -othertext3: - nop -othertext4: - nop -othertext5: - nop -othertext6: - nop -othertext7: - nop -othertext8: - nop - .global gothertext1 -gothertext1: - nop - .global gothertext2 -gothertext2: - nop - .global gothertext3 -gothertext3: - nop - .global gothertext4 -gothertext4: - nop - .global gothertext5 -gothertext5: - nop - .global gothertext6 -gothertext6: - nop - .global gothertext7 -gothertext7: - nop - .global gothertext8 -gothertext8: - nop - - .data -y: - .long 0 -data1: - .long 0 -data2: - .long 0 -data3: - .long 0 -data4: - .long 0 -data5: - .long 0 -data6: - .long 0 -data7: - .long 0 -data8: - .long 0 - .global gdata1 -gdata1: - .long 0 - .global gdata2 -gdata2: - .long 0 - .global gdata3 -gdata3: - .long 0 - .global gdata4 -gdata4: - .long 0 - .global gdata5 -gdata5: - .long 0 - .global gdata6 -gdata6: - .long 0 - .global gdata7 -gdata7: - .long 0 - .global gdata8 -gdata8: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/rel-3.s b/gas/testsuite/gas/sh/sh64/rel-3.s deleted file mode 100644 index de60beb..0000000 --- a/gas/testsuite/gas/sh/sh64/rel-3.s +++ /dev/null @@ -1,137 +0,0 @@ -! Like rel-1, but references are marked "datalabel". - - .mode SHmedia - .text -start: - movi datalabel data1 - datalabel $,r10 - movi (datalabel data2 - datalabel $) & 65535,r10 - movi ((datalabel data3 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel data4 - datalabel $) >> 16) & 65535,r10 - movi datalabel data5 + 8 - datalabel $,r10 - movi (datalabel data6 + 16 - datalabel $) & 65535,r10 - movi ((datalabel data7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel data8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi datalabel othertext1 - datalabel $,r10 - movi (datalabel othertext2 - datalabel $) & 65535,r10 - movi ((datalabel othertext3 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel othertext4 - datalabel $) >> 16) & 65535,r10 - movi datalabel othertext5 + 8 - datalabel $,r10 - movi (datalabel othertext6 + 16 - datalabel $) & 65535,r10 - movi ((datalabel othertext7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel othertext8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi datalabel extern1 - datalabel $,r10 - movi (datalabel extern2 - datalabel $) & 65535,r10 - movi ((datalabel extern3 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel extern4 - datalabel $) >> 16) & 65535,r10 - movi datalabel extern5 + 8 - datalabel $,r10 - movi (datalabel extern6 + 16 - datalabel $) & 65535,r10 - movi ((datalabel extern7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel extern8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi datalabel gdata1 - datalabel $,r10 - movi (datalabel gdata2 - datalabel $) & 65535,r10 - movi ((datalabel gdata3 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel gdata4 - datalabel $) >> 16) & 65535,r10 - movi datalabel gdata5 + 8 - datalabel $,r10 - movi (datalabel gdata6 + 16 - datalabel $) & 65535,r10 - movi ((datalabel gdata7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel gdata8 + 4 - datalabel $) >> 16) & 65535,r10 - - movi datalabel gothertext1 - datalabel $,r10 - movi (datalabel gothertext2 - datalabel $) & 65535,r10 - movi ((datalabel gothertext3 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel gothertext4 - datalabel $) >> 16) & 65535,r10 - movi datalabel gothertext5 + 8 - datalabel $,r10 - movi (datalabel gothertext6 + 16 - datalabel $) & 65535,r10 - movi ((datalabel gothertext7 + 12 - datalabel $) >> 0) & 65535,r10 - movi ((datalabel gothertext8 + 4 - datalabel $) >> 16) & 65535,r10 - - .section .othertext,"ax" -x: - nop -othertext1: - nop -othertext2: - nop -othertext3: - nop -othertext4: - nop -othertext5: - nop -othertext6: - nop -othertext7: - nop -othertext8: - nop - .global gothertext1 -gothertext1: - nop - .global gothertext2 -gothertext2: - nop - .global gothertext3 -gothertext3: - nop - .global gothertext4 -gothertext4: - nop - .global gothertext5 -gothertext5: - nop - .global gothertext6 -gothertext6: - nop - .global gothertext7 -gothertext7: - nop - .global gothertext8 -gothertext8: - nop - - .data -y: - .long 0 -data1: - .long 0 -data2: - .long 0 -data3: - .long 0 -data4: - .long 0 -data5: - .long 0 -data6: - .long 0 -data7: - .long 0 -data8: - .long 0 - .global gdata1 -gdata1: - .long 0 - .global gdata2 -gdata2: - .long 0 - .global gdata3 -gdata3: - .long 0 - .global gdata4 -gdata4: - .long 0 - .global gdata5 -gdata5: - .long 0 - .global gdata6 -gdata6: - .long 0 - .global gdata7 -gdata7: - .long 0 - .global gdata8 -gdata8: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/rel-4.s b/gas/testsuite/gas/sh/sh64/rel-4.s deleted file mode 100644 index 411cb0a..0000000 --- a/gas/testsuite/gas/sh/sh64/rel-4.s +++ /dev/null @@ -1,138 +0,0 @@ -! Like rel-3.s, but as with rel-2 vs. rel-1, using "$", not "datalabel $" -! as self expression. - - .mode SHmedia - .text -start: - movi datalabel data1 - $,r10 - movi (datalabel data2 - $) & 65535,r10 - movi ((datalabel data3 - $) >> 0) & 65535,r10 - movi ((datalabel data4 - $) >> 16) & 65535,r10 - movi datalabel data5 + 8 - $,r10 - movi (datalabel data6 + 16 - $) & 65535,r10 - movi ((datalabel data7 + 12 - $) >> 0) & 65535,r10 - movi ((datalabel data8 + 4 - $) >> 16) & 65535,r10 - - movi datalabel othertext1 - $,r10 - movi (datalabel othertext2 - $) & 65535,r10 - movi ((datalabel othertext3 - $) >> 0) & 65535,r10 - movi ((datalabel othertext4 - $) >> 16) & 65535,r10 - movi datalabel othertext5 + 8 - $,r10 - movi (datalabel othertext6 + 16 - $) & 65535,r10 - movi ((datalabel othertext7 + 12 - $) >> 0) & 65535,r10 - movi ((datalabel othertext8 + 4 - $) >> 16) & 65535,r10 - - movi datalabel extern1 - $,r10 - movi (datalabel extern2 - $) & 65535,r10 - movi ((datalabel extern3 - $) >> 0) & 65535,r10 - movi ((datalabel extern4 - $) >> 16) & 65535,r10 - movi datalabel extern5 + 8 - $,r10 - movi (datalabel extern6 + 16 - $) & 65535,r10 - movi ((datalabel extern7 + 12 - $) >> 0) & 65535,r10 - movi ((datalabel extern8 + 4 - $) >> 16) & 65535,r10 - - movi datalabel gdata1 - $,r10 - movi (datalabel gdata2 - $) & 65535,r10 - movi ((datalabel gdata3 - $) >> 0) & 65535,r10 - movi ((datalabel gdata4 - $) >> 16) & 65535,r10 - movi datalabel gdata5 + 8 - $,r10 - movi (datalabel gdata6 + 16 - $) & 65535,r10 - movi ((datalabel gdata7 + 12 - $) >> 0) & 65535,r10 - movi ((datalabel gdata8 + 4 - $) >> 16) & 65535,r10 - - movi datalabel gothertext1 - $,r10 - movi (datalabel gothertext2 - $) & 65535,r10 - movi ((datalabel gothertext3 - $) >> 0) & 65535,r10 - movi ((datalabel gothertext4 - $) >> 16) & 65535,r10 - movi datalabel gothertext5 + 8 - $,r10 - movi (datalabel gothertext6 + 16 - $) & 65535,r10 - movi ((datalabel gothertext7 + 12 - $) >> 0) & 65535,r10 - movi ((datalabel gothertext8 + 4 - $) >> 16) & 65535,r10 - - .section .othertext,"ax" -x: - nop -othertext1: - nop -othertext2: - nop -othertext3: - nop -othertext4: - nop -othertext5: - nop -othertext6: - nop -othertext7: - nop -othertext8: - nop - .global gothertext1 -gothertext1: - nop - .global gothertext2 -gothertext2: - nop - .global gothertext3 -gothertext3: - nop - .global gothertext4 -gothertext4: - nop - .global gothertext5 -gothertext5: - nop - .global gothertext6 -gothertext6: - nop - .global gothertext7 -gothertext7: - nop - .global gothertext8 -gothertext8: - nop - - .data -y: - .long 0 -data1: - .long 0 -data2: - .long 0 -data3: - .long 0 -data4: - .long 0 -data5: - .long 0 -data6: - .long 0 -data7: - .long 0 -data8: - .long 0 - .global gdata1 -gdata1: - .long 0 - .global gdata2 -gdata2: - .long 0 - .global gdata3 -gdata3: - .long 0 - .global gdata4 -gdata4: - .long 0 - .global gdata5 -gdata5: - .long 0 - .global gdata6 -gdata6: - .long 0 - .global gdata7 -gdata7: - .long 0 - .global gdata8 -gdata8: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/rel-5.s b/gas/testsuite/gas/sh/sh64/rel-5.s deleted file mode 100644 index 053c237..0000000 --- a/gas/testsuite/gas/sh/sh64/rel-5.s +++ /dev/null @@ -1,48 +0,0 @@ -! Test MOVI pc-relative expansion within text section. - - .text - .mode SHmedia -start: - nop - movi start2+8 - datalabel $,r30 - movi start3+4 - $,r30 - movi datalabel start4 + 8 - datalabel $,r30 - movi datalabel start5 + 12 - $,r30 - movi (datalabel start6 + 24 - datalabel $) & 65535,r40 - movi ((datalabel start7 + 32 - datalabel $) >> 16) & 65535,r50 - movi gstart2+8 - datalabel $,r30 - movi gstart3+4 - $,r30 - movi datalabel gstart4 + 8 - datalabel $,r30 - movi datalabel gstart5 + 12 - $,r30 - movi (datalabel gstart6 + 24 - datalabel $) & 65535,r40 - movi ((datalabel gstart7 + 32 - datalabel $) >> 16) & 65535,r50 -start2: - nop -start3: - nop -start4: - nop -start5: - nop -start6: - nop -start7: - nop - .global gstart2 -gstart2: - nop - .global gstart3 -gstart3: - nop - .global gstart4 -gstart4: - nop - .global gstart5 -gstart5: - nop - .global gstart6 -gstart6: - nop - .global gstart7 -gstart7: - nop diff --git a/gas/testsuite/gas/sh/sh64/rel32-1.d b/gas/testsuite/gas/sh/sh64/rel32-1.d deleted file mode 100644 index 68ecc22..0000000 --- a/gas/testsuite/gas/sh/sh64/rel32-1.d +++ /dev/null @@ -1,86 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: rel-1.s -#name: MOVI: PC-relative relocs, 32-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+08 R_SH_IMM_LOW16_PCREL \.data\+0x0+8 -0+0c R_SH_IMM_LOW16_PCREL \.data\+0x0+c -0+10 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+10 -0+1c R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+20 R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+24 -0+30 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+9 -0+34 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+d -0+38 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+11 -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+29 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+29 -0+4c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+25 -0+58 R_SH_IMM_LOW16_PCREL extern2 -0+5c R_SH_IMM_LOW16_PCREL extern3 -0+60 R_SH_IMM_MEDLOW16_PCREL extern4 -0+6c R_SH_IMM_LOW16_PCREL extern6\+0x0+10 -0+70 R_SH_IMM_LOW16_PCREL extern7\+0x0+c -0+74 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+4 -0+80 R_SH_IMM_LOW16_PCREL gdata2 -0+84 R_SH_IMM_LOW16_PCREL gdata3 -0+88 R_SH_IMM_MEDLOW16_PCREL gdata4 -0+94 R_SH_IMM_LOW16_PCREL gdata6\+0x0+10 -0+98 R_SH_IMM_LOW16_PCREL gdata7\+0x0+c -0+9c R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+4 -0+a8 R_SH_IMM_LOW16_PCREL gothertext2 -0+ac R_SH_IMM_LOW16_PCREL gothertext3 -0+b0 R_SH_IMM_MEDLOW16_PCREL gothertext4 -0+bc R_SH_IMM_LOW16_PCREL gothertext6\+0x0+10 -0+c0 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+c -0+c4 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+4 -0+00 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+4 -0+04 R_SH_IMM_LOW16_PCREL \.data\+0x0+8 -0+14 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+1c -0+18 R_SH_IMM_LOW16_PCREL \.data\+0x0+20 -0+28 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+5 -0+2c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+9 -0+3c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+1d -0+40 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+21 -0+50 R_SH_IMM_MEDLOW16_PCREL extern1 -0+54 R_SH_IMM_LOW16_PCREL extern1\+0x0+4 -0+64 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+8 -0+68 R_SH_IMM_LOW16_PCREL extern5\+0x0+c -0+78 R_SH_IMM_MEDLOW16_PCREL gdata1 -0+7c R_SH_IMM_LOW16_PCREL gdata1\+0x0+4 -0+8c R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+8 -0+90 R_SH_IMM_LOW16_PCREL gdata5\+0x0+c -0+a0 R_SH_IMM_MEDLOW16_PCREL gothertext1 -0+a4 R_SH_IMM_LOW16_PCREL gothertext1\+0x0+4 -0+b4 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+8 -0+b8 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+c - -Contents of section \.text: - 0000 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0010 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0020 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0040 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0060 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0070 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00a0 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 00b0 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel32-2.d b/gas/testsuite/gas/sh/sh64/rel32-2.d deleted file mode 100644 index 314f2ca..0000000 --- a/gas/testsuite/gas/sh/sh64/rel32-2.d +++ /dev/null @@ -1,86 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: rel-2.s -#name: MOVI: PC+1-relative relocs, 32-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+8 R_SH_IMM_LOW16_PCREL \.data\+0x0+7 -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+b -0+10 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+f -0+1c R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+20 R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+23 -0+30 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+8 -0+34 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+c -0+38 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+10 -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+4c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+24 -0+58 R_SH_IMM_LOW16_PCREL extern2-0x0+1 -0+5c R_SH_IMM_LOW16_PCREL extern3-0x0+1 -0+60 R_SH_IMM_MEDLOW16_PCREL extern4-0x0+1 -0+6c R_SH_IMM_LOW16_PCREL extern6\+0x0+f -0+70 R_SH_IMM_LOW16_PCREL extern7\+0x0+b -0+74 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+3 -0+80 R_SH_IMM_LOW16_PCREL gdata2-0x0+1 -0+84 R_SH_IMM_LOW16_PCREL gdata3-0x0+1 -0+88 R_SH_IMM_MEDLOW16_PCREL gdata4-0x0+1 -0+94 R_SH_IMM_LOW16_PCREL gdata6\+0x0+f -0+98 R_SH_IMM_LOW16_PCREL gdata7\+0x0+b -0+9c R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+3 -0+a8 R_SH_IMM_LOW16_PCREL gothertext2-0x0+1 -0+ac R_SH_IMM_LOW16_PCREL gothertext3-0x0+1 -0+b0 R_SH_IMM_MEDLOW16_PCREL gothertext4-0x0+1 -0+bc R_SH_IMM_LOW16_PCREL gothertext6\+0x0+f -0+c0 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+b -0+c4 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+3 -0+ R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+3 -0+4 R_SH_IMM_LOW16_PCREL \.data\+0x0+7 -0+14 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+1b -0+18 R_SH_IMM_LOW16_PCREL \.data\+0x0+1f -0+28 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+4 -0+2c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+8 -0+3c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+1c -0+40 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+20 -0+50 R_SH_IMM_MEDLOW16_PCREL extern1-0x0+1 -0+54 R_SH_IMM_LOW16_PCREL extern1\+0x0+3 -0+64 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+7 -0+68 R_SH_IMM_LOW16_PCREL extern5\+0x0+b -0+78 R_SH_IMM_MEDLOW16_PCREL gdata1-0x0+1 -0+7c R_SH_IMM_LOW16_PCREL gdata1\+0x0+3 -0+8c R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+7 -0+90 R_SH_IMM_LOW16_PCREL gdata5\+0x0+b -0+a0 R_SH_IMM_MEDLOW16_PCREL gothertext1-0x0+1 -0+a4 R_SH_IMM_LOW16_PCREL gothertext1\+0x0+3 -0+b4 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+7 -0+b8 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+b - -Contents of section \.text: - 0000 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0010 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0020 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0040 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0060 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0070 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00a0 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 00b0 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel32-3.d b/gas/testsuite/gas/sh/sh64/rel32-3.d deleted file mode 100644 index aba5683..0000000 --- a/gas/testsuite/gas/sh/sh64/rel32-3.d +++ /dev/null @@ -1,86 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: rel-3.s -#name: MOVI: PC-relative datalabel relocs, 32-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+8 R_SH_IMM_LOW16_PCREL \.data\+0x0+8 -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+c -0+10 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+10 -0+1c R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+20 R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+24 -0+30 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+8 -0+34 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+c -0+38 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+10 -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+4c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+24 -0+58 R_SH_IMM_LOW16_PCREL extern2 -0+5c R_SH_IMM_LOW16_PCREL extern3 -0+60 R_SH_IMM_MEDLOW16_PCREL extern4 -0+6c R_SH_IMM_LOW16_PCREL extern6\+0x0+10 -0+70 R_SH_IMM_LOW16_PCREL extern7\+0x0+c -0+74 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+4 -0+80 R_SH_IMM_LOW16_PCREL gdata2 -0+84 R_SH_IMM_LOW16_PCREL gdata3 -0+88 R_SH_IMM_MEDLOW16_PCREL gdata4 -0+94 R_SH_IMM_LOW16_PCREL gdata6\+0x0+10 -0+98 R_SH_IMM_LOW16_PCREL gdata7\+0x0+c -0+9c R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+4 -0+a8 R_SH_IMM_LOW16_PCREL gothertext2 -0+ac R_SH_IMM_LOW16_PCREL gothertext3 -0+b0 R_SH_IMM_MEDLOW16_PCREL gothertext4 -0+bc R_SH_IMM_LOW16_PCREL gothertext6\+0x0+10 -0+c0 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+c -0+c4 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+4 -0+ R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+4 -0+4 R_SH_IMM_LOW16_PCREL \.data\+0x0+8 -0+14 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+1c -0+18 R_SH_IMM_LOW16_PCREL \.data\+0x0+20 -0+28 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+4 -0+2c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+8 -0+3c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+1c -0+40 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+20 -0+50 R_SH_IMM_MEDLOW16_PCREL extern1 -0+54 R_SH_IMM_LOW16_PCREL extern1\+0x0+4 -0+64 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+8 -0+68 R_SH_IMM_LOW16_PCREL extern5\+0x0+c -0+78 R_SH_IMM_MEDLOW16_PCREL gdata1 -0+7c R_SH_IMM_LOW16_PCREL gdata1\+0x0+4 -0+8c R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+8 -0+90 R_SH_IMM_LOW16_PCREL gdata5\+0x0+c -0+a0 R_SH_IMM_MEDLOW16_PCREL gothertext1 -0+a4 R_SH_IMM_LOW16_PCREL gothertext1\+0x0+4 -0+b4 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+8 -0+b8 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+c - -Contents of section \.text: - 0000 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0010 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0020 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0040 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0060 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0070 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00a0 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 00b0 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel32-4.d b/gas/testsuite/gas/sh/sh64/rel32-4.d deleted file mode 100644 index 29d716a..0000000 --- a/gas/testsuite/gas/sh/sh64/rel32-4.d +++ /dev/null @@ -1,86 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: rel-4.s -#name: MOVI: PC+1-relative datalabel relocs, 32-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+8 R_SH_IMM_LOW16_PCREL \.data\+0x0+7 -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+b -0+10 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+f -0+1c R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+20 R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+23 -0+30 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+7 -0+34 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+b -0+38 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+f -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+27 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+27 -0+4c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+23 -0+58 R_SH_IMM_LOW16_PCREL extern2-0x0+1 -0+5c R_SH_IMM_LOW16_PCREL extern3-0x0+1 -0+60 R_SH_IMM_MEDLOW16_PCREL extern4-0x0+1 -0+6c R_SH_IMM_LOW16_PCREL extern6\+0x0+f -0+70 R_SH_IMM_LOW16_PCREL extern7\+0x0+b -0+74 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+3 -0+80 R_SH_IMM_LOW16_PCREL gdata2-0x0+1 -0+84 R_SH_IMM_LOW16_PCREL gdata3-0x0+1 -0+88 R_SH_IMM_MEDLOW16_PCREL gdata4-0x0+1 -0+94 R_SH_IMM_LOW16_PCREL gdata6\+0x0+f -0+98 R_SH_IMM_LOW16_PCREL gdata7\+0x0+b -0+9c R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+3 -0+a8 R_SH_IMM_LOW16_PCREL gothertext2-0x0+1 -0+ac R_SH_IMM_LOW16_PCREL gothertext3-0x0+1 -0+b0 R_SH_IMM_MEDLOW16_PCREL gothertext4-0x0+1 -0+bc R_SH_IMM_LOW16_PCREL gothertext6\+0x0+f -0+c0 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+b -0+c4 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+3 -0+ R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+3 -0+4 R_SH_IMM_LOW16_PCREL \.data\+0x0+7 -0+14 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+1b -0+18 R_SH_IMM_LOW16_PCREL \.data\+0x0+1f -0+28 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+3 -0+2c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+7 -0+3c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+1b -0+40 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+1f -0+50 R_SH_IMM_MEDLOW16_PCREL extern1-0x0+1 -0+54 R_SH_IMM_LOW16_PCREL extern1\+0x0+3 -0+64 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+7 -0+68 R_SH_IMM_LOW16_PCREL extern5\+0x0+b -0+78 R_SH_IMM_MEDLOW16_PCREL gdata1-0x0+1 -0+7c R_SH_IMM_LOW16_PCREL gdata1\+0x0+3 -0+8c R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+7 -0+90 R_SH_IMM_LOW16_PCREL gdata5\+0x0+b -0+a0 R_SH_IMM_MEDLOW16_PCREL gothertext1-0x0+1 -0+a4 R_SH_IMM_LOW16_PCREL gothertext1\+0x0+3 -0+b4 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+7 -0+b8 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+b - -Contents of section \.text: - 0000 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0010 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0020 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0040 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 0060 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 0070 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00a0 cc0000a0 c80000a0 cc0000a0 cc0000a0 .* - 00b0 cc0000a0 cc0000a0 c80000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel32-5.d b/gas/testsuite/gas/sh/sh64/rel32-5.d deleted file mode 100644 index 7472013..0000000 --- a/gas/testsuite/gas/sh/sh64/rel32-5.d +++ /dev/null @@ -1,30 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: rel-5.s -#name: MOVI: PC-relative reloc within .text, 32-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET *TYPE *VALUE -0+3c R_SH_IMM_LOW16_PCREL gstart6\+0x0+18 -0+40 R_SH_IMM_MEDLOW16_PCREL gstart7\+0x0+20 -0+1c R_SH_IMM_MEDLOW16_PCREL gstart2\+0x0+8 -0+20 R_SH_IMM_LOW16_PCREL gstart2\+0x0+c -0+24 R_SH_IMM_MEDLOW16_PCREL gstart3\+0x0+3 -0+28 R_SH_IMM_LOW16_PCREL gstart3\+0x0+7 -0+2c R_SH_IMM_MEDLOW16_PCREL gstart4\+0x0+8 -0+30 R_SH_IMM_LOW16_PCREL gstart4\+0x0+c -0+34 R_SH_IMM_MEDLOW16_PCREL gstart5\+0x0+b -0+38 R_SH_IMM_LOW16_PCREL gstart5\+0x0+f - -Contents of section \.text: - 0000 6ff0fff0 cc0125e0 cc0111e0 cc0121e0 .* - 0010 cc012de0 cc016280 cc000320 cc0001e0 .* - 0020 c80001e0 cc0001e0 c80001e0 cc0001e0 .* - 0030 c80001e0 cc0001e0 c80001e0 cc000280 .* - 0040 cc000320 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0050 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0060 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0070 6ff0fff0 .* - diff --git a/gas/testsuite/gas/sh/sh64/rel64-1.d b/gas/testsuite/gas/sh/sh64/rel64-1.d deleted file mode 100644 index 7e9b638..0000000 --- a/gas/testsuite/gas/sh/sh64/rel64-1.d +++ /dev/null @@ -1,111 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: rel-1.s -#name: MOVI: PC-relative relocs, 64-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+10 R_SH_IMM_LOW16_PCREL \.data\+0x0+8 -0+14 R_SH_IMM_LOW16_PCREL \.data\+0x0+c -0+18 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+10 -0+2c R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+30 R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+34 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+24 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+9 -0+4c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+d -0+50 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+11 -0+64 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+29 -0+68 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+29 -0+6c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+25 -0+80 R_SH_IMM_LOW16_PCREL extern2 -0+84 R_SH_IMM_LOW16_PCREL extern3 -0+88 R_SH_IMM_MEDLOW16_PCREL extern4 -0+9c R_SH_IMM_LOW16_PCREL extern6\+0x0+10 -0+a0 R_SH_IMM_LOW16_PCREL extern7\+0x0+c -0+a4 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+4 -0+b8 R_SH_IMM_LOW16_PCREL gdata2 -0+bc R_SH_IMM_LOW16_PCREL gdata3 -0+c0 R_SH_IMM_MEDLOW16_PCREL gdata4 -0+d4 R_SH_IMM_LOW16_PCREL gdata6\+0x0+10 -0+d8 R_SH_IMM_LOW16_PCREL gdata7\+0x0+c -0+dc R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+4 -0+f0 R_SH_IMM_LOW16_PCREL gothertext2 -0+f4 R_SH_IMM_LOW16_PCREL gothertext3 -0+f8 R_SH_IMM_MEDLOW16_PCREL gothertext4 -0+10c R_SH_IMM_LOW16_PCREL gothertext6\+0x0+10 -0+110 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+c -0+114 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+4 -0+ R_SH_IMM_HI16_PCREL \.data\+0x0+4 -0+4 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+8 -0+8 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+c -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+10 -0+1c R_SH_IMM_HI16_PCREL \.data\+0x0+1c -0+20 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+20 -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+24 -0+28 R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+38 R_SH_IMM_HI16_PCREL \.othertext\+0x0+5 -0+3c R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+9 -0+40 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+d -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+11 -0+54 R_SH_IMM_HI16_PCREL \.othertext\+0x0+1d -0+58 R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+21 -0+5c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+25 -0+60 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+29 -0+70 R_SH_IMM_HI16_PCREL extern1 -0+74 R_SH_IMM_MEDHI16_PCREL extern1\+0x0+4 -0+78 R_SH_IMM_MEDLOW16_PCREL extern1\+0x0+8 -0+7c R_SH_IMM_LOW16_PCREL extern1\+0x0+c -0+8c R_SH_IMM_HI16_PCREL extern5\+0x0+8 -0+90 R_SH_IMM_MEDHI16_PCREL extern5\+0x0+c -0+94 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+10 -0+98 R_SH_IMM_LOW16_PCREL extern5\+0x0+14 -0+a8 R_SH_IMM_HI16_PCREL gdata1 -0+ac R_SH_IMM_MEDHI16_PCREL gdata1\+0x0+4 -0+b0 R_SH_IMM_MEDLOW16_PCREL gdata1\+0x0+8 -0+b4 R_SH_IMM_LOW16_PCREL gdata1\+0x0+c -0+c4 R_SH_IMM_HI16_PCREL gdata5\+0x0+8 -0+c8 R_SH_IMM_MEDHI16_PCREL gdata5\+0x0+c -0+cc R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+10 -0+d0 R_SH_IMM_LOW16_PCREL gdata5\+0x0+14 -0+e0 R_SH_IMM_HI16_PCREL gothertext1 -0+e4 R_SH_IMM_MEDHI16_PCREL gothertext1\+0x0+4 -0+e8 R_SH_IMM_MEDLOW16_PCREL gothertext1\+0x0+8 -0+ec R_SH_IMM_LOW16_PCREL gothertext1\+0x0+c -0+fc R_SH_IMM_HI16_PCREL gothertext5\+0x0+8 -0+100 R_SH_IMM_MEDHI16_PCREL gothertext5\+0x0+c -0+104 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+10 -0+108 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+14 - -Contents of section \.text: - 0000 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0010 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0020 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0040 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 0060 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0070 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 00a0 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 00b0 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 00d0 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00e0 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 00f0 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0100 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0110 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel64-2.d b/gas/testsuite/gas/sh/sh64/rel64-2.d deleted file mode 100644 index 7d5ca54..0000000 --- a/gas/testsuite/gas/sh/sh64/rel64-2.d +++ /dev/null @@ -1,111 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: rel-2.s -#name: MOVI: PC+1-relative relocs, 64-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+10 R_SH_IMM_LOW16_PCREL \.data\+0x0+7 -0+14 R_SH_IMM_LOW16_PCREL \.data\+0x0+b -0+18 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+f -0+2c R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+30 R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+34 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+23 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+8 -0+4c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+c -0+50 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+10 -0+64 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+68 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+6c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+24 -0+80 R_SH_IMM_LOW16_PCREL extern2-0x0+1 -0+84 R_SH_IMM_LOW16_PCREL extern3-0x0+1 -0+88 R_SH_IMM_MEDLOW16_PCREL extern4-0x0+1 -0+9c R_SH_IMM_LOW16_PCREL extern6\+0x0+f -0+a0 R_SH_IMM_LOW16_PCREL extern7\+0x0+b -0+a4 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+3 -0+b8 R_SH_IMM_LOW16_PCREL gdata2-0x0+1 -0+bc R_SH_IMM_LOW16_PCREL gdata3-0x0+1 -0+c0 R_SH_IMM_MEDLOW16_PCREL gdata4-0x0+1 -0+d4 R_SH_IMM_LOW16_PCREL gdata6\+0x0+f -0+d8 R_SH_IMM_LOW16_PCREL gdata7\+0x0+b -0+dc R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+3 -0+f0 R_SH_IMM_LOW16_PCREL gothertext2-0x0+1 -0+f4 R_SH_IMM_LOW16_PCREL gothertext3-0x0+1 -0+f8 R_SH_IMM_MEDLOW16_PCREL gothertext4-0x0+1 -0+10c R_SH_IMM_LOW16_PCREL gothertext6\+0x0+f -0+110 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+b -0+114 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+3 -0+ R_SH_IMM_HI16_PCREL \.data\+0x0+3 -0+4 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+7 -0+8 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+b -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+f -0+1c R_SH_IMM_HI16_PCREL \.data\+0x0+1b -0+20 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+1f -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+23 -0+28 R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+38 R_SH_IMM_HI16_PCREL \.othertext\+0x0+4 -0+3c R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+8 -0+40 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+c -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+10 -0+54 R_SH_IMM_HI16_PCREL \.othertext\+0x0+1c -0+58 R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+20 -0+5c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+24 -0+60 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+70 R_SH_IMM_HI16_PCREL extern1-0x0+1 -0+74 R_SH_IMM_MEDHI16_PCREL extern1\+0x0+3 -0+78 R_SH_IMM_MEDLOW16_PCREL extern1\+0x0+7 -0+7c R_SH_IMM_LOW16_PCREL extern1\+0x0+b -0+8c R_SH_IMM_HI16_PCREL extern5\+0x0+7 -0+90 R_SH_IMM_MEDHI16_PCREL extern5\+0x0+b -0+94 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+f -0+98 R_SH_IMM_LOW16_PCREL extern5\+0x0+13 -0+a8 R_SH_IMM_HI16_PCREL gdata1-0x0+1 -0+ac R_SH_IMM_MEDHI16_PCREL gdata1\+0x0+3 -0+b0 R_SH_IMM_MEDLOW16_PCREL gdata1\+0x0+7 -0+b4 R_SH_IMM_LOW16_PCREL gdata1\+0x0+b -0+c4 R_SH_IMM_HI16_PCREL gdata5\+0x0+7 -0+c8 R_SH_IMM_MEDHI16_PCREL gdata5\+0x0+b -0+cc R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+f -0+d0 R_SH_IMM_LOW16_PCREL gdata5\+0x0+13 -0+e0 R_SH_IMM_HI16_PCREL gothertext1-0x0+1 -0+e4 R_SH_IMM_MEDHI16_PCREL gothertext1\+0x0+3 -0+e8 R_SH_IMM_MEDLOW16_PCREL gothertext1\+0x0+7 -0+ec R_SH_IMM_LOW16_PCREL gothertext1\+0x0+b -0+fc R_SH_IMM_HI16_PCREL gothertext5\+0x0+7 -0+100 R_SH_IMM_MEDHI16_PCREL gothertext5\+0x0+b -0+104 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+f -0+108 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+13 - -Contents of section \.text: - 0000 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0010 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0020 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0040 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 0060 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0070 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 00a0 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 00b0 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 00d0 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00e0 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 00f0 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0100 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0110 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel64-3.d b/gas/testsuite/gas/sh/sh64/rel64-3.d deleted file mode 100644 index 986054d..0000000 --- a/gas/testsuite/gas/sh/sh64/rel64-3.d +++ /dev/null @@ -1,111 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: rel-3.s -#name: MOVI: PC-relative datalabel relocs, 64-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+10 R_SH_IMM_LOW16_PCREL \.data\+0x0+8 -0+14 R_SH_IMM_LOW16_PCREL \.data\+0x0+c -0+18 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+10 -0+2c R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+30 R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+34 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+24 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+8 -0+4c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+c -0+50 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+10 -0+64 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+68 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+6c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+24 -0+80 R_SH_IMM_LOW16_PCREL extern2 -0+84 R_SH_IMM_LOW16_PCREL extern3 -0+88 R_SH_IMM_MEDLOW16_PCREL extern4 -0+9c R_SH_IMM_LOW16_PCREL extern6\+0x0+10 -0+a0 R_SH_IMM_LOW16_PCREL extern7\+0x0+c -0+a4 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+4 -0+b8 R_SH_IMM_LOW16_PCREL gdata2 -0+bc R_SH_IMM_LOW16_PCREL gdata3 -0+c0 R_SH_IMM_MEDLOW16_PCREL gdata4 -0+d4 R_SH_IMM_LOW16_PCREL gdata6\+0x0+10 -0+d8 R_SH_IMM_LOW16_PCREL gdata7\+0x0+c -0+dc R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+4 -0+f0 R_SH_IMM_LOW16_PCREL gothertext2 -0+f4 R_SH_IMM_LOW16_PCREL gothertext3 -0+f8 R_SH_IMM_MEDLOW16_PCREL gothertext4 -0+10c R_SH_IMM_LOW16_PCREL gothertext6\+0x0+10 -0+110 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+c -0+114 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+4 -0+ R_SH_IMM_HI16_PCREL \.data\+0x0+4 -0+4 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+8 -0+8 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+c -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+10 -0+1c R_SH_IMM_HI16_PCREL \.data\+0x0+1c -0+20 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+20 -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+24 -0+28 R_SH_IMM_LOW16_PCREL \.data\+0x0+28 -0+38 R_SH_IMM_HI16_PCREL \.othertext\+0x0+4 -0+3c R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+8 -0+40 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+c -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+10 -0+54 R_SH_IMM_HI16_PCREL \.othertext\+0x0+1c -0+58 R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+20 -0+5c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+24 -0+60 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+28 -0+70 R_SH_IMM_HI16_PCREL extern1 -0+74 R_SH_IMM_MEDHI16_PCREL extern1\+0x0+4 -0+78 R_SH_IMM_MEDLOW16_PCREL extern1\+0x0+8 -0+7c R_SH_IMM_LOW16_PCREL extern1\+0x0+c -0+8c R_SH_IMM_HI16_PCREL extern5\+0x0+8 -0+90 R_SH_IMM_MEDHI16_PCREL extern5\+0x0+c -0+94 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+10 -0+98 R_SH_IMM_LOW16_PCREL extern5\+0x0+14 -0+a8 R_SH_IMM_HI16_PCREL gdata1 -0+ac R_SH_IMM_MEDHI16_PCREL gdata1\+0x0+4 -0+b0 R_SH_IMM_MEDLOW16_PCREL gdata1\+0x0+8 -0+b4 R_SH_IMM_LOW16_PCREL gdata1\+0x0+c -0+c4 R_SH_IMM_HI16_PCREL gdata5\+0x0+8 -0+c8 R_SH_IMM_MEDHI16_PCREL gdata5\+0x0+c -0+cc R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+10 -0+d0 R_SH_IMM_LOW16_PCREL gdata5\+0x0+14 -0+e0 R_SH_IMM_HI16_PCREL gothertext1 -0+e4 R_SH_IMM_MEDHI16_PCREL gothertext1\+0x0+4 -0+e8 R_SH_IMM_MEDLOW16_PCREL gothertext1\+0x0+8 -0+ec R_SH_IMM_LOW16_PCREL gothertext1\+0x0+c -0+fc R_SH_IMM_HI16_PCREL gothertext5\+0x0+8 -0+100 R_SH_IMM_MEDHI16_PCREL gothertext5\+0x0+c -0+104 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+10 -0+108 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+14 - -Contents of section \.text: - 0000 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0010 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0020 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0040 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 0060 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0070 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 00a0 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 00b0 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 00d0 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00e0 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 00f0 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0100 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0110 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel64-4.d b/gas/testsuite/gas/sh/sh64/rel64-4.d deleted file mode 100644 index 0a3e48e..0000000 --- a/gas/testsuite/gas/sh/sh64/rel64-4.d +++ /dev/null @@ -1,111 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: rel-4.s -#name: MOVI: PC+1-relative datalabel relocs, 64-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+10 R_SH_IMM_LOW16_PCREL \.data\+0x0+7 -0+14 R_SH_IMM_LOW16_PCREL \.data\+0x0+b -0+18 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+f -0+2c R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+30 R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+34 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+23 -0+48 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+7 -0+4c R_SH_IMM_LOW16_PCREL \.othertext\+0x0+b -0+50 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+f -0+64 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+27 -0+68 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+27 -0+6c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+23 -0+80 R_SH_IMM_LOW16_PCREL extern2-0x0+1 -0+84 R_SH_IMM_LOW16_PCREL extern3-0x0+1 -0+88 R_SH_IMM_MEDLOW16_PCREL extern4-0x0+1 -0+9c R_SH_IMM_LOW16_PCREL extern6\+0x0+f -0+a0 R_SH_IMM_LOW16_PCREL extern7\+0x0+b -0+a4 R_SH_IMM_MEDLOW16_PCREL extern8\+0x0+3 -0+b8 R_SH_IMM_LOW16_PCREL gdata2-0x0+1 -0+bc R_SH_IMM_LOW16_PCREL gdata3-0x0+1 -0+c0 R_SH_IMM_MEDLOW16_PCREL gdata4-0x0+1 -0+d4 R_SH_IMM_LOW16_PCREL gdata6\+0x0+f -0+d8 R_SH_IMM_LOW16_PCREL gdata7\+0x0+b -0+dc R_SH_IMM_MEDLOW16_PCREL gdata8\+0x0+3 -0+f0 R_SH_IMM_LOW16_PCREL gothertext2-0x0+1 -0+f4 R_SH_IMM_LOW16_PCREL gothertext3-0x0+1 -0+f8 R_SH_IMM_MEDLOW16_PCREL gothertext4-0x0+1 -0+10c R_SH_IMM_LOW16_PCREL gothertext6\+0x0+f -0+110 R_SH_IMM_LOW16_PCREL gothertext7\+0x0+b -0+114 R_SH_IMM_MEDLOW16_PCREL gothertext8\+0x0+3 -0+ R_SH_IMM_HI16_PCREL \.data\+0x0+3 -0+4 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+7 -0+8 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+b -0+c R_SH_IMM_LOW16_PCREL \.data\+0x0+f -0+1c R_SH_IMM_HI16_PCREL \.data\+0x0+1b -0+20 R_SH_IMM_MEDHI16_PCREL \.data\+0x0+1f -0+24 R_SH_IMM_MEDLOW16_PCREL \.data\+0x0+23 -0+28 R_SH_IMM_LOW16_PCREL \.data\+0x0+27 -0+38 R_SH_IMM_HI16_PCREL \.othertext\+0x0+3 -0+3c R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+7 -0+40 R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+b -0+44 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+f -0+54 R_SH_IMM_HI16_PCREL \.othertext\+0x0+1b -0+58 R_SH_IMM_MEDHI16_PCREL \.othertext\+0x0+1f -0+5c R_SH_IMM_MEDLOW16_PCREL \.othertext\+0x0+23 -0+60 R_SH_IMM_LOW16_PCREL \.othertext\+0x0+27 -0+70 R_SH_IMM_HI16_PCREL extern1-0x0+1 -0+74 R_SH_IMM_MEDHI16_PCREL extern1\+0x0+3 -0+78 R_SH_IMM_MEDLOW16_PCREL extern1\+0x0+7 -0+7c R_SH_IMM_LOW16_PCREL extern1\+0x0+b -0+8c R_SH_IMM_HI16_PCREL extern5\+0x0+7 -0+90 R_SH_IMM_MEDHI16_PCREL extern5\+0x0+b -0+94 R_SH_IMM_MEDLOW16_PCREL extern5\+0x0+f -0+98 R_SH_IMM_LOW16_PCREL extern5\+0x0+13 -0+a8 R_SH_IMM_HI16_PCREL gdata1-0x0+1 -0+ac R_SH_IMM_MEDHI16_PCREL gdata1\+0x0+3 -0+b0 R_SH_IMM_MEDLOW16_PCREL gdata1\+0x0+7 -0+b4 R_SH_IMM_LOW16_PCREL gdata1\+0x0+b -0+c4 R_SH_IMM_HI16_PCREL gdata5\+0x0+7 -0+c8 R_SH_IMM_MEDHI16_PCREL gdata5\+0x0+b -0+cc R_SH_IMM_MEDLOW16_PCREL gdata5\+0x0+f -0+d0 R_SH_IMM_LOW16_PCREL gdata5\+0x0+13 -0+e0 R_SH_IMM_HI16_PCREL gothertext1-0x0+1 -0+e4 R_SH_IMM_MEDHI16_PCREL gothertext1\+0x0+3 -0+e8 R_SH_IMM_MEDLOW16_PCREL gothertext1\+0x0+7 -0+ec R_SH_IMM_LOW16_PCREL gothertext1\+0x0+b -0+fc R_SH_IMM_HI16_PCREL gothertext5\+0x0+7 -0+100 R_SH_IMM_MEDHI16_PCREL gothertext5\+0x0+b -0+104 R_SH_IMM_MEDLOW16_PCREL gothertext5\+0x0+f -0+108 R_SH_IMM_LOW16_PCREL gothertext5\+0x0+13 - -Contents of section \.text: - 0000 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0010 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0020 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0030 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 0040 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 0050 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 0060 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0070 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 0080 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0090 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 00a0 cc0000a0 cc0000a0 cc0000a0 c80000a0 .* - 00b0 c80000a0 c80000a0 cc0000a0 cc0000a0 .* - 00c0 cc0000a0 cc0000a0 c80000a0 c80000a0 .* - 00d0 c80000a0 cc0000a0 cc0000a0 cc0000a0 .* - 00e0 cc0000a0 c80000a0 c80000a0 c80000a0 .* - 00f0 cc0000a0 cc0000a0 cc0000a0 cc0000a0 .* - 0100 c80000a0 c80000a0 c80000a0 cc0000a0 .* - 0110 cc0000a0 cc0000a0 .* -Contents of section \.data: - 0000 00000000 00000000 00000000 00000000 .* - 0010 00000000 00000000 00000000 00000000 .* - 0020 00000000 00000000 00000000 00000000 .* - 0030 00000000 00000000 00000000 00000000 .* - 0040 00000000 .* -Contents of section \.othertext: - 0000 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0010 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0020 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0030 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0040 6ff0fff0 .* diff --git a/gas/testsuite/gas/sh/sh64/rel64-5.d b/gas/testsuite/gas/sh/sh64/rel64-5.d deleted file mode 100644 index cd7b927..0000000 --- a/gas/testsuite/gas/sh/sh64/rel64-5.d +++ /dev/null @@ -1,40 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#source: rel-5.s -#name: MOVI: PC-relative reloc within .text, 64-bit ABI. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.text\]: -OFFSET TYPE VALUE -0+5c R_SH_IMM_LOW16_PCREL gstart6\+0x0+18 -0+60 R_SH_IMM_MEDLOW16_PCREL gstart7\+0x0+20 -0+1c R_SH_IMM_HI16_PCREL gstart2\+0x0+8 -0+20 R_SH_IMM_MEDHI16_PCREL gstart2\+0x0+c -0+24 R_SH_IMM_MEDLOW16_PCREL gstart2\+0x0+10 -0+28 R_SH_IMM_LOW16_PCREL gstart2\+0x0+14 -0+2c R_SH_IMM_HI16_PCREL gstart3\+0x0+3 -0+30 R_SH_IMM_MEDHI16_PCREL gstart3\+0x0+7 -0+34 R_SH_IMM_MEDLOW16_PCREL gstart3\+0x0+b -0+38 R_SH_IMM_LOW16_PCREL gstart3\+0x0+f -0+3c R_SH_IMM_HI16_PCREL gstart4\+0x0+8 -0+40 R_SH_IMM_MEDHI16_PCREL gstart4\+0x0+c -0+44 R_SH_IMM_MEDLOW16_PCREL gstart4\+0x0+10 -0+48 R_SH_IMM_LOW16_PCREL gstart4\+0x0+14 -0+4c R_SH_IMM_HI16_PCREL gstart5\+0x0+b -0+50 R_SH_IMM_MEDHI16_PCREL gstart5\+0x0+f -0+54 R_SH_IMM_MEDLOW16_PCREL gstart5\+0x0+13 -0+58 R_SH_IMM_LOW16_PCREL gstart5\+0x0+17 - -Contents of section \.text: - 0000 6ff0fff0 cc01a5e0 cc0191e0 cc01a1e0 .* - 0010 cc01ade0 cc01e280 cc000320 cc0001e0 .* - 0020 c80001e0 c80001e0 c80001e0 cc0001e0 .* - 0030 c80001e0 c80001e0 c80001e0 cc0001e0 .* - 0040 c80001e0 c80001e0 c80001e0 cc0001e0 .* - 0050 c80001e0 c80001e0 c80001e0 cc000280 .* - 0060 cc000320 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0070 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0080 6ff0fff0 6ff0fff0 6ff0fff0 6ff0fff0 .* - 0090 6ff0fff0 .* - diff --git a/gas/testsuite/gas/sh/sh64/relax-1.d b/gas/testsuite/gas/sh/sh64/relax-1.d deleted file mode 100644 index 82fb4c6..0000000 --- a/gas/testsuite/gas/sh/sh64/relax-1.d +++ /dev/null @@ -1,30 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: relax-1.s -#name: Assembler PT relaxation limit, from first to second state. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+cc000990[ ]+movi 2,r25 -[ ]+8:[ ]+c8000590[ ]+shori 1,r25 -[ ]+c:[ ]+6bf56630[ ]+ptrel/l r25,tr3 - -0+10 <x1>: -[ ]+10:[ ]+e9fffe40[ ]+pta/l 2000c <x0>,tr4 -[ ]+\.\.\. - -0+2000c <x0>: -[ ]+2000c:[ ]+ea000650[ ]+pta/l 10 <x1>,tr5 -[ ]+20010:[ ]+ea000260[ ]+pta/l 10 <x1>,tr6 -[ ]+20014:[ ]+cffff590[ ]+movi -3,r25 -[ ]+20018:[ ]+cbffd590[ ]+shori 65525,r25 -[ ]+2001c:[ ]+6bf56660[ ]+ptrel/l r25,tr6 -[ ]+20020:[ ]+cffff590[ ]+movi -3,r25 -[ ]+20024:[ ]+cbffa590[ ]+shori 65513,r25 -[ ]+20028:[ ]+6bf56670[ ]+ptrel/l r25,tr7 diff --git a/gas/testsuite/gas/sh/sh64/relax-1.s b/gas/testsuite/gas/sh/sh64/relax-1.s deleted file mode 100644 index 807b236..0000000 --- a/gas/testsuite/gas/sh/sh64/relax-1.s +++ /dev/null @@ -1,18 +0,0 @@ -! Check limits of PT assembler relaxation states. Unfortunately, we can't -! check the 32 and 48 bit limit on a host with 32-bit longs, so we just -! check the first state. This also checks that a PT expansion without a -! relocation to 32 bits works. - - .mode SHmedia -start: - nop -start2: - pt x0,tr3 -x1: - pt x0,tr4 - .space 32767*4-4,0 -x0: - pt x1,tr5 - pt x1,tr6 - pt x1,tr6 - pt x1,tr7 diff --git a/gas/testsuite/gas/sh/sh64/relax-2.d b/gas/testsuite/gas/sh/sh64/relax-2.d deleted file mode 100644 index c954dd4..0000000 --- a/gas/testsuite/gas/sh/sh64/relax-2.d +++ /dev/null @@ -1,30 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: relax-2.s -#name: Assembler PTB relaxation limit, from first to second state. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+cc000990[ ]+movi 2,r25 -[ ]+8:[ ]+c8000190[ ]+shori 0,r25 -[ ]+c:[ ]+6bf56630[ ]+ptrel/l r25,tr3 - -0+10 <[ax]1>: -[ ]+10:[ ]+edfffe40[ ]+ptb/l 2000c <[ax]0>,tr4 -[ ]+\.\.\. - -0+2000c <[ax]0>: -[ ]+2000c:[ ]+ee000650[ ]+ptb/l 10 <[ax]1>,tr5 -[ ]+20010:[ ]+ee000260[ ]+ptb/l 10 <[ax]1>,tr6 -[ ]+20014:[ ]+cffff590[ ]+movi -3,r25 -[ ]+20018:[ ]+cbffd190[ ]+shori 65524,r25 -[ ]+2001c:[ ]+6bf56660[ ]+ptrel/l r25,tr6 -[ ]+20020:[ ]+cffff590[ ]+movi -3,r25 -[ ]+20024:[ ]+cbffa190[ ]+shori 65512,r25 -[ ]+20028:[ ]+6bf56670[ ]+ptrel/l r25,tr7 diff --git a/gas/testsuite/gas/sh/sh64/relax-2.s b/gas/testsuite/gas/sh/sh64/relax-2.s deleted file mode 100644 index 9d3a323..0000000 --- a/gas/testsuite/gas/sh/sh64/relax-2.s +++ /dev/null @@ -1,23 +0,0 @@ -! Check relaxation for PTB. This is like relax-1.s, but presumably we can -! have bugs in the slight differences in limit-checking compared to PT and -! PTA. - - .mode SHmedia -start: - nop -start2: - ptb x0,tr3 - .mode SHcompact -x1: - .mode SHmedia -a1: - ptb x0,tr4 - .space 32767*4-4,0 - .mode SHcompact -x0: - .mode SHmedia -a0: - ptb x1,tr5 - ptb x1,tr6 - ptb x1,tr6 - ptb x1,tr7 diff --git a/gas/testsuite/gas/sh/sh64/relax-3.d b/gas/testsuite/gas/sh/sh64/relax-3.d deleted file mode 100644 index 80dd1ae..0000000 --- a/gas/testsuite/gas/sh/sh64/relax-3.d +++ /dev/null @@ -1,43 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: relax-3.s -#name: Assembler PC-rel MOVI relaxation limit, from first to second state. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+6ff0fff0[ ]+nop - -0+4 <start2>: -[ ]+4:[ ]+cc000030[ ]+movi 0,r3 -[ ]+8:[ ]+ca001030[ ]+shori 32772,r3 - -0+c <x1>: -[ ]+c:[ ]+cdfffc40[ ]+movi 32767,r4 -[ ]+\.\.\. - -0+800c <x0>: -[ ]+800c:[ ]+ce000050[ ]+movi -32768,r5 -[ ]+8010:[ ]+cffffc60[ ]+movi -1,r6 -[ ]+8014:[ ]+c9fffc60[ ]+shori 32767,r6 -[ ]+8018:[ ]+cffffc70[ ]+movi -1,r7 -[ ]+801c:[ ]+cbfffc70[ ]+shori 65535,r7 -[ ]+8020:[ ]+cbfffc70[ ]+shori 65535,r7 -[ ]+8024:[ ]+ca000070[ ]+shori 32768,r7 -[ ]+8028:[ ]+cc000080[ ]+movi 0,r8 -[ ]+802c:[ ]+c8000080[ ]+shori 0,r8 -[ ]+8030:[ ]+c8000080[ ]+shori 0,r8 -[ ]+8034:[ ]+c9fffc80[ ]+shori 32767,r8 -[ ]+8038:[ ]+cc000080[ ]+movi 0,r8 -[ ]+803c:[ ]+c8000080[ ]+shori 0,r8 -[ ]+8040:[ ]+c8000080[ ]+shori 0,r8 -[ ]+8044:[ ]+c8004080[ ]+shori 16,r8 -Disassembly of section \.text\.another: - -0+ <y0>: -[ ]+0:[ ]+cc000090[ ]+movi 0,r9 -[ ]+4:[ ]+c8000090[ ]+shori 0,r9 -[ ]+8:[ ]+c8000090[ ]+shori 0,r9 -[ ]+c:[ ]+c8002090[ ]+shori 8,r9 diff --git a/gas/testsuite/gas/sh/sh64/relax-3.s b/gas/testsuite/gas/sh/sh64/relax-3.s deleted file mode 100644 index b2ec30a..0000000 --- a/gas/testsuite/gas/sh/sh64/relax-3.s +++ /dev/null @@ -1,32 +0,0 @@ -! Check relaxation for MOVI PC-relative expansions. Unfortunately, we -! can't check the 32 and 48 bit limit on a host with 32-bit longs, so we -! just check going from first state to the second state. - - .mode SHmedia - .text -start: - nop -start2: - movi (x0-4-$),r3 -x1: - movi (x0-1-$),r4 - .space 32768-4,0 -x0: - movi (x1-$),r5 - movi (x1+3-$),r6 - -! These PC-relative expressions are here because of past bugs leading to -! premature symbol evaluation and assignment when they were exposed to -! relaxation. -! The expected result may need future tweaking if advances are done in -! relaxation. At the time of this writing the expressions are not -! relaxed although the numbers will be in the right range finally. - - movi (x1-x0),r7 - movi (x0-1-x1),r8 - movi (y1-y0),r8 - - .section .text.another,"ax" -y0: - movi (x1-start2),r9 -y1: diff --git a/gas/testsuite/gas/sh/sh64/sh64.exp b/gas/testsuite/gas/sh/sh64/sh64.exp deleted file mode 100644 index 4f19eb1..0000000 --- a/gas/testsuite/gas/sh/sh64/sh64.exp +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (C) 2000-2018 Free Software Foundation, Inc. - -# 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. - -# Please email any bugs, comments, and/or additions to this file to: -# dejagnu@gnu.org - -if [istarget sh64-*-*] then { - set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]] - foreach rdtest $rd_test_list { - # We need to strip the ".d", but can leave the dirname. - verbose [file rootname $rdtest] - run_dump_test [file rootname $rdtest] - } -} diff --git a/gas/testsuite/gas/sh/sh64/shift-1.s b/gas/testsuite/gas/sh/sh64/shift-1.s deleted file mode 100644 index b4967c7..0000000 --- a/gas/testsuite/gas/sh/sh64/shift-1.s +++ /dev/null @@ -1,42 +0,0 @@ -! Check that shift expressions translate to the proper reloc for MOVI and -! SHORI for local and external symbols. This is the 32-bit subset. - .text - .mode SHmedia -start: - movi localsym & 65535,r4 - movi (localsym >> 0) & 65535,r4 - movi (localsym >> 16) & 65535,r4 - - movi externsym & 65535,r4 - movi (externsym >> 0) & 65535,r4 - movi (externsym >> 16) & 65535,r4 - - shori localsym & 65535,r4 - shori (localsym >> 0) & 65535,r4 - shori (localsym >> 16) & 65535,r4 - - shori externsym & 65535,r4 - shori (externsym >> 0) & 65535,r4 - shori (externsym >> 16) & 65535,r4 - - movi (localsym + 42) & 65535,r4 - movi ((localsym + 43) >> 0) & 65535,r4 - movi ((localsym + 44) >> 16) & 65535,r4 - - movi (externsym + 45) & 65535,r4 - movi ((externsym + 46) >> 0) & 65535,r4 - movi ((externsym + 47) >> 16) & 65535,r4 - - shori (localsym + 42) & 65535,r4 - shori ((localsym + 43) >> 0) & 65535,r4 - shori ((localsym + 44) >> 16) & 65535,r4 - - shori (externsym + 45) & 65535,r4 - shori ((externsym + 46) >> 0) & 65535,r4 - shori ((externsym + 47) >> 16) & 65535,r4 - - .data -! Just make localsym have a non-zero offset into .data. - .long 0 -localsym: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/shift-2.s b/gas/testsuite/gas/sh/sh64/shift-2.s deleted file mode 100644 index 082ea37..0000000 --- a/gas/testsuite/gas/sh/sh64/shift-2.s +++ /dev/null @@ -1,34 +0,0 @@ -! Check that shift expressions translate to the proper reloc for MOVI and -! SHORI for local and external symbols. This is the 64-bit subset. - .text - .mode SHmedia -start: - movi (localsym >> 32) & 65535,r4 - movi (localsym >> 48) & 65535,r4 - - movi ((localsym + 44) >> 32) & 65535,r4 - movi ((localsym + 43) >> 48) & 65535,r4 - - movi (externsym >> 32) & 65535,r4 - movi (externsym >> 48) & 65535,r4 - - movi ((externsym + 41) >> 32) & 65535,r4 - movi ((externsym + 42) >> 48) & 65535,r4 - - shori (localsym >> 32) & 65535,r4 - shori (localsym >> 48) & 65535,r4 - - shori ((localsym + 44) >> 32) & 65535,r4 - shori ((localsym + 43) >> 48) & 65535,r4 - - shori (externsym >> 32) & 65535,r4 - shori (externsym >> 48) & 65535,r4 - - shori ((externsym + 41) >> 32) & 65535,r4 - shori ((externsym + 42) >> 48) & 65535,r4 - - .data -! Just make localsym have a non-zero offset into .data. - .long 0 -localsym: - .long 0 diff --git a/gas/testsuite/gas/sh/sh64/shift-3.s b/gas/testsuite/gas/sh/sh64/shift-3.s deleted file mode 100644 index 6d9bff3..0000000 --- a/gas/testsuite/gas/sh/sh64/shift-3.s +++ /dev/null @@ -1,7 +0,0 @@ -! This should not get an internal error and it should emit the expected -! relocs, even though the symbol looks local and is undefined. - .text - .mode SHmedia -start: - movi .LC0 & 65535, r1 - movi (.LC0 >> 16) & 65535, r3 diff --git a/gas/testsuite/gas/sh/sh64/shift32-1.d b/gas/testsuite/gas/sh/sh64/shift32-1.d deleted file mode 100644 index 7e14c21..0000000 --- a/gas/testsuite/gas/sh/sh64/shift32-1.d +++ /dev/null @@ -1,58 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#source: shift-1.s -#name: Shift expressions, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000040[ ]+movi 0,r4 -[ ]+0:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+4:[ ]+cc000040[ ]+movi 0,r4 -[ ]+4:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+8:[ ]+cc000040[ ]+movi 0,r4 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x4 -[ ]+c:[ ]+cc000040[ ]+movi 0,r4 -[ ]+c:[ ]+R_SH_IMM_LOW16 externsym -[ ]+10:[ ]+cc000040[ ]+movi 0,r4 -[ ]+10:[ ]+R_SH_IMM_LOW16 externsym -[ ]+14:[ ]+cc000040[ ]+movi 0,r4 -[ ]+14:[ ]+R_SH_IMM_MEDLOW16 externsym -[ ]+18:[ ]+c8000040[ ]+shori 0,r4 -[ ]+18:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+1c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+1c:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+20:[ ]+c8000040[ ]+shori 0,r4 -[ ]+20:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x4 -[ ]+24:[ ]+c8000040[ ]+shori 0,r4 -[ ]+24:[ ]+R_SH_IMM_LOW16 externsym -[ ]+28:[ ]+c8000040[ ]+shori 0,r4 -[ ]+28:[ ]+R_SH_IMM_LOW16 externsym -[ ]+2c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+2c:[ ]+R_SH_IMM_MEDLOW16 externsym -[ ]+30:[ ]+cc000040[ ]+movi 0,r4 -[ ]+30:[ ]+R_SH_IMM_LOW16 \.data\+0x2e -[ ]+34:[ ]+cc000040[ ]+movi 0,r4 -[ ]+34:[ ]+R_SH_IMM_LOW16 \.data\+0x2f -[ ]+38:[ ]+cc000040[ ]+movi 0,r4 -[ ]+38:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x30 -[ ]+3c:[ ]+cc000040[ ]+movi 0,r4 -[ ]+3c:[ ]+R_SH_IMM_LOW16 externsym\+0x2d -[ ]+40:[ ]+cc000040[ ]+movi 0,r4 -[ ]+40:[ ]+R_SH_IMM_LOW16 externsym\+0x2e -[ ]+44:[ ]+cc000040[ ]+movi 0,r4 -[ ]+44:[ ]+R_SH_IMM_MEDLOW16 externsym\+0x2f -[ ]+48:[ ]+c8000040[ ]+shori 0,r4 -[ ]+48:[ ]+R_SH_IMM_LOW16 \.data\+0x2e -[ ]+4c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+4c:[ ]+R_SH_IMM_LOW16 \.data\+0x2f -[ ]+50:[ ]+c8000040[ ]+shori 0,r4 -[ ]+50:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x30 -[ ]+54:[ ]+c8000040[ ]+shori 0,r4 -[ ]+54:[ ]+R_SH_IMM_LOW16 externsym\+0x2d -[ ]+58:[ ]+c8000040[ ]+shori 0,r4 -[ ]+58:[ ]+R_SH_IMM_LOW16 externsym\+0x2e -[ ]+5c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+5c:[ ]+R_SH_IMM_MEDLOW16 externsym\+0x2f diff --git a/gas/testsuite/gas/sh/sh64/shift32-3.d b/gas/testsuite/gas/sh/sh64/shift32-3.d deleted file mode 100644 index 01a0c53..0000000 --- a/gas/testsuite/gas/sh/sh64/shift32-3.d +++ /dev/null @@ -1,14 +0,0 @@ -#as: --abi=32 -#objdump: -dr -#source: shift-3.s -#name: Shift expression, local but undefined symbol, 32-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000010[ ]+movi 0,r1 -[ ]+0:[ ]+R_SH_IMM_LOW16 \.LC0 -[ ]+4:[ ]+cc000030[ ]+movi 0,r3 -[ ]+4:[ ]+R_SH_IMM_MEDLOW16 \.LC0 diff --git a/gas/testsuite/gas/sh/sh64/shift32-noexp-3.d b/gas/testsuite/gas/sh/sh64/shift32-noexp-3.d deleted file mode 100644 index 3d8c34b..0000000 --- a/gas/testsuite/gas/sh/sh64/shift32-noexp-3.d +++ /dev/null @@ -1,14 +0,0 @@ -#as: --abi=32 -no-expand -#objdump: -dr -#source: shift-3.s -#name: Shift expression, local but undefined symbol, 32-bit ABI with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000010[ ]+movi 0,r1 -[ ]+0:[ ]+R_SH_IMM_LOW16 \.LC0 -[ ]+4:[ ]+cc000030[ ]+movi 0,r3 -[ ]+4:[ ]+R_SH_IMM_MEDLOW16 \.LC0 diff --git a/gas/testsuite/gas/sh/sh64/shift64-1.d b/gas/testsuite/gas/sh/sh64/shift64-1.d deleted file mode 100644 index a19ed35..0000000 --- a/gas/testsuite/gas/sh/sh64/shift64-1.d +++ /dev/null @@ -1,58 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: shift-1.s -#name: Shift expressions, 64-bit ABI, 32-bit subset. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000040[ ]+movi 0,r4 -[ ]+0:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+4:[ ]+cc000040[ ]+movi 0,r4 -[ ]+4:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+8:[ ]+cc000040[ ]+movi 0,r4 -[ ]+8:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x4 -[ ]+c:[ ]+cc000040[ ]+movi 0,r4 -[ ]+c:[ ]+R_SH_IMM_LOW16 externsym -[ ]+10:[ ]+cc000040[ ]+movi 0,r4 -[ ]+10:[ ]+R_SH_IMM_LOW16 externsym -[ ]+14:[ ]+cc000040[ ]+movi 0,r4 -[ ]+14:[ ]+R_SH_IMM_MEDLOW16 externsym -[ ]+18:[ ]+c8000040[ ]+shori 0,r4 -[ ]+18:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+1c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+1c:[ ]+R_SH_IMM_LOW16 \.data\+0x4 -[ ]+20:[ ]+c8000040[ ]+shori 0,r4 -[ ]+20:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x4 -[ ]+24:[ ]+c8000040[ ]+shori 0,r4 -[ ]+24:[ ]+R_SH_IMM_LOW16 externsym -[ ]+28:[ ]+c8000040[ ]+shori 0,r4 -[ ]+28:[ ]+R_SH_IMM_LOW16 externsym -[ ]+2c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+2c:[ ]+R_SH_IMM_MEDLOW16 externsym -[ ]+30:[ ]+cc000040[ ]+movi 0,r4 -[ ]+30:[ ]+R_SH_IMM_LOW16 \.data\+0x2e -[ ]+34:[ ]+cc000040[ ]+movi 0,r4 -[ ]+34:[ ]+R_SH_IMM_LOW16 \.data\+0x2f -[ ]+38:[ ]+cc000040[ ]+movi 0,r4 -[ ]+38:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x30 -[ ]+3c:[ ]+cc000040[ ]+movi 0,r4 -[ ]+3c:[ ]+R_SH_IMM_LOW16 externsym\+0x2d -[ ]+40:[ ]+cc000040[ ]+movi 0,r4 -[ ]+40:[ ]+R_SH_IMM_LOW16 externsym\+0x2e -[ ]+44:[ ]+cc000040[ ]+movi 0,r4 -[ ]+44:[ ]+R_SH_IMM_MEDLOW16 externsym\+0x2f -[ ]+48:[ ]+c8000040[ ]+shori 0,r4 -[ ]+48:[ ]+R_SH_IMM_LOW16 \.data\+0x2e -[ ]+4c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+4c:[ ]+R_SH_IMM_LOW16 \.data\+0x2f -[ ]+50:[ ]+c8000040[ ]+shori 0,r4 -[ ]+50:[ ]+R_SH_IMM_MEDLOW16 \.data\+0x30 -[ ]+54:[ ]+c8000040[ ]+shori 0,r4 -[ ]+54:[ ]+R_SH_IMM_LOW16 externsym\+0x2d -[ ]+58:[ ]+c8000040[ ]+shori 0,r4 -[ ]+58:[ ]+R_SH_IMM_LOW16 externsym\+0x2e -[ ]+5c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+5c:[ ]+R_SH_IMM_MEDLOW16 externsym\+0x2f diff --git a/gas/testsuite/gas/sh/sh64/shift64-2.d b/gas/testsuite/gas/sh/sh64/shift64-2.d deleted file mode 100644 index 51528c2..0000000 --- a/gas/testsuite/gas/sh/sh64/shift64-2.d +++ /dev/null @@ -1,42 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: shift-2.s -#name: Shift expressions, 64-bit ABI, 64-bit subset. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000040[ ]+movi 0,r4 -[ ]+0:[ ]+R_SH_IMM_MEDHI16 \.data\+0x4 -[ ]+4:[ ]+cc000040[ ]+movi 0,r4 -[ ]+4:[ ]+R_SH_IMM_HI16 \.data\+0x4 -[ ]+8:[ ]+cc000040[ ]+movi 0,r4 -[ ]+8:[ ]+R_SH_IMM_MEDHI16 \.data\+0x30 -[ ]+c:[ ]+cc000040[ ]+movi 0,r4 -[ ]+c:[ ]+R_SH_IMM_HI16 \.data\+0x2f -[ ]+10:[ ]+cc000040[ ]+movi 0,r4 -[ ]+10:[ ]+R_SH_IMM_MEDHI16 externsym -[ ]+14:[ ]+cc000040[ ]+movi 0,r4 -[ ]+14:[ ]+R_SH_IMM_HI16 externsym -[ ]+18:[ ]+cc000040[ ]+movi 0,r4 -[ ]+18:[ ]+R_SH_IMM_MEDHI16 externsym\+0x29 -[ ]+1c:[ ]+cc000040[ ]+movi 0,r4 -[ ]+1c:[ ]+R_SH_IMM_HI16 externsym\+0x2a -[ ]+20:[ ]+c8000040[ ]+shori 0,r4 -[ ]+20:[ ]+R_SH_IMM_MEDHI16 \.data\+0x4 -[ ]+24:[ ]+c8000040[ ]+shori 0,r4 -[ ]+24:[ ]+R_SH_IMM_HI16 \.data\+0x4 -[ ]+28:[ ]+c8000040[ ]+shori 0,r4 -[ ]+28:[ ]+R_SH_IMM_MEDHI16 \.data\+0x30 -[ ]+2c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+2c:[ ]+R_SH_IMM_HI16 \.data\+0x2f -[ ]+30:[ ]+c8000040[ ]+shori 0,r4 -[ ]+30:[ ]+R_SH_IMM_MEDHI16 externsym -[ ]+34:[ ]+c8000040[ ]+shori 0,r4 -[ ]+34:[ ]+R_SH_IMM_HI16 externsym -[ ]+38:[ ]+c8000040[ ]+shori 0,r4 -[ ]+38:[ ]+R_SH_IMM_MEDHI16 externsym\+0x29 -[ ]+3c:[ ]+c8000040[ ]+shori 0,r4 -[ ]+3c:[ ]+R_SH_IMM_HI16 externsym\+0x2a diff --git a/gas/testsuite/gas/sh/sh64/shift64-3.d b/gas/testsuite/gas/sh/sh64/shift64-3.d deleted file mode 100644 index 8d3d950..0000000 --- a/gas/testsuite/gas/sh/sh64/shift64-3.d +++ /dev/null @@ -1,14 +0,0 @@ -#as: --abi=64 -#objdump: -dr -#source: shift-3.s -#name: Shift expression, local but undefined symbol, 64-bit ABI. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000010[ ]+movi 0,r1 -[ ]+0:[ ]+R_SH_IMM_LOW16 \.LC0 -[ ]+4:[ ]+cc000030[ ]+movi 0,r3 -[ ]+4:[ ]+R_SH_IMM_MEDLOW16 \.LC0 diff --git a/gas/testsuite/gas/sh/sh64/shift64-noexp-3.d b/gas/testsuite/gas/sh/sh64/shift64-noexp-3.d deleted file mode 100644 index 70ec8c5..0000000 --- a/gas/testsuite/gas/sh/sh64/shift64-noexp-3.d +++ /dev/null @@ -1,14 +0,0 @@ -#as: --abi=64 -no-expand -#objdump: -dr -#source: shift-3.s -#name: Shift expression, local but undefined symbol, 64-bit ABI with -no-expand. - -.*: file format .*-sh64.* - -Disassembly of section \.text: - -[0]+ <start>: -[ ]+0:[ ]+cc000010[ ]+movi 0,r1 -[ ]+0:[ ]+R_SH_IMM_LOW16 \.LC0 -[ ]+4:[ ]+cc000030[ ]+movi 0,r3 -[ ]+4:[ ]+R_SH_IMM_MEDLOW16 \.LC0 diff --git a/gas/testsuite/gas/sh/sh64/syntax-1.d b/gas/testsuite/gas/sh/sh64/syntax-1.d deleted file mode 100644 index b483293..0000000 --- a/gas/testsuite/gas/sh/sh64/syntax-1.d +++ /dev/null @@ -1,157 +0,0 @@ -#as: --isa=shmedia --abi=64 --no-exp -#objdump: -d -#name: Minimum SH64 Syntax Support. - -.*: file format elf64-sh64.* - -Disassembly of section .text: - -0000000000000000 <.*>: - 0: 88100410 ld.l r1,4,r1 - 4: 88100410 ld.l r1,4,r1 - 8: e8003a00 pta/l 40 <.*>,tr0 - c: e8003600 pta/l 40 <.*>,tr0 - 10: e8003000 pta/u 40 <.*>,tr0 - 14: e8002c00 pta/u 40 <.*>,tr0 - 18: e8002a00 pta/l 40 <.*>,tr0 - 1c: e8002600 pta/l 40 <.*>,tr0 - 20: ec002000 ptb/u 40 <.*>,tr0 - 24: ec001c00 ptb/u 40 <.*>,tr0 - 28: ec001a00 ptb/l 40 <.*>,tr0 - 2c: ec001600 ptb/l 40 <.*>,tr0 - 30: e8001200 pta/l 40 <.*>,tr0 - 34: e8000e00 pta/l 40 <.*>,tr0 - 38: ec000a00 ptb/l 40 <.*>,tr0 - 3c: ec000600 ptb/l 40 <.*>,tr0 - 40: 040983f0 or r0,r32,r63 - 44: 240ffc00 getcon sr,r0 - 48: 27fffc00 getcon usr,r0 - 4c: 4405fc00 gettr tr0,r0 - 50: 4475fc00 gettr tr7,r0 - 54: 380003f0 fmov.s fr0,fr63 - 58: 380103e0 fmov.d dr0,dr62 - 5c: 140e0000 ftrv.s mtrx0,fv0,fv0 - 60: 170ef3c0 ftrv.s mtrx48,fv60,fv60 - 64: 240ffc00 getcon sr,r0 - 68: 241ffc00 getcon ssr,r0 - 6c: 242ffc00 getcon pssr,r0 - 70: 244ffc00 getcon intevt,r0 - 74: 245ffc00 getcon expevt,r0 - 78: 246ffc00 getcon pexpevt,r0 - 7c: 247ffc00 getcon tra,r0 - 80: 248ffc00 getcon spc,r0 - 84: 249ffc00 getcon pspc,r0 - 88: 24affc00 getcon resvec,r0 - 8c: 24bffc00 getcon vbr,r0 - 90: 24dffc00 getcon tea,r0 - 94: 250ffc00 getcon dcr,r0 - 98: 251ffc00 getcon kcr0,r0 - 9c: 252ffc00 getcon kcr1,r0 - a0: 27effc00 getcon ctc,r0 - a4: 27fffc00 getcon usr,r0 - -00000000000000a8 <.*>: - a8: e0 04 mov #4,r0 - aa: 00 09 nop - -00000000000000ac <.*>: - ac: cc001000 movi 4,r0 - -00000000000000b0 <.*>: - b0: 50 02 mov.l @\(8,r0\),r0 - b2: 00 09 nop - -00000000000000b4 <.*>: - b4: b0000400 ld.uw r0,2,r0 - b8: 84000400 ld.w r0,2,r0 - bc: a4000400 st.w r0,2,r0 - c0: 88000400 ld.l r0,4,r0 - c4: a8000400 st.l r0,4,r0 - c8: 94000400 fld.s r0,4,fr0 - cc: b4000400 fst.s r0,4,fr0 - d0: e8000600 pta/l d4 <.*>,tr0 - d4: ec000a00 ptb/l dc <.*>,tr0 - d8: 8c000400 ld.q r0,8,r0 - dc: ac000400 st.q r0,8,r0 - e0: 9c000400 fld.d r0,8,dr0 - e4: bc000400 fst.d r0,8,dr0 - e8: 98000400 fld.p r0,8,fp0 - ec: b8000400 fst.p r0,8,fp0 - f0: e00407f0 alloco r0,32 - f4: e00507f0 icbi r0,32 - f8: e00907f0 ocbi r0,32 - fc: e00807f0 ocbp r0,32 - 100: e00c07f0 ocbwb r0,32 - 104: e00107f0 prefi r0,32 - -0000000000000108 <.*>: - 108: 90 01 mov.w 10e <.*>,r0 ! 8101 - 10a: 85 01 mov.w @\(2,r0\),r0 - 10c: c5 01 mov.w @\(2,gbr\),r0 - 10e: 81 01 mov.w r0,@\(2,r0\) - 110: c1 01 mov.w r0,@\(2,gbr\) - 112: 8b 01 bf 118 <.*> - 114: 89 01 bt 11a <.*> - 116: a0 01 bra 11c <.*> - 118: b0 01 bsr 11e <.*> - 11a: d0 00 mov.l 11c <.*>,r0 ! 5001c601 - 11c: 50 01 mov.l @\(4,r0\),r0 - 11e: c6 01 mov.l @\(4,gbr\),r0 - 120: c7 01 mova 128 <.*>,r0 - 122: 10 01 mov.l r0,@\(4,r0\) - 124: c2 01 mov.l r0,@\(4,gbr\) - 126: 00 09 nop - -0000000000000128 <.*>: - 128: 00000139 .long 0x00000139 - 12c: 0000013d .long 0x0000013d - 130: 00000138 .long 0x00000138 - 134: 00000138 .long 0x00000138 - -0000000000000138 <.*>: - 138: 00 00 .word 0x0000 - 13a: 01 40 .word 0x0140 - 13c: 00 00 .word 0x0000 - 13e: 01 61 .word 0x0161 - -0000000000000140 <.*>: - 140: cc000000 movi 0,r0 - 144: c8000000 shori 0,r0 - 148: 6bf10200 ptabs/l r0,tr0 - 14c: 4401fd20 blink tr0,r18 - 150: cc000000 movi 0,r0 - 154: c8000000 shori 0,r0 - 158: 6bf10200 ptabs/l r0,tr0 - 15c: 4401fd20 blink tr0,r18 - 160: cfff7000 movi -36,r0 - 164: cfffe400 movi -7,r0 - 168: ebfffa00 pta/l 160 <.*>,tr0 - -000000000000016c <.*>: - 16c: 0000016d .long 0x0000016d - -0000000000000170 <.*>: - 170: 00000171 .long 0x00000171 - 174: cfffd000 movi -12,r0 - 178: cfffc000 movi -16,r0 - -000000000000017c <.*>: - 17c: c7 01 mova 184 <.*>,r0 - 17e: 60 12 mov.l @r1,r0 - 180: 30 1c add r1,r0 - 182: 00 03 bsrf r0 - -0000000000000184 <.*>: - 184: 00 00 .word 0x0000 - 186: 00 05 mov.w r0,@\(r0,r0\) - -0000000000000188 <.*>: - 188: cc002400 movi 9,r0 - 18c: cc001c00 movi 7,r0 - 190: cc004000 movi 16,r0 - 194: cc001000 movi 4,r0 - 198: cffff800 movi -2,r0 - 19c: cc000400 movi 1,r0 - 1a0: cc002400 movi 9,r0 - 1a4: cc006000 movi 24,r0 - 1a8: cc002000 movi 8,r0 diff --git a/gas/testsuite/gas/sh/sh64/syntax-1.s b/gas/testsuite/gas/sh/sh64/syntax-1.s deleted file mode 100644 index 43b1dd6..0000000 --- a/gas/testsuite/gas/sh/sh64/syntax-1.s +++ /dev/null @@ -1,199 +0,0 @@ -! Verify that minimum support is provided as per SH-5/ST50-047-02. - - .text - .mode shmedia -start: - -! Both all-upper and all-lower must be supported. PTA/PTB without /L -! or /U is equivalent to with /L - - ld.l r1,4,r1 - LD.L r1,4,r1 - pta/l .L1,tr0 - PTA/L .L1,tr0 - pta/u .L1,tr0 - PTA/U .L1,tr0 - pta/l .L1,tr0 - PTA/L .L1,tr0 - ptb/u .L2,tr0 - PTB/U .L2,tr0 - ptb/l .L2,tr0 - PTB/L .L2,tr0 - pta .L1,tr0 - PTA .L1,tr0 - ptb .L2,tr0 - PTB .L2,tr0 -.L1: - .mode shcompact -.L2: - .align 2 - .mode shmedia - -! All register names accepted, either case. - - or r0,r32,r63 - GETCON CR0,R0 - getcon cr63,r0 - GETTR TR0,R0 - gettr tr7,r0 - FMOV.S FR0,FR63 - fmov.d dr0,dr62 - FTRV.S MTRX0,FV0,fv0 - ftrv.s mtrx48,FV60,FV60 - -! All control register names - - getcon sr,r0 - getcon ssr,r0 - getcon pssr,r0 - getcon intevt,r0 - getcon expevt,r0 - getcon pexpevt,r0 - getcon tra,r0 - getcon spc,r0 - getcon pspc,r0 - getcon resvec,r0 - getcon vbr,r0 - getcon tea,r0 - getcon dcr,r0 - getcon kcr0,r0 - getcon kcr1,r0 - getcon ctc,r0 - getcon usr,r0 - -! immediates - - .mode shcompact -s1: - mov #4,r0 - - .align 2 - .mode shmedia -s2: - movi 4,r0 - -! Scaled operands - user gives scaled value - - .mode shcompact -s3: - mov.l @(8,r0),r0 - - .align 2 - .mode shmedia -s4: - ld.uw r0,2,r0 - ld.w r0,2,r0 - st.w r0,2,r0 - ld.l r0,4,r0 - st.l r0,4,r0 - fld.s r0,4,fr0 - fst.s r0,4,fr0 - pta .+4,tr0 - ptb .+7,tr0 - ld.q r0,8,r0 - st.q r0,8,r0 - fld.d r0,8,dr0 - fst.d r0,8,dr0 - fld.p r0,8,fp0 - fst.p r0,8,fp0 - alloco r0,32 - icbi r0,32 - ocbi r0,32 - ocbp r0,32 - ocbwb r0,32 - prefi r0,32 - - .mode shcompact -s5: - mov.w @(6,pc),r0 - mov.w @(2,r0),r0 - mov.w @(2,gbr),r0 - mov.w r0,@(2,r0) - mov.w r0,@(2,gbr) - bf .+6 - bt .+6 - bra .+6 - bsr .+6 - mov.l @(2,pc),r0 - mov.l @(4,r0),r0 - mov.l @(4,gbr),r0 - mova @(8,pc),r0 - mov.l r0,@(4,r0) - mov.l r0,@(4,gbr) - -! branchlabel vs datalabel - - .align 2 - .mode shmedia -s6: - .long .L3 - .long .L3 + 4 - .long datalabel .L3 - .long DATALABEL .L3 -.L3: - .mode shcompact - -s7: - .long .L4 - .long .L5 -.L4: - - .align 2 - .mode shmedia -s8: - - movi (.L4 >> 16) & 65535,r0 - shori .L4 & 65535, r0 - ptabs r0,tr0 - blink tr0,r18 - - movi (.L5 >> 16) & 65535,r0 - shori .L5 & 65535, r0 - ptabs r0,tr0 - blink tr0,r18 -.L5: - - movi (.L4-DATALABEL .L6), r0 -.L6: - movi (.L5-DATALABEL .L7), r0 -.L7: - - pt .L5,tr0 - -! Expressions - -! Symbols - -abcdefghijklmnopqrstuvwxyz0123456789_: - .long abcdefghijklmnopqrstuvwxyz0123456789_ -_x: - .long _x - -! program counter - - movi .L7-$,r0 -.L8: movi .L7-.L8,r0 - - .mode shcompact -s9: - mova @(litpool-$,pc), r0 - mov.l @r1,r0 - add r1,r0 - bsrf r0 -litpool: - .long s10 - DATALABEL $ - -! operators - - .align 2 - .mode shmedia -s10: - movi 8+1,r0 - movi 8-1,r0 - movi 8<<1,r0 - movi 8>>1,r0 - movi ~1,r0 - movi 5&3,r0 - movi 8|1,r0 - movi 8*3,r0 - movi 24/3,r0 diff --git a/gas/testsuite/gas/sh/sh64/syntax-2.d b/gas/testsuite/gas/sh/sh64/syntax-2.d deleted file mode 100644 index da90e5e..0000000 --- a/gas/testsuite/gas/sh/sh64/syntax-2.d +++ /dev/null @@ -1,11 +0,0 @@ -#as: --isa=shmedia --abi=64 -#objdump: -d -#name: Minimum SH64 Syntax Support - Pseudos. - -dump.o: file format elf64-sh64.* - -Disassembly of section .text: - -0000000000000000 <.*>: - 0: e8000a00 pta/l 8 <.*>,tr0 - 4: ec000600 ptb/l 8 <.*>,tr0 diff --git a/gas/testsuite/gas/sh/sh64/syntax-2.s b/gas/testsuite/gas/sh/sh64/syntax-2.s deleted file mode 100644 index 3140daa..0000000 --- a/gas/testsuite/gas/sh/sh64/syntax-2.s +++ /dev/null @@ -1,10 +0,0 @@ - .text -start: - -! pseudo-ops - - pt .L4,tr0 - pt .L5,tr0 -.L4: - .mode shcompact -.L5: diff --git a/gas/testsuite/gas/sh/sh64/ua-1.s b/gas/testsuite/gas/sh/sh64/ua-1.s deleted file mode 100644 index 2a2b63e..0000000 --- a/gas/testsuite/gas/sh/sh64/ua-1.s +++ /dev/null @@ -1,16 +0,0 @@ -! Check that unaligned pseudos emit the expected relocs and contents -! whether aligned or not. - - .section .rodata,"a" -start: - .uaquad 0x123456789abcdef - .byte 42 - .uaword 0x4a21 - .ualong 0x43b1abcd - .ualong externsym0 + 3 - .uaquad 0x12c456d89ab1d0f - .uaquad externsym1 + 41 - .byte 2 - .uaquad 0x1a34b67c9ab0d4f - .ualong externsym2 + 42 - .uaquad externsym3 + 43 diff --git a/gas/testsuite/gas/sh/sh64/ua32-1.d b/gas/testsuite/gas/sh/sh64/ua32-1.d deleted file mode 100644 index 879209d..0000000 --- a/gas/testsuite/gas/sh/sh64/ua32-1.d +++ /dev/null @@ -1,23 +0,0 @@ -#as: --abi=32 -#objdump: -sr -#source: ua-1.s -#name: Unaligned pseudos, 32-bit ABI. - -# Note that the relocs for externsym0 + 3 and externsym2 + 42 are -# partial-in-place, i.e. REL-like, and are not displayed correctly. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET *TYPE *VALUE -0+0f R_SH_DIR32 externsym0 -0+1b R_SH_64 externsym1\+0x0+29 -0+2c R_SH_DIR32 externsym2 -0+30 R_SH_64 externsym3\+0x0+2b - - -Contents of section \.rodata: - 0000 01234567 89abcdef 2a4a2143 b1abcd00 .* - 0010 00000301 2c456d89 ab1d0f00 00000000 .* - 0020 00000002 01a34b67 c9ab0d4f 0000002a .* - 0030 00000000 00000000 .* diff --git a/gas/testsuite/gas/sh/sh64/ua64-1.d b/gas/testsuite/gas/sh/sh64/ua64-1.d deleted file mode 100644 index cfe3dbb..0000000 --- a/gas/testsuite/gas/sh/sh64/ua64-1.d +++ /dev/null @@ -1,23 +0,0 @@ -#as: --abi=64 -#objdump: -sr -#name: Unaligned pseudos, 64-bit ABI. -#source: ua-1.s - -# Note that the relocs for externsym0 + 3 and externsym2 + 42 are -# partial-in-place, i.e. REL-like, and are not displayed correctly. - -.*: file format .*-sh64.* - -RELOCATION RECORDS FOR \[\.rodata\]: -OFFSET TYPE VALUE -0+0f R_SH_DIR32 externsym0 -0+1b R_SH_64 externsym1\+0x0000000000000029 -0+2c R_SH_DIR32 externsym2 -0+30 R_SH_64 externsym3\+0x000000000000002b - - -Contents of section \.rodata: - 0000 01234567 89abcdef 2a4a2143 b1abcd00 .* - 0010 00000301 2c456d89 ab1d0f00 00000000 .* - 0020 00000002 01a34b67 c9ab0d4f 0000002a .* - 0030 00000000 00000000 .* |