From: Kazu Hirata Date: Tue, 28 Nov 2006 14:09:50 +0000 (+0000) Subject: bfd/ X-Git-Tag: binutils-csl-sourcerygxx-4_1-29~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8880056ce04c7d4c8a0d54e51dda8bd751c55304;p=thirdparty%2Fbinutils-gdb.git bfd/ * elf32-m68k.c (elf32_m68k_object_p, elf32_m68k_print_private_bfd_data): Use EF_M68K_ARCH_MASK to extract architecture mask. binutils/ * readelf.c (get_machine_flags): Use EF_M68K_ARCH_MASK to extract architecture mask. include/elf/ * m68k.h (EF_M68K_ARCH_MASK): New. --- diff --git a/ChangeLog.csl b/ChangeLog.csl index e234c243ab5..2bcf2f94fec 100644 --- a/ChangeLog.csl +++ b/ChangeLog.csl @@ -1,3 +1,17 @@ +2006-11-28 Kazu Hirata + + bfd/ + * elf32-m68k.c (elf32_m68k_object_p, + elf32_m68k_print_private_bfd_data): Use EF_M68K_ARCH_MASK to + extract architecture mask. + + binutils/ + * readelf.c (get_machine_flags): Use EF_M68K_ARCH_MASK to + extract architecture mask. + + include/elf/ + * m68k.h (EF_M68K_ARCH_MASK): New. + 2006-11-19 Nathan Sidwell opcodes/ diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index daea4bdbfdc..f1a47c44a39 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -441,11 +441,13 @@ elf32_m68k_object_p (bfd *abfd) unsigned features = 0; flagword eflags = elf_elfheader (abfd)->e_flags; - if (eflags & EF_M68K_M68000) + if ((eflags & EF_M68K_ARCH_MASK) == EF_M68K_M68000) features |= m68000; - else if (eflags & EF_M68K_CPU32) + else if ((eflags & EF_M68K_ARCH_MASK) == EF_M68K_CPU32) features |= cpu32; - else if (eflags & EF_M68K_CF_ISA_MASK) + else if (((eflags & EF_M68K_ARCH_MASK) == 0 + && (eflags & EF_M68K_CF_ISA_MASK) != 0) + || (eflags & EF_M68K_ARCH_MASK) == EF_M68K_CFV4E) { switch (eflags & EF_M68K_CF_ISA_MASK) { @@ -560,58 +562,61 @@ elf32_m68k_print_private_bfd_data (abfd, ptr) /* xgettext:c-format */ fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags); - if (eflags & EF_M68K_CPU32) - fprintf (file, " [cpu32]"); - - if (eflags & EF_M68K_M68000) + if ((eflags & EF_M68K_ARCH_MASK) == EF_M68K_M68000) fprintf (file, " [m68000]"); - - if (eflags & EF_M68K_CFV4E) - fprintf (file, " [cfv4e]"); - - if (eflags & EF_M68K_CF_ISA_MASK) + else if ((eflags & EF_M68K_ARCH_MASK) == EF_M68K_CPU32) + fprintf (file, " [cpu32]"); + else if (((eflags & EF_M68K_ARCH_MASK) == 0 + && (eflags & EF_M68K_CF_ISA_MASK) != 0) + || (eflags & EF_M68K_ARCH_MASK) == EF_M68K_CFV4E) { - char const *isa = _("unknown"); - char const *mac = _("unknown"); - char const *additional = ""; - - switch (eflags & EF_M68K_CF_ISA_MASK) - { - case EF_M68K_CF_ISA_A_NODIV: - isa = "A"; - additional = " [nodiv]"; - break; - case EF_M68K_CF_ISA_A: - isa = "A"; - break; - case EF_M68K_CF_ISA_A_PLUS: - isa = "A+"; - break; - case EF_M68K_CF_ISA_B_NOUSP: - isa = "B"; - additional = " [nousp]"; - break; - case EF_M68K_CF_ISA_B: - isa = "B"; - break; - } - fprintf (file, " [isa %s]%s", isa, additional); - if (eflags & EF_M68K_CF_FLOAT) - fprintf (file, " [float]"); - switch (eflags & EF_M68K_CF_MAC_MASK) + if ((eflags & EF_M68K_ARCH_MASK) == EF_M68K_CFV4E) + fprintf (file, " [cfv4e]"); + + if (eflags & EF_M68K_CF_ISA_MASK) { - case 0: - mac = NULL; - break; - case EF_M68K_CF_MAC: - mac = "mac"; - break; - case EF_M68K_CF_EMAC: - mac = "emac"; - break; + char const *isa = _("unknown"); + char const *mac = _("unknown"); + char const *additional = ""; + + switch (eflags & EF_M68K_CF_ISA_MASK) + { + case EF_M68K_CF_ISA_A_NODIV: + isa = "A"; + additional = " [nodiv]"; + break; + case EF_M68K_CF_ISA_A: + isa = "A"; + break; + case EF_M68K_CF_ISA_A_PLUS: + isa = "A+"; + break; + case EF_M68K_CF_ISA_B_NOUSP: + isa = "B"; + additional = " [nousp]"; + break; + case EF_M68K_CF_ISA_B: + isa = "B"; + break; + } + fprintf (file, " [isa %s]%s", isa, additional); + if (eflags & EF_M68K_CF_FLOAT) + fprintf (file, " [float]"); + switch (eflags & EF_M68K_CF_MAC_MASK) + { + case 0: + mac = NULL; + break; + case EF_M68K_CF_MAC: + mac = "mac"; + break; + case EF_M68K_CF_EMAC: + mac = "emac"; + break; + } + if (mac) + fprintf (file, " [%s]", mac); } - if (mac) - fprintf (file, " [%s]", mac); } fputc ('\n', file); diff --git a/binutils/readelf.c b/binutils/readelf.c index f11cad417e1..2d0e5df13e1 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -1946,11 +1946,13 @@ get_machine_flags (unsigned e_flags, unsigned e_machine) break; case EM_68K: - if (e_flags & EF_M68K_CPU32) - strcat (buf, ", cpu32"); - if (e_flags & EF_M68K_M68000) + if ((e_flags & EF_M68K_ARCH_MASK) == EF_M68K_M68000) strcat (buf, ", m68000"); - if (e_flags & EF_M68K_CF_ISA_MASK) + else if ((e_flags & EF_M68K_ARCH_MASK) == EF_M68K_CPU32) + strcat (buf, ", cpu32"); + else if (((e_flags & EF_M68K_ARCH_MASK) == 0 + && (e_flags & EF_M68K_CF_ISA_MASK) != 0) + || (e_flags & EF_M68K_ARCH_MASK) == EF_M68K_CFV4E) { char const *isa = _("unknown"); char const *mac = _("unknown mac"); diff --git a/include/elf/m68k.h b/include/elf/m68k.h index 4bc365321a3..3665d724535 100644 --- a/include/elf/m68k.h +++ b/include/elf/m68k.h @@ -52,12 +52,16 @@ START_RELOC_NUMBERS (elf_m68k_reloc_type) RELOC_NUMBER (R_68K_GNU_VTENTRY, 24) END_RELOC_NUMBERS (R_68K_max) +/* We use the top 24 bits to encode information about the + architecture variant. */ #define EF_M68K_CPU32 0x00810000 #define EF_M68K_M68000 0x01000000 #define EF_M68K_CFV4E 0x00008000 +#define EF_M68K_ARCH_MASK (EF_M68K_M68000 | EF_M68K_CPU32 | EF_M68K_CFV4E) /* We use the bottom 8 bits to encode information about the - coldfire variant. */ + coldfire variant. If we use any of these bits, the top 24 bits are + either 0 or EF_M68K_CFV4E. */ #define EF_M68K_CF_ISA_MASK 0x0F /* Which ISA */ #define EF_M68K_CF_ISA_A_NODIV 0x01 /* ISA A except for div */ #define EF_M68K_CF_ISA_A 0x02