diff options
Diffstat (limited to 'gdb/findvar.c')
-rw-r--r-- | gdb/findvar.c | 20 |
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; |