projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2012-02-24 Luis Machado <lgustavo@codesourcery>
[deliverable/binutils-gdb.git]
/
gdb
/
stabsread.c
diff --git
a/gdb/stabsread.c
b/gdb/stabsread.c
index 5331bce45268e3676edd242e86d4a09bff5d6bfc..afcfe0676f383de91f66e6e8deaa28f023747dec 100644
(file)
--- a/
gdb/stabsread.c
+++ b/
gdb/stabsread.c
@@
-1,8
+1,6
@@
/* Support routines for decoding "stabs" debugging information format.
/* Support routines for decoding "stabs" debugging information format.
- Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1986-2012 Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-41,6
+39,7
@@
#include "buildsym.h"
#include "complaints.h"
#include "demangle.h"
#include "buildsym.h"
#include "complaints.h"
#include "demangle.h"
+#include "gdb-demangle.h"
#include "language.h"
#include "doublest.h"
#include "cp-abi.h"
#include "language.h"
#include "doublest.h"
#include "cp-abi.h"
@@
-729,7
+728,7
@@
define_symbol (CORE_ADDR valu, char *string, int desc, int type,
SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
if (SYMBOL_LANGUAGE (sym) == language_cplus)
SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
if (SYMBOL_LANGUAGE (sym) == language_cplus)
- cp_scan_for_anonymous_namespaces (sym);
+ cp_scan_for_anonymous_namespaces (sym
, objfile
);
}
p++;
}
p++;
@@
-1174,7
+1173,7
@@
define_symbol (CORE_ADDR valu, char *string, int desc, int type,
NULL, objfile);
if (msym != NULL)
{
NULL, objfile);
if (msym != NULL)
{
- char *new_name = gdbarch_static_transform_name
+ c
onst c
har *new_name = gdbarch_static_transform_name
(gdbarch, SYMBOL_LINKAGE_NAME (sym));
SYMBOL_SET_LINKAGE_NAME (sym, new_name);
(gdbarch, SYMBOL_LINKAGE_NAME (sym));
SYMBOL_SET_LINKAGE_NAME (sym, new_name);
@@
-1368,7
+1367,7
@@
define_symbol (CORE_ADDR valu, char *string, int desc, int type,
NULL, objfile);
if (msym != NULL)
{
NULL, objfile);
if (msym != NULL)
{
- char *new_name = gdbarch_static_transform_name
+ c
onst c
har *new_name = gdbarch_static_transform_name
(gdbarch, SYMBOL_LINKAGE_NAME (sym));
SYMBOL_SET_LINKAGE_NAME (sym, new_name);
(gdbarch, SYMBOL_LINKAGE_NAME (sym));
SYMBOL_SET_LINKAGE_NAME (sym, new_name);
@@
-2233,10
+2232,11
@@
rs6000_builtin_type (int typenum, struct objfile *objfile)
\f
/* This page contains subroutines of read_type. */
\f
/* This page contains subroutines of read_type. */
-/* Replace *OLD_NAME with the method name portion of PHYSNAME. */
+/* Wrapper around method_name_from_physname to flag a complaint
+ if there is an error. */
-static
void
-
update_method_name_from_physname (char **old_name,
const char *physname)
+static
char *
+
stabs_method_name_from_physname (
const char *physname)
{
char *method_name;
{
char *method_name;
@@
-2246,16
+2246,10
@@
update_method_name_from_physname (char **old_name, const char *physname)
{
complaint (&symfile_complaints,
_("Method has bad physname %s\n"), physname);
{
complaint (&symfile_complaints,
_("Method has bad physname %s\n"), physname);
- return;
+ return
NULL
;
}
}
- if (strcmp (*old_name, method_name) != 0)
- {
- xfree (*old_name);
- *old_name = method_name;
- }
- else
- xfree (method_name);
+ return method_name;
}
/* Read member function stabs info for C++ classes. The form of each member
}
/* Read member function stabs info for C++ classes. The form of each member
@@
-2279,10
+2273,6
@@
read_member_functions (struct field_info *fip, char **pp, struct type *type,
{
int nfn_fields = 0;
int length = 0;
{
int nfn_fields = 0;
int length = 0;
- /* Total number of member functions defined in this class. If the class
- defines two `f' functions, and one `g' function, then this will have
- the value 3. */
- int total_length = 0;
int i;
struct next_fnfield
{
int i;
struct next_fnfield
{
@@
-2682,7
+2672,6
@@
read_member_functions (struct field_info *fip, char **pp, struct type *type,
destr_fnlist->next = fip->fnlist;
fip->fnlist = destr_fnlist;
nfn_fields++;
destr_fnlist->next = fip->fnlist;
fip->fnlist = destr_fnlist;
nfn_fields++;
- total_length += has_destructor;
length -= has_destructor;
}
else if (is_v3)
length -= has_destructor;
}
else if (is_v3)
@@
-2693,14
+2682,24
@@
read_member_functions (struct field_info *fip, char **pp, struct type *type,
- in -gstabs instead of -gstabs+
- or for static methods, which are output as a function type
instead of a method type. */
- in -gstabs instead of -gstabs+
- or for static methods, which are output as a function type
instead of a method type. */
+ char *new_method_name =
+ stabs_method_name_from_physname (sublist->fn_field.physname);
- update_method_name_from_physname (&new_fnlist->fn_fieldlist.name,
- sublist->fn_field.physname);
+ if (new_method_name != NULL
+ && strcmp (new_method_name,
+ new_fnlist->fn_fieldlist.name) != 0)
+ {
+ new_fnlist->fn_fieldlist.name = new_method_name;
+ xfree (main_fn_name);
+ }
+ else
+ xfree (new_method_name);
}
else if (has_destructor && new_fnlist->fn_fieldlist.name[0] != '~')
{
new_fnlist->fn_fieldlist.name =
}
else if (has_destructor && new_fnlist->fn_fieldlist.name[0] != '~')
{
new_fnlist->fn_fieldlist.name =
- concat ("~", main_fn_name, (char *)NULL);
+ obconcat (&objfile->objfile_obstack,
+ "~", main_fn_name, (char *)NULL);
xfree (main_fn_name);
}
else if (!has_stub)
xfree (main_fn_name);
}
else if (!has_stub)
@@
-2717,6
+2716,7
@@
read_member_functions (struct field_info *fip, char **pp, struct type *type,
new_fnlist->fn_fieldlist.name
= obsavestring (dem_opname, strlen (dem_opname),
&objfile->objfile_obstack);
new_fnlist->fn_fieldlist.name
= obsavestring (dem_opname, strlen (dem_opname),
&objfile->objfile_obstack);
+ xfree (main_fn_name);
}
new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
}
new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
@@
-2733,7
+2733,6
@@
read_member_functions (struct field_info *fip, char **pp, struct type *type,
new_fnlist->next = fip->fnlist;
fip->fnlist = new_fnlist;
nfn_fields++;
new_fnlist->next = fip->fnlist;
fip->fnlist = new_fnlist;
nfn_fields++;
- total_length += length;
}
}
}
}
@@
-2745,7
+2744,6
@@
read_member_functions (struct field_info *fip, char **pp, struct type *type,
memset (TYPE_FN_FIELDLISTS (type), 0,
sizeof (struct fn_fieldlist) * nfn_fields);
TYPE_NFN_FIELDS (type) = nfn_fields;
memset (TYPE_FN_FIELDLISTS (type), 0,
sizeof (struct fn_fieldlist) * nfn_fields);
TYPE_NFN_FIELDS (type) = nfn_fields;
- TYPE_NFN_FIELDS_TOTAL (type) = total_length;
}
return 1;
}
return 1;
@@
-2761,7
+2759,7
@@
read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
struct objfile *objfile)
{
char *p;
struct objfile *objfile)
{
char *p;
- char *name;
+ c
onst c
har *name;
char cpp_abbrev;
struct type *context;
char cpp_abbrev;
struct type *context;
@@
-3274,7
+3272,7
@@
read_tilde_fields (struct field_info *fip, char **pp, struct type *type,
i >= TYPE_N_BASECLASSES (t);
--i)
{
i >= TYPE_N_BASECLASSES (t);
--i)
{
- char *name = TYPE_FIELD_NAME (t, i);
+ c
onst c
har *name = TYPE_FIELD_NAME (t, i);
if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2)
&& is_cplus_marker (name[sizeof (vptr_name) - 2]))
if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2)
&& is_cplus_marker (name[sizeof (vptr_name) - 2]))
@@
-3414,8
+3412,8
@@
attach_fields_to_type (struct field_info *fip, struct type *type,
static void
complain_about_struct_wipeout (struct type *type)
{
static void
complain_about_struct_wipeout (struct type *type)
{
- char *name = "";
- char *kind = "";
+ c
onst c
har *name = "";
+ c
onst c
har *kind = "";
if (TYPE_TAG_NAME (type))
{
if (TYPE_TAG_NAME (type))
{
@@
-4553,7
+4551,7
@@
cleanup_undefined_types_1 (void)
struct pending *ppt;
int i;
/* Name of the type, without "struct" or "union". */
struct pending *ppt;
int i;
/* Name of the type, without "struct" or "union". */
- char *typename = TYPE_TAG_NAME (*type);
+ c
onst c
har *typename = TYPE_TAG_NAME (*type);
if (typename == NULL)
{
if (typename == NULL)
{
This page took
0.02675 seconds
and
4
git commands to generate.