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.
This commit is contained in:
Walter Lee 2012-02-25 18:57:55 +00:00
parent 6fe37d2340
commit 825902491e
6 changed files with 35 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2012-02-25 Walter Lee <walt@tilera.com>
* 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 <nickc@redhat.com>
PR ld/13730

View File

@ -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
. };
*/

View File

@ -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
};

View File

@ -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,
};

View File

@ -1,3 +1,7 @@
2012-02-25 Walter Lee <walt@tilera.com>
* tc-tilegx.c (md_begin): set architecture and machine.
2012-02-21 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (check_hle): Use HLEPrefixNone, HLEPrefixLock,

View File

@ -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,