--- ./bfd/rs6000-core.c_orig	2011-11-10 19:02:59.093607185 +0530
+++ ./bfd/rs6000-core.c	2011-11-10 19:03:02.337607321 +0530
@@ -94,7 +94,7 @@
 /* Union of 32-bit and 64-bit versions of ld_info.  */
 
 typedef union {
-#ifdef __ld_info32
+#ifdef __ld_info64
   struct __ld_info32 l32;
   struct __ld_info64 l64;
 #else
@@ -111,8 +111,6 @@
 #else
   struct core_dump new_dump;		/* for simpler coding */
 #endif
-  struct core_dump old;		/* old AIX 4.2- core dump, still used on
-				   4.3+ with appropriate SMIT config */
 } CoreHdr;
 
 /* Union of old and new vm_info structures.  */
@@ -124,14 +122,13 @@
 #else
   struct vm_info new_dump;
 #endif
-  struct vm_info old;
 } VmInfo;
 #endif
 
 /* Return whether CoreHdr C is in new or old format.  */
 
 #ifdef AIX_CORE_DUMPX_CORE
-# define CORE_NEW(c)	(!(c).old.c_entries)
+# define CORE_NEW(c)	(!(c).new_dump.c_entries)
 #else
 # define CORE_NEW(c)	0
 #endif
@@ -196,7 +193,7 @@
 /* Return the c_impl field from struct core_dumpx C.  */
 
 #if defined (HAVE_ST_C_IMPL) || defined (AIX_5_CORE)
-# define CNEW_IMPL(c)	(c).c_impl
+# define CNEW_IMPL(c) (c).c_impl
 #else
 # define CNEW_IMPL(c)	0
 #endif
@@ -260,8 +257,13 @@
 
 /* Size of the leading portion that old and new core dump structures have in
    common.  */
-#define CORE_COMMONSZ	((int) &((struct core_dump *) 0)->c_entries \
-			 + sizeof (((struct core_dump *) 0)->c_entries))
+#ifdef AIX_CORE_DUMPX_CORE
+#define CORE_COMMONSZ	((long) &((struct core_dumpx *) 0)->c_entries \
+			 + sizeof (((struct core_dumpx *) 0)->c_entries))
+#else
+#define CORE_COMMONSZ   ((int) &((struct core_dump *) 0)->c_entries \
+			+ sizeof (((struct core_dump *) 0)->c_entries)
+#endif
 
 /* Define prototypes for certain functions, to avoid a compiler warning
    saying that they are missing.  */
@@ -292,8 +294,6 @@
   /* Read the trailing portion of the structure.  */
   if (CORE_NEW (*core))
     size = sizeof (core->new_dump);
-  else
-    size = sizeof (core->old);
   size -= CORE_COMMONSZ;
   return bfd_bread ((char *) core + CORE_COMMONSZ, size, abfd) == size;
 }
@@ -358,16 +358,7 @@
       c_stackend = CNEW_STACKORG (core.new_dump) + c_size;
       c_lsize = CNEW_LSIZE (core.new_dump);
       c_loader = CNEW_LOADER (core.new_dump);
-      proc64 = CNEW_PROC64 (core.new_dump);
-    }
-  else
-    {
-      c_flag = core.old.c_flag;
-      c_stack = (file_ptr) (ptr_to_uint) core.old.c_stack;
-      c_size = core.old.c_size;
-      c_stackend = COLD_STACKEND;
-      c_lsize = 0x7ffffff;
-      c_loader = (file_ptr) (ptr_to_uint) COLD_LOADER (core.old);
+      /* proc64 = CNEW_PROC64 (core.new_dump); */
       proc64 = 0;
     }
 
@@ -381,11 +372,6 @@
       c_regsize = sizeof (CNEW_MSTSAVE (core.new_dump));
       c_regptr = &CNEW_MSTSAVE (core.new_dump);
     }
-  else
-    {
-      c_regsize = sizeof (COLD_MSTSAVE (core.old));
-      c_regptr = &COLD_MSTSAVE (core.old);
-    }
   c_regoff = (char *) c_regptr - (char *) &core;
 
   if (bfd_stat (abfd, &statbuf) < 0)
@@ -435,7 +421,7 @@
     }
 
   /* Sanity check on the c_tab field.  */
-  if (!CORE_NEW (core) && (c_loader < (file_ptr) sizeof core.old ||
+  if (!CORE_NEW (core) && (c_loader < (file_ptr) sizeof core.new_dump ||
 			   c_loader >= statbuf.st_size ||
 			   c_loader >= c_stack))
     {
@@ -449,7 +435,7 @@
 			   bfd_get_filename (abfd));
 
   /* Allocate core file header.  */
-  size = CORE_NEW (core) ? sizeof (core.new_dump) : sizeof (core.old);
+  size =  sizeof (core.new_dump);
   tmpptr = (char *) bfd_zalloc (abfd, (bfd_size_type) size);
   if (!tmpptr)
     return NULL;
@@ -542,13 +528,6 @@
 	c_vmregions = core.new_dump.c_vmregions;
 	c_vmm = (file_ptr) core.new_dump.c_vmm;
       }
-    else
-      {
-	c_datasize = core.old.c_datasize;
-	c_data = (file_ptr) (ptr_to_uint) core.old.c_data;
-	c_vmregions = core.old.c_vmregions;
-	c_vmm = (file_ptr) (ptr_to_uint) core.old.c_vmm;
-      }
 
     /* .data section from executable.  */
     if (c_datasize)
@@ -615,7 +594,7 @@
 	    file_ptr vminfo_offset;
 	    bfd_vma vminfo_addr;
 
-	    size = CORE_NEW (core) ? sizeof (vminfo.new_dump) : sizeof (vminfo.old);
+	    size = sizeof (vminfo.new_dump);
 	    if (bfd_bread (&vminfo, size, abfd) != size)
 	      goto fail;
 
@@ -625,12 +604,6 @@
 		vminfo_size = vminfo.new_dump.vminfo_size;
 		vminfo_offset = vminfo.new_dump.vminfo_offset;
 	      }
-	    else
-	      {
-		vminfo_addr = (bfd_vma) (long) vminfo.old.vminfo_addr;
-		vminfo_size = vminfo.old.vminfo_size;
-		vminfo_offset = vminfo.old.vminfo_offset;
-	      }
 
 	    if (vminfo_offset)
 	      if (!make_bfd_asection (abfd, ".vmdata",
@@ -670,8 +643,6 @@
 
   if (CORE_NEW (core))
     c_loader = CNEW_LOADER (core.new_dump);
-  else
-    c_loader = (file_ptr) (ptr_to_uint) COLD_LOADER (core.old);
 
   if (CORE_NEW (core) && CNEW_PROC64 (core.new_dump))
     size = (int) ((LdInfo *) 0)->l64.ldinfo_filename;
@@ -734,8 +705,7 @@
 rs6000coff_core_file_failing_command (bfd *abfd)
 {
   CoreHdr *core = core_hdr (abfd);
-  char *com = CORE_NEW (*core) ?
-    CNEW_COMM (core->new_dump) : COLD_COMM (core->old);
+  char *com = CNEW_COMM (core->new_dump);
 
   if (*com)
     return com;
@@ -747,7 +717,7 @@
 rs6000coff_core_file_failing_signal (bfd *abfd)
 {
   CoreHdr *core = core_hdr (abfd);
-  return CORE_NEW (*core) ? core->new_dump.c_signo : core->old.c_signo;
+  return  core->new_dump.c_signo;
 }
 
 #endif /* AIX_CORE */
