Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Unified Diff: gdb/stabsread.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/stabsread.h ('k') | gdb/stack.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/stabsread.c
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index 865bac8530cce831fadfe83d0d602e08569f048d..eb09c9d5997dfb9a43bc9a96ca5090e4c33a7749 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -98,7 +98,7 @@ static void
patch_block_stabs (struct pending *, struct pending_stabs *,
struct objfile *);
-static void fix_common_block (struct symbol *, int);
+static void fix_common_block (struct symbol *, CORE_ADDR);
static int read_type_number (char **, int *);
@@ -1173,7 +1173,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
NULL, objfile);
if (msym != NULL)
{
- char *new_name = gdbarch_static_transform_name
+ const char *new_name = gdbarch_static_transform_name
(gdbarch, SYMBOL_LINKAGE_NAME (sym));
SYMBOL_SET_LINKAGE_NAME (sym, new_name);
@@ -1367,7 +1367,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
NULL, objfile);
if (msym != NULL)
{
- char *new_name = gdbarch_static_transform_name
+ const char *new_name = gdbarch_static_transform_name
(gdbarch, SYMBOL_LINKAGE_NAME (sym));
SYMBOL_SET_LINKAGE_NAME (sym, new_name);
@@ -2232,10 +2232,11 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
/* 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;
@@ -2245,16 +2246,10 @@ update_method_name_from_physname (char **old_name, const char *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
@@ -2278,10 +2273,6 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
{
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
{
@@ -2681,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++;
- total_length += has_destructor;
length -= has_destructor;
}
else if (is_v3)
@@ -2692,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. */
+ 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 =
- concat ("~", main_fn_name, (char *)NULL);
+ obconcat (&objfile->objfile_obstack,
+ "~", main_fn_name, (char *)NULL);
xfree (main_fn_name);
}
else if (!has_stub)
@@ -2716,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);
+ xfree (main_fn_name);
}
new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
@@ -2732,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++;
- total_length += length;
}
}
@@ -2744,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;
- TYPE_NFN_FIELDS_TOTAL (type) = total_length;
}
return 1;
@@ -2760,7 +2759,7 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
struct objfile *objfile)
{
char *p;
- char *name;
+ const char *name;
char cpp_abbrev;
struct type *context;
@@ -2831,8 +2830,8 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
{
int nbits;
- FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits,
- 0);
+ SET_FIELD_BITPOS (fip->list->field,
+ read_huge_number (pp, ';', &nbits, 0));
if (nbits != 0)
return 0;
}
@@ -2908,7 +2907,8 @@ read_one_struct_field (struct field_info *fip, char **pp, char *p,
{
int nbits;
- FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits, 0);
+ SET_FIELD_BITPOS (fip->list->field,
+ read_huge_number (pp, ',', &nbits, 0));
if (nbits != 0)
{
stabs_general_complaint ("bad structure-type format");
@@ -3188,7 +3188,7 @@ read_baseclasses (struct field_info *fip, char **pp, struct type *type,
corresponding to this baseclass. Always zero in the absence of
multiple inheritance. */
- FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits, 0);
+ SET_FIELD_BITPOS (new->field, read_huge_number (pp, ',', &nbits, 0));
if (nbits != 0)
return 0;
}
@@ -3273,7 +3273,7 @@ read_tilde_fields (struct field_info *fip, char **pp, struct type *type,
i >= TYPE_N_BASECLASSES (t);
--i)
{
- char *name = TYPE_FIELD_NAME (t, i);
+ const char *name = TYPE_FIELD_NAME (t, i);
if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2)
&& is_cplus_marker (name[sizeof (vptr_name) - 2]))
@@ -3413,8 +3413,8 @@ attach_fields_to_type (struct field_info *fip, struct type *type,
static void
complain_about_struct_wipeout (struct type *type)
{
- char *name = "";
- char *kind = "";
+ const char *name = "";
+ const char *kind = "";
if (TYPE_TAG_NAME (type))
{
@@ -3731,7 +3731,7 @@ read_enum_type (char **pp, struct type *type,
SYMBOL_TYPE (xsym) = type;
TYPE_FIELD_NAME (type, n) = SYMBOL_LINKAGE_NAME (xsym);
- TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
+ SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
TYPE_FIELD_BITSIZE (type, n) = 0;
}
if (syms == osyms)
@@ -4398,7 +4398,7 @@ common_block_end (struct objfile *objfile)
the common block name). */
static void
-fix_common_block (struct symbol *sym, int valu)
+fix_common_block (struct symbol *sym, CORE_ADDR valu)
{
struct pending *next = (struct pending *) SYMBOL_TYPE (sym);
@@ -4552,7 +4552,7 @@ cleanup_undefined_types_1 (void)
struct pending *ppt;
int i;
/* Name of the type, without "struct" or "union". */
- char *typename = TYPE_TAG_NAME (*type);
+ const char *typename = TYPE_TAG_NAME (*type);
if (typename == NULL)
{
@@ -4598,7 +4598,7 @@ cleanup_undefined_types_1 (void)
this unit. */
void
-cleanup_undefined_types (struct objfile *objfile)
+cleanup_undefined_stabs_types (struct objfile *objfile)
{
cleanup_undefined_types_1 ();
cleanup_undefined_types_noname (objfile);
« no previous file with comments | « gdb/stabsread.h ('k') | gdb/stack.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698