aboutsummaryrefslogtreecommitdiff
path: root/gdb/findvar.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/findvar.c')
-rw-r--r--gdb/findvar.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 740d8d6..d2a3025 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -384,6 +384,14 @@ symbol_read_needs_frame (struct symbol *sym)
{
/* All cases listed explicitly so that gcc -Wall will detect it if
we failed to consider one. */
+ case LOC_COMPUTED:
+ case LOC_COMPUTED_ARG:
+ {
+ struct location_funcs *symfuncs = SYMBOL_LOCATION_FUNCS (sym);
+ return (symfuncs->read_needs_frame) (sym);
+ }
+ break;
+
case LOC_REGISTER:
case LOC_ARG:
case LOC_REF_ARG:
@@ -605,6 +613,18 @@ addresses have not been bound by the dynamic loader. Try again when executable i
}
break;
+ case LOC_COMPUTED:
+ case LOC_COMPUTED_ARG:
+ {
+ struct location_funcs *funcs = SYMBOL_LOCATION_FUNCS (var);
+
+ if (frame == 0 && (funcs->read_needs_frame) (var))
+ return 0;
+ return (funcs->read_variable) (var, frame);
+
+ }
+ break;
+
case LOC_UNRESOLVED:
{
struct minimal_symbol *msym;