aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-tic6x.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-10-29 00:15:59 +0000
committerJoseph Myers <joseph@codesourcery.com>2010-10-29 00:15:59 +0000
commitb55936237013f0250bf301a57ae4849b786198bf (patch)
tree4dc536ebbb5b72224ab756cd174c72d5bb83044b /gas/config/tc-tic6x.c
parentb2ee48aae63b41c815f428803815942a49ad0dbf (diff)
downloadgdb-b55936237013f0250bf301a57ae4849b786198bf.zip
gdb-b55936237013f0250bf301a57ae4849b786198bf.tar.gz
gdb-b55936237013f0250bf301a57ae4849b786198bf.tar.bz2
bfd:
2010-10-29 Bernd Schmidt <bernds@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * elf32-tic6x.c (elf32_tic6x_merge_attributes): Check for mismatch of DSBT attributes. binutils: 2010-10-29 Bernd Schmidt <bernds@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * readelf.c (display_tic6x_attribute): Handle Tag_ABI_DSBT. gas: 2010-10-29 Bernd Schmidt <bernds@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * config/tc-tic6x.c (OPTION_MDSBT, OPTION_MNO_DSBT): New enum values. (md_longopts): Add mdsbt and mno-dsbt. (tic6x_dsbt): New static variable. (md_parse_option): Handle OPTION_MDSBT and OPTION_MNO_DSBT. (md_show_usage): Output help text for -mdsbt and -mno-dsbt. (TAG): Add comma at the end. (tic6x_set_attributes): Set Tag_ABI_DSBT. * doc/as.texinfo: Document -mdsbt and -mno-dsbt. * doc/c-tic6x.texi (TIC6X Options): Likewise. (TIC6X Directives): Mention Tag_ABI_DSBT. gas/testsuite: 2010-10-29 Bernd Schmidt <bernds@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * gas/tic6x/attr-dsbt-directive-1.d, gas/tic6x/attr-dsbt-directive-1.s, gas/tic6x/attr-dsbt-directive-2.d, gas/tic6x/attr-dsbt-directive-2.s, gas/tic6x/attr-dsbt-opts-mdsbt.d, gas/tic6x/attr-dsbt-opts-mno-dsbt.d: New tests. include/elf: 2010-10-29 Bernd Schmidt <bernds@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * tic6x-attrs.h (Tag_ABI_DSBT): New. ld/testsuite: 2010-10-29 Bernd Schmidt <bernds@codesourcery.com> Joseph Myers <joseph@codesourcery.com> * ld-tic6x/attr-dsbt-0.s, ld-tic6x/attr-dsbt-00.d, ld-tic6x/attr-dsbt-01.d, ld-tic6x/attr-dsbt-1.s, ld-tic6x/attr-dsbt-10.d, ld-tic6x/attr-dsbt-11.d: New tests.
Diffstat (limited to 'gas/config/tc-tic6x.c')
-rw-r--r--gas/config/tc-tic6x.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/gas/config/tc-tic6x.c b/gas/config/tc-tic6x.c
index 832491d..2f51466 100644
--- a/gas/config/tc-tic6x.c
+++ b/gas/config/tc-tic6x.c
@@ -50,6 +50,8 @@ enum
OPTION_MNO_ATOMIC,
OPTION_MBIG_ENDIAN,
OPTION_MLITTLE_ENDIAN,
+ OPTION_MDSBT,
+ OPTION_MNO_DSBT,
OPTION_MGENERATE_REL
};
@@ -60,6 +62,8 @@ struct option md_longopts[] =
{ "mno-atomic", no_argument, NULL, OPTION_MNO_ATOMIC },
{ "mbig-endian", no_argument, NULL, OPTION_MBIG_ENDIAN },
{ "mlittle-endian", no_argument, NULL, OPTION_MLITTLE_ENDIAN },
+ { "mdsbt", no_argument, NULL, OPTION_MDSBT },
+ { "mno-dsbt", no_argument, NULL, OPTION_MNO_DSBT },
{ "mgenerate-rel", no_argument, NULL, OPTION_MGENERATE_REL },
{ NULL, no_argument, NULL, 0 }
};
@@ -113,6 +117,9 @@ static bfd_boolean tic6x_compact_insns;
/* Whether to generate RELA relocations. */
static bfd_boolean tic6x_generate_rela = TRUE;
+/* Whether the code uses DSBT addressing. */
+static bfd_boolean tic6x_dsbt;
+
/* Table of supported architecture variants. */
typedef struct
{
@@ -191,6 +198,14 @@ md_parse_option (int c, char *arg)
target_big_endian = 0;
break;
+ case OPTION_MDSBT:
+ tic6x_dsbt = 1;
+ break;
+
+ case OPTION_MNO_DSBT:
+ tic6x_dsbt = 0;
+ break;
+
case OPTION_MGENERATE_REL:
tic6x_generate_rela = FALSE;
break;
@@ -213,6 +228,8 @@ md_show_usage (FILE *stream ATTRIBUTE_UNUSED)
fprintf (stream, _(" -mno-atomic disable atomic operation instructions\n"));
fprintf (stream, _(" -mbig-endian generate big-endian code\n"));
fprintf (stream, _(" -mlittle-endian generate little-endian code\n"));
+ fprintf (stream, _(" -mdsbt code uses DSBT addressing\n"));
+ fprintf (stream, _(" -mno-dsbt code does not use DSBT addressing\n"));
/* -mgenerate-rel is only for testsuite use and is deliberately
undocumented. */
@@ -341,7 +358,7 @@ typedef struct
static const tic6x_attribute_table tic6x_attributes[] =
{
-#define TAG(tag, value) { #tag, tag }
+#define TAG(tag, value) { #tag, tag },
#include "elf/tic6x-attrs.h"
#undef TAG
};
@@ -3897,6 +3914,7 @@ tic6x_set_attributes (void)
tic6x_arch_attribute = C6XABI_Tag_ISA_C674X;
tic6x_set_attribute_int (Tag_ISA, tic6x_arch_attribute);
+ tic6x_set_attribute_int (Tag_ABI_DSBT, tic6x_dsbt);
}
/* Do machine-dependent manipulations of the frag chains after all