* archures.c (bfd_mach_i960_hx): Define.

* bfd-in2.h: Rebuild.
	* cpu-i960.c (scan_960_mach): Accept machine "hx".
	(MATRIX): Expand entries for HX.
	(arch_info_struct): Add i960:hx entry.
	* bout.c (b_out_set_arch_mach): Handle bfd_mach_i960_hx.
	* coffcode.h (coff_set_arch_mach_hook): Handle F_I960HX.
	(coff_set_flags): Handle bfd_mach_i960_hx.
This commit is contained in:
Ian Lance Taylor 1996-02-05 23:57:39 +00:00
parent 1a4dd30e54
commit cbe75cb664
5 changed files with 54 additions and 42 deletions

View File

@ -1,5 +1,14 @@
Mon Feb 5 10:38:27 1996 Ian Lance Taylor <ian@cygnus.com>
* archures.c (bfd_mach_i960_hx): Define.
* bfd-in2.h: Rebuild.
* cpu-i960.c (scan_960_mach): Accept machine "hx".
(MATRIX): Expand entries for HX.
(arch_info_struct): Add i960:hx entry.
* bout.c (b_out_set_arch_mach): Handle bfd_mach_i960_hx.
* coffcode.h (coff_set_arch_mach_hook): Handle F_I960HX.
(coff_set_flags): Handle bfd_mach_i960_hx.
Support for building as a shared library, based on patches from
Alan Modra <alan@spri.levels.unisa.edu.au>:
* configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib.

View File

@ -89,11 +89,12 @@ DESCRIPTION
. {* start-sanitize-i960xl *}
.#define bfd_mach_i960_xl 7
. {* end-sanitize-i960xl *}
.#define bfd_mach_i960_hx 8
.
. bfd_arch_a29k, {* AMD 29000 *}
. bfd_arch_sparc, {* SPARC *}
.#define bfd_mach_sparc 1
{* The difference between v8plus and v9 is that v9 is a true 64 bit env. *}
.{* The difference between v8plus and v9 is that v9 is a true 64 bit env. *}
.#define bfd_mach_sparc_v8plus 2
.#define bfd_mach_sparc_v8plusa 3 {* with ultrasparc add'ns *}
.#define bfd_mach_sparc_v9 4

View File

@ -1106,10 +1106,12 @@ enum bfd_architecture
/* start-sanitize-i960xl */
#define bfd_mach_i960_xl 7
/* end-sanitize-i960xl */
#define bfd_mach_i960_hx 8
bfd_arch_a29k, /* AMD 29000 */
bfd_arch_sparc, /* SPARC */
#define bfd_mach_sparc 1
/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
#define bfd_mach_sparc_v8plus 2
#define bfd_mach_sparc_v8plusa 3 /* with ultrasparc add'ns */
#define bfd_mach_sparc_v9 4
@ -1797,6 +1799,10 @@ typedef struct symbol_cache_entry
/* Symbol is from dynamic linking information. */
#define BSF_DYNAMIC 0x8000
/* The symbol denotes a data object. Used in ELF, and perhaps
others someday. */
#define BSF_OBJECT 0x10000
flagword flags;
/* A pointer to the section to which this symbol is

View File

@ -844,8 +844,7 @@ dependent COFF routines:
.#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
. ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
. (obfd, info, ibfd, sec, rel, adjustedp))
.#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
. value, string, cp, coll, hashp)\
.#define bfd_coff_link_add_one_symbol(info,abfd,name,flags,section,value,string,cp,coll,hashp)\
. ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
. (info, abfd, name, flags, section, value, string, cp, coll, hashp))
.
@ -1267,6 +1266,9 @@ coff_set_arch_mach_hook (abfd, filehdr)
machine = bfd_mach_i960_xl;
break;
/* end-sanitize-i960xl */
case F_I960HX:
machine = bfd_mach_i960_hx;
break;
}
break;
#endif
@ -1751,6 +1753,9 @@ coff_set_flags (abfd, magicp, flagsp)
flags = F_I960XL;
break;
/* end-sanitize-i960xl */
case bfd_mach_i960_hx:
flags = F_I960HX;
break;
default:
return false;
}

View File

@ -30,8 +30,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
static boolean
scan_960_mach (ap, string)
CONST bfd_arch_info_type *ap;
CONST char *string;
const bfd_arch_info_type *ap;
const char *string;
{
unsigned long machine;
@ -79,6 +79,8 @@ scan_960_mach (ap, string)
else if (string[0] == 'x' && string[1] == 'l')
machine = bfd_mach_i960_xl;
/* end-sanitize-i960xl */
else if (string[0] == 'h' && string[1] == 'x')
machine = bfd_mach_i960_hx;
else
return false;
if (machine == ap->mach) return true;
@ -91,10 +93,10 @@ scan_960_mach (ap, string)
machine which would be compatible with both and returns a pointer
to its info structure */
static CONST bfd_arch_info_type *
static const bfd_arch_info_type *
compatible (a,b)
CONST bfd_arch_info_type *a;
CONST bfd_arch_info_type *b;
const bfd_arch_info_type *a;
const bfd_arch_info_type *b;
{
/* The i960 has distinct subspecies which may not interbreed:
@ -115,27 +117,23 @@ compatible (a,b)
#define MC bfd_mach_i960_mc /*4*/
#define XA bfd_mach_i960_xa /*5*/
#define CA bfd_mach_i960_ca /*6*/
#define MAX_ARCH ((int)CA)
/* start-sanitize-i960xl */
#define XL bfd_mach_i960_xl /*7*/
#undef MAX_ARCH
#define MAX_ARCH ((int)XL)
/* end-sanitize-i960xl */
#define HX bfd_mach_i960_hx /*8*/
#define MAX_ARCH ((int)HX)
static CONST unsigned long matrix[MAX_ARCH+1][MAX_ARCH+1] =
{
{ ERROR, CORE, KA, KB, MC, XA, CA },
{ CORE, CORE, KA, KB, MC, XA, CA },
{ KA, KA, KA, KB, MC, XA, ERROR },
{ KB, KB, KB, KB, MC, XA, ERROR },
{ MC, MC, MC, MC, MC, XA, ERROR },
{ XA, XA, XA, XA, XA, XA, ERROR },
{ CA, CA, ERROR, ERROR, ERROR, ERROR, CA },
/* start-sanitize-i960xl */
{ XL, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, XL },
/* end-sanitize-i960xl */
{ ERROR, CORE, KA, KB, MC, XA, CA, 7, HX },
{ CORE, CORE, KA, KB, MC, XA, CA, 7, HX },
{ KA, KA, KA, KB, MC, XA, ERROR, ERROR, ERROR},
{ KB, KB, KB, KB, MC, XA, ERROR, ERROR, ERROR},
{ MC, MC, MC, MC, MC, XA, ERROR, ERROR, ERROR},
{ XA, XA, XA, XA, XA, XA, ERROR, ERROR, ERROR},
{ CA, CA, ERROR, ERROR, ERROR, ERROR, CA, ERROR, ERROR},
{ 7, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 7 },
{ HX, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR, 8 },
};
@ -152,28 +150,21 @@ compatible (a,b)
int bfd_default_scan_num_mach();
#define N(a,b,d) \
{ 32, 32, 8,bfd_arch_i960,a,"i960",b,3,d,compatible,scan_960_mach,0,}
#define N(a,b,d,n) \
{ 32, 32, 8,bfd_arch_i960,a,"i960",b,3,d,compatible,scan_960_mach,n,}
static bfd_arch_info_type arch_info_struct[] =
static const bfd_arch_info_type arch_info_struct[] =
{
N(bfd_mach_i960_core, "i960:core", true),
N(bfd_mach_i960_ka_sa,"i960:ka_sa",false),
N(bfd_mach_i960_kb_sb,"i960:kb_sb",false),
N(bfd_mach_i960_mc, "i960:mc", false),
N(bfd_mach_i960_xa, "i960:xa", false),
N(bfd_mach_i960_ca, "i960:ca", false),
N(bfd_mach_i960_ka_sa,"i960:ka_sa",false, &arch_info_struct[1]),
N(bfd_mach_i960_kb_sb,"i960:kb_sb",false, &arch_info_struct[2]),
N(bfd_mach_i960_mc, "i960:mc", false, &arch_info_struct[3]),
N(bfd_mach_i960_xa, "i960:xa", false, &arch_info_struct[4]),
N(bfd_mach_i960_ca, "i960:ca", false, &arch_info_struct[5]),
/* start-sanitize-i960xl */
N(bfd_mach_i960_xl, "i960:xl", false),
N(bfd_mach_i960_xl, "i960:xl", false, &arch_info_struct[6]),
/* end-sanitize-i960xl */
N(bfd_mach_i960_hx, "i960:hx", false, 0),
};
void
bfd_i960_arch ()
{
unsigned int i;
for (i = 0; i < sizeof(arch_info_struct)/sizeof (*arch_info_struct); i++) {
bfd_arch_linkin(arch_info_struct + i);
}
}
const bfd_arch_info_type bfd_i960_arch =
N(bfd_mach_i960_core, "i960:core", true, &arch_info_struct[0]);