]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd/
authorKazu Hirata <kazu@codesourcery.com>
Tue, 28 Nov 2006 14:09:50 +0000 (14:09 +0000)
committerKazu Hirata <kazu@codesourcery.com>
Tue, 28 Nov 2006 14:09:50 +0000 (14:09 +0000)
* 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.

ChangeLog.csl
bfd/elf32-m68k.c
binutils/readelf.c
include/elf/m68k.h

index e234c243ab53eee681ca486439ccfca00f2d9267..2bcf2f94fec13369bb496c177aa585996391fa1a 100644 (file)
@@ -1,3 +1,17 @@
+2006-11-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       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  <nathan@codesourcery.com>
 
        opcodes/
index daea4bdbfdc8c7a17da940b0aa767f52392ffcf1..f1a47c44a3956633084d2d2c7f0221ae44e0a2e1 100644 (file)
@@ -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);
index f11cad417e1d429ac4afdc29abdebc8aeacd7814..2d0e5df13e18850fe449a805468b028e62b7ef94 100644 (file)
@@ -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");
index 4bc365321a32db11d52e62f1471c124c0abb82e5..3665d724535772c58f3524d5908264da0bfb9b12 100644 (file)
@@ -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