summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2005-03-07 22:38:04 +0000
committerDaniel Jacobowitz <dan@debian.org>2005-03-07 22:38:04 +0000
commitfaa9c11c324c64664fcfef9550bb8bfad363258f (patch)
tree8ea7ef9378d503539f463100748e606368e27718
parent7671bc0350da1a9871b426ad8a90fc6bdea4a543 (diff)
downloadgdb-faa9c11c324c64664fcfef9550bb8bfad363258f.tar.gz
* findvar.c (read_var_value): Don't allocate V when it will not
be used. Add missing break for LOC_INDIRECT.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/findvar.c15
2 files changed, 17 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 54408972121..70415c02027 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-07 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * findvar.c (read_var_value): Don't allocate V when it will not
+ be used. Add missing break for LOC_INDIRECT.
+
2005-03-06 Mark Kettenis <kettenis@gnu.org>
* sparc64fbsd-tdep.c: Include "solib-svr4.h".
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 84964f31a22..8c48c934d40 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -385,12 +385,20 @@ read_var_value (struct symbol *var, struct frame_info *frame)
CORE_ADDR addr;
int len;
- v = allocate_value (type);
- VALUE_LVAL (v) = lval_memory; /* The most likely possibility. */
+ if (SYMBOL_CLASS (var) == LOC_COMPUTED
+ || SYMBOL_CLASS (var) == LOC_COMPUTED_ARG
+ || SYMBOL_CLASS (var) == LOC_REGISTER
+ || SYMBOL_CLASS (var) == LOC_REGPARM)
+ /* These cases do not use V. */
+ v = NULL;
+ else
+ {
+ v = allocate_value (type);
+ VALUE_LVAL (v) = lval_memory; /* The most likely possibility. */
+ }
len = TYPE_LENGTH (type);
-
/* FIXME drow/2003-09-06: this call to the selected frame should be
pushed upwards to the callers. */
if (frame == NULL)
@@ -452,6 +460,7 @@ addresses have not been bound by the dynamic loader. Try again when executable i
locaddr = SYMBOL_VALUE_ADDRESS (var);
loc = value_at (lookup_pointer_type (type), locaddr);
addr = value_as_address (loc);
+ break;
}
case LOC_ARG: