diff options
author | Kazu Hirata <kazu@codesourcery.com> | 2006-12-19 13:24:56 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@codesourcery.com> | 2006-12-19 13:24:56 +0000 |
commit | 425c6cb00d22328650ba761bd06b184d3d4ade07 (patch) | |
tree | 9d1721cea46815a9b947149db0c0cac71c7b29d4 /bfd | |
parent | 8a0d8a5c46bc6c330c837546cb384b9781ad6723 (diff) | |
download | gdb-425c6cb00d22328650ba761bd06b184d3d4ade07.zip gdb-425c6cb00d22328650ba761bd06b184d3d4ade07.tar.gz gdb-425c6cb00d22328650ba761bd06b184d3d4ade07.tar.bz2 |
bfd/
* elf32-m68k.c (elf32_m68k_object_p,
elf32_m68k_print_private_bfd_data): Use EF_M68K_ARCH_MASK to
extract architecture mask.
include/elf/
* m68k.h (EF_M68K_ARCH_MASK): New.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf32-m68k.c | 116 |
2 files changed, 69 insertions, 53 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d350378..93f718b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2006-12-19 Kazu Hirata <kazu@codesourcery.com> + + * elf32-m68k.c (elf32_m68k_object_p, + elf32_m68k_print_private_bfd_data): Use EF_M68K_ARCH_MASK to + extract architecture mask. + 2006-12-19 Nathan Sidwell <nathan@codesourcery.com> * elf.c (assign_file_positions_for_load_sections): Adjust p_vaddr diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index 4820e47..81a9225 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -429,11 +429,11 @@ 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 { switch (eflags & EF_M68K_CF_ISA_MASK) { @@ -518,8 +518,17 @@ elf32_m68k_merge_private_bfd_data (ibfd, obfd) else { out_flags = elf_elfheader (obfd)->e_flags; - in_isa = (in_flags & EF_M68K_CF_ISA_MASK); - out_isa = (out_flags & EF_M68K_CF_ISA_MASK); + unsigned int variant_mask; + + if ((in_flags & EF_M68K_ARCH_MASK) == EF_M68K_M68000) + variant_mask = 0; + else if ((in_flags & EF_M68K_ARCH_MASK) == EF_M68K_CPU32) + variant_mask = 0; + else + variant_mask = EF_M68K_CF_ISA_MASK; + + in_isa = (in_flags & variant_mask); + out_isa = (out_flags & variant_mask); if (in_isa > out_isa) out_flags ^= in_isa ^ out_isa; out_flags |= in_flags ^ in_isa; @@ -548,58 +557,59 @@ 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 { - 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); |