aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/symtab.c36
-rw-r--r--gdb/valops.c36
-rw-r--r--gdb/value.h2
4 files changed, 42 insertions, 38 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b8dee93..b33c142 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2012-12-14 Tom Tromey <tromey@redhat.com>
+ * symtab.c (check_field): Now static. Move from...
+ * valops.c (check_field): ... here. Remove.
+ * value.h (check_field): Don't declare.
+
+2012-12-14 Tom Tromey <tromey@redhat.com>
+
* NEWS: Mention "info proc" and core files.
* corelow.c (core_info_proc): New function.
(init_core_ops): Set to_info_proc.
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 1b0b35b..1de3454 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1278,6 +1278,42 @@ lookup_language_this (const struct language_defn *lang,
return NULL;
}
+/* Given TYPE, a structure/union,
+ return 1 if the component named NAME from the ultimate target
+ structure/union is defined, otherwise, return 0. */
+
+static int
+check_field (struct type *type, const char *name)
+{
+ int i;
+
+ /* The type may be a stub. */
+ CHECK_TYPEDEF (type);
+
+ for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
+ {
+ const char *t_field_name = TYPE_FIELD_NAME (type, i);
+
+ if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
+ return 1;
+ }
+
+ /* C++: If it was not found as a data field, then try to return it
+ as a pointer to a method. */
+
+ for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
+ {
+ if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
+ return 1;
+ }
+
+ for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
+ if (check_field (TYPE_BASECLASS (type, i), name))
+ return 1;
+
+ return 0;
+}
+
/* Behave like lookup_symbol except that NAME is the natural name
(e.g., demangled name) of the symbol that we're looking for. */
diff --git a/gdb/valops.c b/gdb/valops.c
index 372f118..fada3a5 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3180,42 +3180,6 @@ destructor_name_p (const char *name, struct type *type)
return 0;
}
-/* Given TYPE, a structure/union,
- return 1 if the component named NAME from the ultimate target
- structure/union is defined, otherwise, return 0. */
-
-int
-check_field (struct type *type, const char *name)
-{
- int i;
-
- /* The type may be a stub. */
- CHECK_TYPEDEF (type);
-
- for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
- {
- const char *t_field_name = TYPE_FIELD_NAME (type, i);
-
- if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
- return 1;
- }
-
- /* C++: If it was not found as a data field, then try to return it
- as a pointer to a method. */
-
- for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
- {
- if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
- return 1;
- }
-
- for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
- if (check_field (TYPE_BASECLASS (type, i), name))
- return 1;
-
- return 0;
-}
-
/* C++: Given an aggregate type CURTYPE, and a member name NAME,
return the appropriate member (or the address of the member, if
WANT_ADDRESS). This function is used to resolve user expressions
diff --git a/gdb/value.h b/gdb/value.h
index 7a23715..1b7b679 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -913,8 +913,6 @@ extern void print_variable_and_value (const char *name,
struct ui_file *stream,
int indent);
-extern int check_field (struct type *, const char *);
-
extern void typedef_print (struct type *type, struct symbol *news,
struct ui_file *stream);