From 825902491e89db303b036d82eef32ef0b07d4317 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Sat, 25 Feb 2012 18:57:55 +0000 Subject: [PATCH] Properly create and use a bfd_arch_info_type for 32-bit tilegx. bfd/ * arctures.c (bfd_architecture): Define bfd_mach_tilegx32. * bfd-in2.h: Regenerate. * cpu-tilegx.c (bfd_tilegx32_arch): define. (bfd_tilegx_arch): link to bfd_tilegx32_arch. gas/ * tc-tilegx.c (md_begin): set architecture and machine. --- bfd/ChangeLog | 7 +++++++ bfd/archures.c | 1 + bfd/bfd-in2.h | 1 + bfd/cpu-tilegx.c | 19 ++++++++++++++++++- gas/ChangeLog | 4 ++++ gas/config/tc-tilegx.c | 4 ++++ 6 files changed, 35 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index cf9bf17b323..2568c32b0d1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2012-02-25 Walter Lee + + * arctures.c (bfd_architecture): Define bfd_mach_tilegx32. + * bfd-in2.h: Regenerate. + * cpu-tilegx.c (bfd_tilegx32_arch): define. + (bfd_tilegx_arch): link to bfd_tilegx32_arch. + 2012-02-24 Nick Clifton PR ld/13730 diff --git a/bfd/archures.c b/bfd/archures.c index c833cbfec66..92c4867af51 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -453,6 +453,7 @@ DESCRIPTION . bfd_arch_tilegx, {* Tilera TILE-Gx *} .#define bfd_mach_tilepro 1 .#define bfd_mach_tilegx 1 +.#define bfd_mach_tilegx32 2 . bfd_arch_last . }; */ diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index fb563374d33..4a92e47ef91 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2159,6 +2159,7 @@ enum bfd_architecture bfd_arch_tilegx, /* Tilera TILE-Gx */ #define bfd_mach_tilepro 1 #define bfd_mach_tilegx 1 +#define bfd_mach_tilegx32 2 bfd_arch_last }; diff --git a/bfd/cpu-tilegx.c b/bfd/cpu-tilegx.c index dc9bc63cd4d..f98cb0c4675 100644 --- a/bfd/cpu-tilegx.c +++ b/bfd/cpu-tilegx.c @@ -22,6 +22,23 @@ #include "sysdep.h" #include "libbfd.h" +const bfd_arch_info_type bfd_tilegx32_arch = + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_tilegx, + bfd_mach_tilegx32, + "tilegx32", + "tilegx32", + 3, + FALSE, + bfd_default_compatible, + bfd_default_scan, + bfd_arch_default_fill, + 0, + }; + const bfd_arch_info_type bfd_tilegx_arch = { 64, /* 64 bits in a word */ @@ -36,5 +53,5 @@ const bfd_arch_info_type bfd_tilegx_arch = bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, - 0, + &bfd_tilegx32_arch, }; diff --git a/gas/ChangeLog b/gas/ChangeLog index 6293433edc3..dda0c1a4ec1 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2012-02-25 Walter Lee + + * tc-tilegx.c (md_begin): set architecture and machine. + 2012-02-21 H.J. Lu * config/tc-i386.c (check_hle): Use HLEPrefixNone, HLEPrefixLock, diff --git a/gas/config/tc-tilegx.c b/gas/config/tc-tilegx.c index 39e1907322d..9f6e349a07c 100644 --- a/gas/config/tc-tilegx.c +++ b/gas/config/tc-tilegx.c @@ -241,6 +241,10 @@ md_begin (void) { const struct tilegx_opcode *op; int i; + int mach = (tilegx_arch_size == 64) ? bfd_mach_tilegx : bfd_mach_tilegx32; + + if (! bfd_set_arch_mach (stdoutput, bfd_arch_tilegx, mach)) + as_warn (_("Could not set architecture and machine")); /* Guarantee text section is aligned. */ bfd_set_section_alignment (stdoutput, text_section, -- 2.30.2