* archures.c (bfd_lookup_arch): Add comment on list order.
authorAlan Modra <amodra@gmail.com>
Sat, 20 Apr 2002 02:54:26 +0000 (02:54 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 20 Apr 2002 02:54:26 +0000 (02:54 +0000)
(bfd_default_set_arch_mach): Use bfd_lookup_arch.
* cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default
is always at head of list.

bfd/ChangeLog
bfd/archures.c
bfd/cpu-powerpc.c

index 3621efe3e74c7847f7095027472cc691eec61fbd..f4636ca18fd0e8ce06d25aaea2b3d0f665d80eb6 100644 (file)
@@ -1,3 +1,10 @@
+2002-04-20  Alan Modra  <amodra@bigpond.net.au>
+
+       * archures.c (bfd_lookup_arch): Add comment on list order.
+       (bfd_default_set_arch_mach): Use bfd_lookup_arch.
+       * cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default
+       is always at head of list.
+
 2002-04-18  Nick Clifton  <nickc@cambridge.redhat.com>
 
        * coff-arm.c (coff_thumb_pcrel_12, coff_thumb_pcrel_9,
index 9a91424a6ef4c618c16cc5a41fc7acd1fc61904e..4f6c90f626ec73970588b4dba7433b6536aeb2e4 100644 (file)
@@ -604,21 +604,9 @@ bfd_default_set_arch_mach (abfd, arch, mach)
      enum bfd_architecture arch;
      unsigned long mach;
 {
-  const bfd_arch_info_type * const *app, *ap;
-
-  for (app = bfd_archures_list; *app != NULL; app++)
-    {
-      for (ap = *app; ap != NULL; ap = ap->next)
-       {
-         if (ap->arch == arch
-             && (ap->mach == mach
-                 || (mach == 0 && ap->the_default)))
-           {
-             abfd->arch_info = ap;
-             return true;
-           }
-       }
-    }
+  abfd->arch_info = bfd_lookup_arch (arch, mach);
+  if (abfd->arch_info != NULL)
+    return true;
 
   abfd->arch_info = &bfd_default_arch_struct;
   bfd_set_error (bfd_error_bad_value);
@@ -985,7 +973,9 @@ DESCRIPTION
        Look for the architecure info structure which matches the
        arguments @var{arch} and @var{machine}. A machine of 0 matches the
        machine/architecture structure which marks itself as the
-       default.
+       default.  gdb relies on the default arch being the first
+       entry for the given ARCH so that all the entries for that
+       arch can be accessed via ap->next.
 */
 
 const bfd_arch_info_type *
index d812618749d430c246897910da1d2dedf15b67a2..d77b4260c1da151be8169013ac852816f2e90dca 100644 (file)
@@ -50,6 +50,65 @@ powerpc_compatible (a,b)
 
 const bfd_arch_info_type bfd_powerpc_archs[] =
 {
+#if BFD_DEFAULT_TARGET_SIZE == 64 /* default arch must come first.  */
+  {
+    64,        /* 64 bits in a word */
+    64,        /* 64 bits in an address */
+    8, /* 8 bits in a byte */
+    bfd_arch_powerpc,
+    bfd_mach_ppc64,
+    "powerpc",
+    "powerpc:common64",
+    3,
+    true, /* default for 64 bit target */
+    powerpc_compatible,
+    bfd_default_scan,
+    &bfd_powerpc_archs[1]
+  },
+  {
+    32,        /* 32 bits in a word */
+    32,        /* 32 bits in an address */
+    8, /* 8 bits in a byte */
+    bfd_arch_powerpc,
+    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
+    "powerpc",
+    "powerpc:common",
+    3,
+    false,
+    powerpc_compatible,
+    bfd_default_scan,
+    &bfd_powerpc_archs[2],
+  },
+#else
+  {
+    32,        /* 32 bits in a word */
+    32,        /* 32 bits in an address */
+    8, /* 8 bits in a byte */
+    bfd_arch_powerpc,
+    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
+    "powerpc",
+    "powerpc:common",
+    3,
+    true, /* default for 32 bit target */
+    powerpc_compatible,
+    bfd_default_scan,
+    &bfd_powerpc_archs[1],
+  },
+  {
+    64,        /* 64 bits in a word */
+    64,        /* 64 bits in an address */
+    8, /* 8 bits in a byte */
+    bfd_arch_powerpc,
+    bfd_mach_ppc64,
+    "powerpc",
+    "powerpc:common64",
+    3,
+    false,
+    powerpc_compatible,
+    bfd_default_scan,
+    &bfd_powerpc_archs[2]
+  },
+#endif
   {
     32,        /* 32 bits in a word */
     32,        /* 32 bits in an address */
@@ -62,7 +121,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[1]
+    &bfd_powerpc_archs[3]
   },
   {
     32,        /* 32 bits in a word */
@@ -76,7 +135,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[2]
+    &bfd_powerpc_archs[4]
   },
   {
     32,        /* 32 bits in a word */
@@ -90,7 +149,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[3]
+    &bfd_powerpc_archs[5]
   },
   {
     32,        /* 32 bits in a word */
@@ -104,7 +163,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[4]
+    &bfd_powerpc_archs[6]
   },
   {
     32,        /* 32 bits in a word */
@@ -118,7 +177,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[5]
+    &bfd_powerpc_archs[7]
   },
   {
     64,        /* 64 bits in a word */
@@ -132,7 +191,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[6]
+    &bfd_powerpc_archs[8]
   },
   {
     64,        /* 64 bits in a word */
@@ -146,7 +205,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[7]
+    &bfd_powerpc_archs[9]
   },
   {
     64,        /* 64 bits in a word */
@@ -160,7 +219,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[8]
+    &bfd_powerpc_archs[10]
   },
   {
     64,        /* 64 bits in a word */
@@ -174,7 +233,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[9]
+    &bfd_powerpc_archs[11]
   },
   {
     64,        /* 64 bits in a word */
@@ -188,7 +247,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[10]
+    &bfd_powerpc_archs[12]
   },
   {
     32,        /* 32 bits in a word */
@@ -202,7 +261,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[11]
+    &bfd_powerpc_archs[13]
   },
   {
     32,       /* 32 bits in a word */
@@ -216,34 +275,6 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
     false, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
-    &bfd_powerpc_archs[12]
-  },
-  {
-    64,        /* 64 bits in a word */
-    64,        /* 64 bits in an address */
-    8, /* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc64,
-    "powerpc",
-    "powerpc:common64",
-    3,
-    BFD_DEFAULT_TARGET_SIZE == 64, /* default for 64 bit target */
-    powerpc_compatible,
-    bfd_default_scan,
-    &bfd_powerpc_archs[13]
-  },
-  {
-    32,        /* 32 bits in a word */
-    32,        /* 32 bits in an address */
-    8, /* 8 bits in a byte */
-    bfd_arch_powerpc,
-    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
-    "powerpc",
-    "powerpc:common",
-    3,
-    BFD_DEFAULT_TARGET_SIZE != 64, /* default for 32 bit target */
-    powerpc_compatible,
-    bfd_default_scan,
     0
   }
 };