From cbe75cb664ec5365a378206cda10fce903300e21 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 5 Feb 1996 23:57:39 +0000 Subject: [PATCH] * 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. --- bfd/ChangeLog | 9 +++++++ bfd/archures.c | 3 ++- bfd/bfd-in2.h | 6 +++++ bfd/coffcode.h | 9 +++++-- bfd/cpu-i960.c | 69 ++++++++++++++++++++++---------------------------- 5 files changed, 54 insertions(+), 42 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0f9d051b71..41a276feeb 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,14 @@ Mon Feb 5 10:38:27 1996 Ian Lance Taylor + * 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 : * configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib. diff --git a/bfd/archures.c b/bfd/archures.c index 8c45942128..8dea24ff88 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -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 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 224edc401d..4e4aa8610f 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -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 diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 9699f316bd..2518f77729 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -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; } diff --git a/bfd/cpu-i960.c b/bfd/cpu-i960.c index 74ec218374..3b5054b0d7 100644 --- a/bfd/cpu-i960.c +++ b/bfd/cpu-i960.c @@ -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]); -- 2.34.1