* eval.c (evaluate_subexp_for_sizeof): Use builtin_int type of
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Sep 2008 14:12:57 +0000 (14:12 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Sep 2008 14:12:57 +0000 (14:12 +0000)
the expression architecture instead of builtin_type_int as the
sizeof return type.

gdb/ChangeLog
gdb/eval.c

index f98c925..6a903b9 100644 (file)
@@ -1,5 +1,11 @@
 2008-09-11  Ulrich Weigand  <uweigand@de.ibm.com>
 
+       * eval.c (evaluate_subexp_for_sizeof): Use builtin_int type of
+       the expression architecture instead of builtin_type_int as the
+       sizeof return type.
+
+2008-09-11  Ulrich Weigand  <uweigand@de.ibm.com>
+
        * expression.h (enum exp_opcode): Document OP_COMPLEX to take
        a type parameter as expression element.
        * eval.c (evaluate_subexp_standard) [OP_COMPLEX]: Retrieve result
index 92b2d72..3c082c2 100644 (file)
@@ -2335,6 +2335,8 @@ evaluate_subexp_with_coercion (struct expression *exp,
 static struct value *
 evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
 {
+  /* FIXME: This should be size_t.  */
+  struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
   enum exp_opcode op;
   int pc;
   struct type *type;
@@ -2358,24 +2360,22 @@ evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
          && TYPE_CODE (type) != TYPE_CODE_ARRAY)
        error (_("Attempt to take contents of a non-pointer value."));
       type = check_typedef (TYPE_TARGET_TYPE (type));
-      return value_from_longest (builtin_type_int, (LONGEST)
-                                TYPE_LENGTH (type));
+      return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
 
     case UNOP_MEMVAL:
       (*pos) += 3;
       type = check_typedef (exp->elts[pc + 1].type);
-      return value_from_longest (builtin_type_int,
-                                (LONGEST) TYPE_LENGTH (type));
+      return value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
 
     case OP_VAR_VALUE:
       (*pos) += 4;
       type = check_typedef (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
       return
-       value_from_longest (builtin_type_int, (LONGEST) TYPE_LENGTH (type));
+       value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
 
     default:
       val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
-      return value_from_longest (builtin_type_int,
+      return value_from_longest (size_type,
                                 (LONGEST) TYPE_LENGTH (value_type (val)));
     }
 }