From 3158c6ed12f939c10d31152fd3eb48ea0f8b8eaa Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Mon, 14 Feb 2011 11:25:12 +0000 Subject: [PATCH] * value.c (get_internalvar_integer): Also return the int value of TYPE_CODE_INT INTERNALVAR_VALUE values. (set_internalvar): Don't special case TYPE_CODE_INT. --- gdb/ChangeLog | 6 ++++++ gdb/value.c | 25 ++++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 34200b05a4..106835a764 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-02-14 Pedro Alves + + * value.c (get_internalvar_integer): Also return the int value of + TYPE_CODE_INT INTERNALVAR_VALUE values. + (set_internalvar): Don't special case TYPE_CODE_INT. + 2011-02-14 Pedro Alves * value.c (struct internalvar) : Remove diff --git a/gdb/value.c b/gdb/value.c index 92d857fac4..ee53914707 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1675,15 +1675,24 @@ value_of_internalvar (struct gdbarch *gdbarch, struct internalvar *var) int get_internalvar_integer (struct internalvar *var, LONGEST *result) { - switch (var->kind) + if (var->kind == INTERNALVAR_INTEGER) { - case INTERNALVAR_INTEGER: *result = var->u.integer.val; return 1; - - default: - return 0; } + + if (var->kind == INTERNALVAR_VALUE) + { + struct type *type = check_typedef (value_type (var->u.value)); + + if (TYPE_CODE (type) == TYPE_CODE_INT) + { + *result = value_as_long (var->u.value); + return 1; + } + } + + return 0; } static int @@ -1750,12 +1759,6 @@ set_internalvar (struct internalvar *var, struct value *val) /* Copies created here are never canonical. */ break; - case TYPE_CODE_INT: - new_kind = INTERNALVAR_INTEGER; - new_data.integer.type = value_type (val); - new_data.integer.val = value_as_long (val); - break; - default: new_kind = INTERNALVAR_VALUE; new_data.value = value_copy (val);