aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog9
-rw-r--r--bfd/archures.c3
-rw-r--r--bfd/bfd-in2.h6
-rw-r--r--bfd/coffcode.h9
-rw-r--r--bfd/cpu-i960.c69
5 files changed, 54 insertions, 42 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0f9d051..41a276f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/archures.c b/bfd/archures.c
index 8c45942..8dea24f 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 224edc4..4e4aa86 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 9699f31..2518f77 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 74ec218..3b5054b 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]);