diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2006-11-22 13:44:45 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2006-11-22 13:44:45 +0000 |
commit | 0b2b0195d1b3b75d9fd0e5313466a0141790071d (patch) | |
tree | c685ca6d43e2bb095da319b07c2cfe1c47f1f988 /gdb/findvar.c | |
parent | 765dc01564a52c8e8ef896ec4acef04a38d60377 (diff) | |
download | gdb-0b2b0195d1b3b75d9fd0e5313466a0141790071d.zip gdb-0b2b0195d1b3b75d9fd0e5313466a0141790071d.tar.gz gdb-0b2b0195d1b3b75d9fd0e5313466a0141790071d.tar.bz2 |
* findvar.c (address_from_register): New function.
* value.h (address_from_register): Add prototype.
* dwarf2loc.c (dwarf_expr_read_reg): Use address_from_register.
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 0cda35e..9edd151 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -728,6 +728,26 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame) return v; } +/* Return contents of register REGNUM in frame FRAME as address, + interpreted as value of type TYPE. Will abort if register + value is not available. */ + +CORE_ADDR +address_from_register (struct type *type, int regnum, struct frame_info *frame) +{ + struct value *value; + CORE_ADDR result; + + value = value_from_register (type, regnum, frame); + gdb_assert (value); + + result = value_as_address (value); + release_value (value); + value_free (value); + + return result; +} + /* Given a struct symbol for a variable or function, and a stack frame id, |