--- ./gdb/xcoffread.c_orig	2011-12-01 16:25:05.418467435 +0530
+++ ./gdb/xcoffread.c	2011-12-01 16:25:08.514307071 +0530
@@ -1081,8 +1081,7 @@
 	  /* Done with all files, everything from here on is globals.  */
 	}
 
-      if ((cs->c_sclass == C_EXT || cs->c_sclass == C_HIDEXT)
-	  && cs->c_naux == 1)
+      if (cs->c_sclass == C_EXT || cs->c_sclass == C_HIDEXT)
 	{
 	  /* Dealing with a symbol with a csect entry.  */
 
@@ -1093,9 +1092,13 @@
 #define	CSECT_SCLAS(PP) (CSECT(PP).x_smclas)
 
 	  /* Convert the auxent to something we can access.  */
-	  bfd_coff_swap_aux_in (abfd, raw_auxptr, cs->c_type, cs->c_sclass,
-				0, cs->c_naux, &main_aux);
-
+                    if (cs->c_naux > 1)
+          bfd_coff_swap_aux_in (abfd, raw_auxptr + coff_data (abfd)->local_symesz,
+                                cs->c_type, cs->c_sclass, cs->c_naux - 1,
+                                cs->c_naux, &main_aux);
+          else if (cs->c_naux == 1)
+             bfd_coff_swap_aux_in (abfd, raw_auxptr, cs->c_type, cs->c_sclass,
+                                   0, cs->c_naux, &main_aux);
 	  switch (CSECT_SMTYP (&main_aux))
 	    {
 
