* amd64-sol2-tdep.c (amd64_sol2_gregset_reg_offset): Correct
[deliverable/binutils-gdb.git] / gdb / buildsym.c
index 1785329807281d5fcc987f1ceab9e4de9e268590..a7f141eb5ddd9cf5d2896f79468fe7d3fbaf844c 100644 (file)
@@ -1,7 +1,5 @@
 /* Support routines for building symbol tables in GDB's internal format.
-   Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009,
-   2010 Free Software Foundation, Inc.
+   Copyright (C) 1986-2004, 2007-2012 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -112,11 +110,8 @@ add_free_pendings (struct pending *list)
       free_pendings = list;
     }
 }
-      
-/* Add a symbol to one of the lists of symbols.  While we're at it, if
-   we're in the C++ case and don't have full namespace debugging info,
-   check to see if it references an anonymous namespace; if so, add an
-   appropriate using directive.  */
+
+/* Add a symbol to one of the lists of symbols.  */
 
 void
 add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
@@ -156,7 +151,7 @@ struct symbol *
 find_symbol_in_list (struct pending *list, char *name, int length)
 {
   int j;
-  char *pp;
+  const char *pp;
 
   while (list != NULL)
     {
@@ -326,13 +321,15 @@ finish_block (struct symbol *symbol, struct pending **listhead,
       if (symbol)
        {
          complaint (&symfile_complaints,
-                    _("block end address less than block start address in %s (patched it)"),
+                    _("block end address less than block "
+                      "start address in %s (patched it)"),
                     SYMBOL_PRINT_NAME (symbol));
        }
       else
        {
          complaint (&symfile_complaints,
-                    _("block end address %s less than block start address %s (patched it)"),
+                    _("block end address %s less than block "
+                      "start address %s (patched it)"),
                     paddress (gdbarch, BLOCK_END (block)),
                     paddress (gdbarch, BLOCK_START (block)));
        }
@@ -370,7 +367,8 @@ finish_block (struct symbol *symbol, struct pending **listhead,
              else
                {
                  complaint (&symfile_complaints,
-                            _("inner block (%s-%s) not inside outer block (%s-%s)"),
+                            _("inner block (%s-%s) not "
+                              "inside outer block (%s-%s)"),
                             paddress (gdbarch, BLOCK_START (pblock->block)),
                             paddress (gdbarch, BLOCK_END (pblock->block)),
                             paddress (gdbarch, BLOCK_START (block)),
@@ -640,7 +638,7 @@ void
 patch_subfile_names (struct subfile *subfile, char *name)
 {
   if (subfile != NULL && subfile->dirname == NULL && subfile->name != NULL
-      && subfile->name[strlen (subfile->name) - 1] == '/')
+      && IS_DIR_SEPARATOR (subfile->name[strlen (subfile->name) - 1]))
     {
       subfile->dirname = subfile->name;
       subfile->name = xstrdup (name);
@@ -695,7 +693,8 @@ pop_subfile (void)
 
   if (link == NULL)
     {
-      internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
+      internal_error (__FILE__, __LINE__,
+                     _("failed internal consistency check"));
     }
   name = link->name;
   subfile_stack = link->next;
@@ -874,7 +873,7 @@ watch_main_source_file_lossage (void)
           subfile->next;
           subfile = subfile->next)
        {
-         if (strcmp (lbasename (subfile->name), mainbase) == 0)
+         if (filename_cmp (lbasename (subfile->name), mainbase) == 0)
            {
              ++nr_matches;
              mainsub_alias = subfile;
@@ -1096,8 +1095,6 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
            {
              symtab->dirname = NULL;
            }
-         symtab->free_code = free_linetable;
-         symtab->free_func = NULL;
 
          /* Use whatever language we have been using for this
             subfile, not the one that was deduced in allocate_symtab
@@ -1108,18 +1105,10 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
          symtab->language = subfile->language;
 
          /* Save the debug format string (if any) in the symtab.  */
-         if (subfile->debugformat != NULL)
-           {
-             symtab->debugformat = obsavestring (subfile->debugformat,
-                                             strlen (subfile->debugformat),
-                                                 &objfile->objfile_obstack);
-           }
+         symtab->debugformat = subfile->debugformat;
 
          /* Similarly for the producer.  */
-         if (subfile->producer != NULL)
-           symtab->producer = obsavestring (subfile->producer,
-                                            strlen (subfile->producer),
-                                            &objfile->objfile_obstack);
+         symtab->producer = subfile->producer;
 
          /* All symtabs for the main file and the subfiles share a
             blockvector, so we need to clear primary for everything
@@ -1165,12 +1154,6 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
        {
          xfree ((void *) subfile->line_vector);
        }
-      if (subfile->debugformat != NULL)
-       {
-         xfree ((void *) subfile->debugformat);
-       }
-      if (subfile->producer != NULL)
-       xfree (subfile->producer);
 
       nextsub = subfile->next;
       xfree ((void *) subfile);
@@ -1268,27 +1251,22 @@ pop_context (void)
 /* Compute a small integer hash code for the given name.  */
 
 int
-hashname (char *name)
+hashname (const char *name)
 {
     return (hash(name,strlen(name)) % HASHSIZE);
 }
 \f
 
 void
-record_debugformat (char *format)
+record_debugformat (const char *format)
 {
-  current_subfile->debugformat = xstrdup (format);
+  current_subfile->debugformat = format;
 }
 
 void
 record_producer (const char *producer)
 {
-  /* The producer is not always provided in the debugging info.
-     Do nothing if PRODUCER is NULL.  */
-  if (producer == NULL)
-    return;
-
-  current_subfile->producer = xstrdup (producer);
+  current_subfile->producer = producer;
 }
 
 /* Merge the first symbol list SRCLIST into the second symbol list
This page took 0.026963 seconds and 4 git commands to generate.