* config/i386/xm-i386.h (HOST_BYTE_ORDER): Removed.
[deliverable/binutils-gdb.git] / gdb / dbxread.c
index a65dbc8cc1eb9bdacb27926d7cf32a585d148d5c..f1382e7ef045e4ffe015fd33671102b6f46f4e3c 100644 (file)
@@ -1,5 +1,6 @@
 /* Read dbx symbol tables and convert to internal format, for GDB.
-   Copyright 1986, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 1998
+   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+   1996, 1997, 1998, 1999, 2000, 2001
    Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "obstack.h"
 #include "gdb_stat.h"
-#include <ctype.h>
 #include "symtab.h"
 #include "breakpoint.h"
-#include "command.h"
 #include "target.h"
 #include "gdbcore.h"           /* for bfd stuff */
 #include "libaout.h"           /* FIXME Secret internal BFD stuff for a.out */
@@ -58,6 +57,7 @@
 #include "demangle.h"
 #include "language.h"          /* Needed inside partial-stab.h */
 #include "complaints.h"
+#include "cp-abi.h"
 
 #include "aout/aout64.h"
 #include "aout/stab_gnu.h"     /* We always use GNU stabs, not native, now */
@@ -213,7 +213,8 @@ find_text_range (bfd * sym_bfd, struct objfile *objfile)
 {
   asection *sec;
   int found_any = 0;
-  CORE_ADDR start, end;
+  CORE_ADDR start = 0;
+  CORE_ADDR end = 0;
 
   for (sec = sym_bfd->sections; sec; sec = sec->next)
     if (bfd_get_section_flags (sym_bfd, sec) & SEC_CODE)
@@ -514,7 +515,7 @@ record_minimal_symbol (char *name, CORE_ADDR address, int type,
        char *tempstring = name;
        if (tempstring[0] == bfd_get_symbol_leading_char (objfile->obfd))
          ++tempstring;
-       if (VTBL_PREFIX_P ((tempstring)))
+       if (is_vtable_name (tempstring))
          ms_type = mst_data;
       }
       section = SECT_OFF_DATA (objfile);
@@ -945,22 +946,15 @@ fill_symbuf (bfd *sym_bfd)
   symbuf_read += nbytes;
 }
 
-#define SWAP_SYMBOL(symp, abfd) \
-  { \
-    (symp)->n_strx = bfd_h_get_32(abfd,                        \
-                               (unsigned char *)&(symp)->n_strx);      \
-    (symp)->n_desc = bfd_h_get_16 (abfd,                       \
-                               (unsigned char *)&(symp)->n_desc);      \
-    (symp)->n_value = bfd_h_get_32 (abfd,                      \
-                               (unsigned char *)&(symp)->n_value);     \
-  }
-
 #define INTERNALIZE_SYMBOL(intern, extern, abfd)                       \
   {                                                                    \
     (intern).n_type = bfd_h_get_8 (abfd, (extern)->e_type);            \
     (intern).n_strx = bfd_h_get_32 (abfd, (extern)->e_strx);           \
     (intern).n_desc = bfd_h_get_16 (abfd, (extern)->e_desc);           \
-    (intern).n_value = bfd_h_get_32 (abfd, (extern)->e_value);         \
+    if (bfd_get_sign_extend_vma (abfd))                                        \
+      (intern).n_value = bfd_h_get_signed_32 (abfd, (extern)->e_value);        \
+    else                                                               \
+      (intern).n_value = bfd_h_get_32 (abfd, (extern)->e_value);       \
   }
 
 /* Invariant: The symbol pointed to by symbuf_idx is the first one
@@ -2389,13 +2383,25 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
        }
       break;
 
+    case N_MAIN:               /* Name of main routine.  */
+      /* FIXME: If one has a symbol file with N_MAIN and then replaces
+        it with a symbol file with "main" and without N_MAIN.  I'm
+        not sure exactly what rule to follow but probably something
+        like: N_MAIN takes precedence over "main" no matter what
+        objfile it is in; If there is more than one N_MAIN, choose
+        the one in the symfile_objfile; If there is more than one
+        N_MAIN within a given objfile, complain() and choose
+        arbitrarily. (kingdon) */
+      if (name != NULL)
+       set_main_name (name);
+      break;
+
       /* The following symbol types can be ignored.  */
     case N_OBJ:                /* Solaris 2:  Object file dir and name */
       /*   N_UNDF:                   Solaris 2:  file separator mark */
       /*   N_UNDF: -- we will never encounter it, since we only process one
          file's symbols at once.  */
     case N_ENDM:               /* Solaris 2:  End of module */
-    case N_MAIN:               /* Name of main routine.  */
     case N_ALIAS:              /* SunPro F77: alias name, ignore for now.  */
       break;
     }
This page took 0.024998 seconds and 4 git commands to generate.