From 32b9ff0d14a1ca3a9bc0fbee86d676b3fa08561b Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 21 Mar 2012 08:58:40 +0000 Subject: [PATCH] gas/ [SH] Support the .uaquad and .8byte directives also for non-sh64 configurations. * config/tc-sh.c (sh_cons_fix_new, md_apply_fix) [!HAVE_SH64]: Handle BFD_RELOC_64. * doc/c-sh64.texi (SH64 Machine Directives): Move .uaquad description... * doc/c-sh.texi (SH Machine Directives): ... here. --- gas/ChangeLog | 11 +++++++++++ gas/config/tc-sh.c | 15 ++++++++++++--- gas/doc/c-sh.texi | 11 +++++++---- gas/doc/c-sh64.texi | 6 +----- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index b6fe7e3..8402be4 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +2012-03-21 Thomas Schwinge + + [SH] Support the .uaquad and .8byte directives also for non-sh64 + configurations. + + * config/tc-sh.c (sh_cons_fix_new, md_apply_fix) [!HAVE_SH64]: Handle + BFD_RELOC_64. + * doc/c-sh64.texi (SH64 Machine Directives): Move .uaquad + description... + * doc/c-sh.texi (SH Machine Directives): ... here. + 2012-03-20 Nick Clifton * config/tc-arm.c (do_vmrs): Accept priviledged mode VFP system diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index 15a4128..4db1a09 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -1,6 +1,6 @@ /* tc-sh.c -- Assemble code for the Renesas / SuperH SH Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -789,11 +789,9 @@ sh_cons_fix_new (fragS *frag, int off, int size, expressionS *exp) r_type = BFD_RELOC_32; break; -#ifdef HAVE_SH64 case 8: r_type = BFD_RELOC_64; break; -#endif default: goto error; @@ -3968,6 +3966,11 @@ 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: @@ -4166,6 +4169,12 @@ 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); diff --git a/gas/doc/c-sh.texi b/gas/doc/c-sh.texi index 438ac5f..aff6830 100644 --- a/gas/doc/c-sh.texi +++ b/gas/doc/c-sh.texi @@ -1,5 +1,5 @@ @c Copyright 1991, 1992, 1993, 1994, 1995, 1997, 2001, 2003, 2004, -@c 2005, 2008, 2010, 2011 Free Software Foundation, Inc. +@c 2005, 2008, 2010, 2011, 2012 Free Software Foundation, Inc. @c This is part of the GAS manual. @c For copying conditions, see the file as.texinfo. @page @@ -210,13 +210,16 @@ conventional architectures at the same frequency. @cindex machine directives, SH @cindex @code{uaword} directive, SH @cindex @code{ualong} directive, SH +@cindex @code{uaquad} directive, SH @table @code @item uaword @itemx ualong -@code{@value{AS}} will issue a warning when a misaligned @code{.word} or -@code{.long} directive is used. You may use @code{.uaword} or -@code{.ualong} to indicate that the value is intentionally misaligned. +@itemx uaquad +@code{@value{AS}} will issue a warning when a misaligned @code{.word}, +@code{.long}, or @code{.quad} directive is used. You may use +@code{.uaword}, @code{.ualong}, or @code{.uaquad} to indicate that the +value is intentionally misaligned. @end table @node SH Opcodes diff --git a/gas/doc/c-sh64.texi b/gas/doc/c-sh64.texi index 8138c1f..cc52cbc 100644 --- a/gas/doc/c-sh64.texi +++ b/gas/doc/c-sh64.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2002, 2003, 2008, 2011 Free Software Foundation, Inc. +@c Copyright (C) 2002, 2003, 2008, 2011, 2012 Free Software Foundation, Inc. @c This is part of the GAS manual. @c For copying conditions, see the file as.texinfo. @page @@ -188,10 +188,6 @@ 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. -@item .uaquad -Like .uaword and .ualong, this allows you to specify an intentionally -unaligned quadword (64 bit word). - @end table @node SH64 Opcodes -- 2.7.4