summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2003-02-10 10:44:47 +0000
committerNick Clifton <nickc@redhat.com>2003-02-10 10:44:47 +0000
commit82568df04425bf41a06be0fc23c34c966c8d353b (patch)
treea8031d8042b13e6e886bbfc42bfaa406afd2a701
parentd51e124894ba9a18f82ee8bc3486baeb43c3550e (diff)
downloadgdb-w32api-2_2.tar.gz
Add support for marking ARM ELF binaries as support the Cirrus EP9312 Maverickw32api-2_2
floating point co-processor.
-rw-r--r--bfd/ChangeLog11
-rw-r--r--bfd/archures.c1
-rw-r--r--bfd/bfd-in2.h1
-rw-r--r--bfd/cpu-arm.c6
-rw-r--r--bfd/elf32-arm.h25
-rw-r--r--include/elf/ChangeLog4
-rw-r--r--include/elf/arm.h1
7 files changed, 44 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 908c55e51f6..2e1138e3438 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,14 @@
+2003-02-10 Nick Clifton <nickc@redhat.com>
+
+ * archures.c (bfd_mach_arm_ep9312): Define.
+ * bfd-in2.h: Regenerate.
+ * cpu-arm.c (processors[]): Add ep9312.
+ (bfd_arm_arch): Add ep9312.
+ * elf32-arm.h (elf32_arm_merge_private_data): Update error
+ messages and add test for Maverick floating point support.
+ (elf32_arm_print_private_bfd_data): Handle
+ EF_ARM_MAVERICK_FLOAT flag.
+
2003-02-10 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c: Rename assorted occurrences of tls_type and similar
diff --git a/bfd/archures.c b/bfd/archures.c
index 08015f96dda..62edda109bb 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -234,6 +234,7 @@ DESCRIPTION
.#define bfd_mach_arm_5T 8
.#define bfd_mach_arm_5TE 9
.#define bfd_mach_arm_XScale 10
+.#define bfd_mach_arm_ep9312 11
. bfd_arch_ns32k, {* National Semiconductors ns32000 *}
. bfd_arch_w65, {* WDC 65816 *}
. bfd_arch_tic30, {* Texas Instruments TMS320C30 *}
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 1820b232083..c9b973df27c 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1689,6 +1689,7 @@ enum bfd_architecture
#define bfd_mach_arm_5T 8
#define bfd_mach_arm_5TE 9
#define bfd_mach_arm_XScale 10
+#define bfd_mach_arm_ep9312 11
bfd_arch_ns32k, /* National Semiconductors ns32000 */
bfd_arch_w65, /* WDC 65816 */
bfd_arch_tic30, /* Texas Instruments TMS320C30 */
diff --git a/bfd/cpu-arm.c b/bfd/cpu-arm.c
index cd4bf14eaa8..923c2500afe 100644
--- a/bfd/cpu-arm.c
+++ b/bfd/cpu-arm.c
@@ -95,7 +95,8 @@ processors[] =
{ bfd_mach_arm_4, "strongarm"},
{ bfd_mach_arm_4, "strongarm110" },
{ bfd_mach_arm_4, "strongarm1100" },
- { bfd_mach_arm_XScale, "xscale" }
+ { bfd_mach_arm_XScale, "xscale" },
+ { bfd_mach_arm_ep9312, "ep9312" }
};
static bfd_boolean
@@ -140,7 +141,8 @@ static const bfd_arch_info_type arch_info_struct[] =
N (bfd_mach_arm_5, "armv5", FALSE, & arch_info_struct[7]),
N (bfd_mach_arm_5T, "armv5t", FALSE, & arch_info_struct[8]),
N (bfd_mach_arm_5TE, "armv5te", FALSE, & arch_info_struct[9]),
- N (bfd_mach_arm_XScale, "xscale", FALSE, NULL)
+ N (bfd_mach_arm_XScale, "xscale", FALSE, & arch_info_struct[10]),
+ N (bfd_mach_arm_ep9312, "ep9312", FALSE, NULL)
};
const bfd_arch_info_type bfd_arm_arch =
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
index 48eb873846e..3c56eb8ba79 100644
--- a/bfd/elf32-arm.h
+++ b/bfd/elf32-arm.h
@@ -2310,12 +2310,28 @@ ERROR: %s passes floats in integer registers, whereas %s passes them in float re
{
if (in_flags & EF_ARM_VFP_FLOAT)
_bfd_error_handler (_("\
-ERROR: %s uses VFP instructions, whereas %s uses FPA instructions"),
+ERROR: %s uses VFP instructions, whereas %s does not"),
bfd_archive_filename (ibfd),
bfd_get_filename (obfd));
else
_bfd_error_handler (_("\
-ERROR: %s uses FPA instructions, whereas %s uses VFP instructions"),
+ERROR: %s uses FPA instructions, whereas %s does not"),
+ bfd_archive_filename (ibfd),
+ bfd_get_filename (obfd));
+
+ flags_compatible = FALSE;
+ }
+
+ if ((in_flags & EF_ARM_MAVERICK_FLOAT) != (out_flags & EF_ARM_MAVERICK_FLOAT))
+ {
+ if (in_flags & EF_ARM_MAVERICK_FLOAT)
+ _bfd_error_handler (_("\
+ERROR: %s uses Maverick instructions, whereas %s does not"),
+ bfd_archive_filename (ibfd),
+ bfd_get_filename (obfd));
+ else
+ _bfd_error_handler (_("\
+ERROR: %s uses Maverick instructions, whereas %s does not"),
bfd_archive_filename (ibfd),
bfd_get_filename (obfd));
@@ -2410,6 +2426,8 @@ elf32_arm_print_private_bfd_data (abfd, ptr)
if (flags & EF_ARM_VFP_FLOAT)
fprintf (file, _(" [VFP float format]"));
+ else if (flags & EF_ARM_MAVERICK_FLOAT)
+ fprintf (file, _(" [Maverick float format]"));
else
fprintf (file, _(" [FPA float format]"));
@@ -2430,7 +2448,8 @@ elf32_arm_print_private_bfd_data (abfd, ptr)
flags &= ~(EF_ARM_INTERWORK | EF_ARM_APCS_26 | EF_ARM_APCS_FLOAT
| EF_ARM_PIC | EF_ARM_NEW_ABI | EF_ARM_OLD_ABI
- | EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT);
+ | EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT
+ | EF_ARM_MAVERICK_FLOAT);
break;
case EF_ARM_EABI_VER1:
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index 88e8c96e566..6499ab3f4e1 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,3 +1,7 @@
+2003-02-10 Nick Clifton <nickc@redhat.com>
+
+ * arm.h (EF_ARM_MAVERICK_FLOAT): Define.
+
2003-02-05 Alan Modra <amodra@bigpond.net.au>
* ppc.h: Add TLS relocs. Format.
diff --git a/include/elf/arm.h b/include/elf/arm.h
index 269a225dd02..534701753c4 100644
--- a/include/elf/arm.h
+++ b/include/elf/arm.h
@@ -34,6 +34,7 @@
#define EF_ARM_OLD_ABI 0x100
#define EF_ARM_SOFT_FLOAT 0x200
#define EF_ARM_VFP_FLOAT 0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
/* Other constants defined in the ARM ELF spec. version B-01. */
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */