2006-03-10 Paul Brook <paul@codesourcery.com>
bfd/ * elf32-arm.c (INTERWORK_FLAG): Handle EABIv5. (elf32_arm_print_private_bfd_data): Ditto. binutils/ * readelf.c (decode_ARM_machine_flags): Handle EABIv5. gas/ * config/tc-arm.c (md_begin): Handle EABIv5. (arm_eabis): Add EF_ARM_EABI_VER5. * doc/c-arm.texi: Document -meabi=5. include/elf/ * arm.h (EF_ARM_EABI_VER5): Define.
This commit is contained in:
parent
0715c38784
commit
3a4a14e9ea
9 changed files with 55 additions and 6 deletions
|
@ -1,3 +1,8 @@
|
|||
2006-03-10 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* elf32-arm.c (INTERWORK_FLAG): Handle EABIv5.
|
||||
(elf32_arm_print_private_bfd_data): Ditto.
|
||||
|
||||
2006-03-09 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* cpu-arm.c (bfd_is_arm_mapping_symbol_name): Recognise additional
|
||||
|
|
|
@ -1452,9 +1452,10 @@ elf32_arm_nabi_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
|
|||
typedef unsigned long int insn32;
|
||||
typedef unsigned short int insn16;
|
||||
|
||||
/* In lieu of proper flags, assume all EABIv4 objects are interworkable. */
|
||||
/* In lieu of proper flags, assume all EABIv4 or later objects are
|
||||
interworkable. */
|
||||
#define INTERWORK_FLAG(abfd) \
|
||||
(EF_ARM_EABI_VERSION (elf_elfheader (abfd)->e_flags) == EF_ARM_EABI_VER4 \
|
||||
(EF_ARM_EABI_VERSION (elf_elfheader (abfd)->e_flags) >= EF_ARM_EABI_VER4 \
|
||||
|| (elf_elfheader (abfd)->e_flags & EF_ARM_INTERWORK))
|
||||
|
||||
/* The linker script knows the section names for placement.
|
||||
|
@ -5153,6 +5154,21 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Return TRUE if the two EABI versions are incompatible. */
|
||||
|
||||
static bfd_boolean
|
||||
elf32_arm_versions_compatible (unsigned iver, unsigned over)
|
||||
{
|
||||
/* v4 and v5 are the same spec before and after it was released,
|
||||
so allow mixing them. */
|
||||
if ((iver == EF_ARM_EABI_VER4 && over == EF_ARM_EABI_VER5)
|
||||
|| (iver == EF_ARM_EABI_VER5 && over == EF_ARM_EABI_VER4))
|
||||
return TRUE;
|
||||
|
||||
return (iver == over);
|
||||
}
|
||||
|
||||
/* Merge backend specific data from an object file to the output
|
||||
object file when linking. */
|
||||
|
||||
|
@ -5251,7 +5267,8 @@ elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
|
|||
}
|
||||
|
||||
/* Complain about various flag mismatches. */
|
||||
if (EF_ARM_EABI_VERSION (in_flags) != EF_ARM_EABI_VERSION (out_flags))
|
||||
if (!elf32_arm_versions_compatible (EF_ARM_EABI_VERSION (in_flags),
|
||||
EF_ARM_EABI_VERSION (out_flags)))
|
||||
{
|
||||
_bfd_error_handler
|
||||
(_("ERROR: Source object %B has EABI version %d, but target %B has EABI version %d"),
|
||||
|
@ -5462,7 +5479,11 @@ elf32_arm_print_private_bfd_data (bfd *abfd, void * ptr)
|
|||
|
||||
case EF_ARM_EABI_VER4:
|
||||
fprintf (file, _(" [Version4 EABI]"));
|
||||
goto eabi;
|
||||
|
||||
case EF_ARM_EABI_VER5:
|
||||
fprintf (file, _(" [Version5 EABI]"));
|
||||
eabi:
|
||||
if (flags & EF_ARM_BE8)
|
||||
fprintf (file, _(" [BE8]"));
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2006-03-10 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* readelf.c (decode_ARM_machine_flags): Handle EABIv5.
|
||||
|
||||
2006-03-10 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* dwarf.c (process_extended_line_op): Remove pointer_size param.
|
||||
|
|
|
@ -1793,6 +1793,11 @@ decode_ARM_machine_flags (unsigned e_flags, char buf[])
|
|||
|
||||
case EF_ARM_EABI_VER4:
|
||||
strcat (buf, ", Version4 EABI");
|
||||
goto eabi;
|
||||
|
||||
case EF_ARM_EABI_VER5:
|
||||
strcat (buf, ", Version5 EABI");
|
||||
eabi:
|
||||
while (e_flags)
|
||||
{
|
||||
unsigned flag;
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2006-03-10 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* config/tc-arm.c (md_begin): Handle EABIv5.
|
||||
(arm_eabis): Add EF_ARM_EABI_VER5.
|
||||
* doc/c-arm.texi: Document -meabi=5.
|
||||
|
||||
2006-03-10 Ben Elliston <bje@au.ibm.com>
|
||||
|
||||
* app.c (do_scrub_chars): Simplify string handling.
|
||||
|
|
|
@ -12851,6 +12851,7 @@ md_begin (void)
|
|||
break;
|
||||
|
||||
case EF_ARM_EABI_VER4:
|
||||
case EF_ARM_EABI_VER5:
|
||||
/* No additional flags to set. */
|
||||
break;
|
||||
|
||||
|
@ -13367,11 +13368,12 @@ static const struct arm_option_value_table arm_float_abis[] =
|
|||
};
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
/* We only know how to output GNU and ver 4 (AAELF) formats. */
|
||||
/* We only know how to output GNU and ver 4/5 (AAELF) formats. */
|
||||
static const struct arm_option_value_table arm_eabis[] =
|
||||
{
|
||||
{"gnu", EF_ARM_EABI_UNKNOWN},
|
||||
{"4", EF_ARM_EABI_VER4},
|
||||
{"5", EF_ARM_EABI_VER5},
|
||||
{NULL, 0}
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -255,9 +255,10 @@ and
|
|||
This option specifies which EABI version the produced object files should
|
||||
conform to.
|
||||
The following values are recognised:
|
||||
@code{gnu}
|
||||
@code{gnu},
|
||||
@code{4}
|
||||
and
|
||||
@code{4}.
|
||||
@code{5}.
|
||||
|
||||
@cindex @code{-EB} command line option, ARM
|
||||
@item -EB
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2006-03-10 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* arm.h (EF_ARM_EABI_VER5): Define.
|
||||
|
||||
2006-03-06 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* m68k.h (EF_M68K_ISA_MASK, EF_M68K_ISA_A,
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
#define EF_ARM_EABI_VER2 0x02000000
|
||||
#define EF_ARM_EABI_VER3 0x03000000
|
||||
#define EF_ARM_EABI_VER4 0x04000000
|
||||
#define EF_ARM_EABI_VER5 0x05000000
|
||||
|
||||
/* Local aliases for some flags to match names used by COFF port. */
|
||||
#define F_INTERWORK EF_ARM_INTERWORK
|
||||
|
|
Loading…
Reference in a new issue