]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* valops.c (value_ind): No longer allow dereferencing an
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Sep 2008 14:17:58 +0000 (14:17 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Thu, 11 Sep 2008 14:17:58 +0000 (14:17 +0000)
integer type.
* eval.c (evaluate_subexp_standard): Handle deferencing an
integer type here.
* ada-lang.c (ada_evaluate_subexp): Likewise.

gdb/ChangeLog
gdb/ada-lang.c
gdb/eval.c
gdb/valops.c

index 4249f7f0fcec3b04e256332b83691822126cc800..aedacce09fb0aeb624f8308a8195d26c26e0c6de 100644 (file)
@@ -1,3 +1,11 @@
+2008-09-11  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * valops.c (value_ind): No longer allow dereferencing an
+       integer type.
+       * eval.c (evaluate_subexp_standard): Handle deferencing an
+       integer type here.
+       * ada-lang.c (ada_evaluate_subexp): Likewise.
+
 2008-09-11  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * ada-valprint.c (ada_val_print_1): When implicitly dereferencing
index 15310efad236103c4dd292cc7fb90e3a16c1a37f..75a98289544ac8709d235d3dc18f8a8d1453785e 100644 (file)
@@ -9155,7 +9155,8 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
             }
           else if (TYPE_CODE (type) == TYPE_CODE_INT)
             /* GDB allows dereferencing an int.  */
-            return value_zero (builtin_type_int, lval_memory);
+            return value_zero (builtin_type (exp->gdbarch)->builtin_int,
+                              lval_memory);
           else
             error (_("Attempt to take contents of a non-pointer value."));
         }
@@ -9165,6 +9166,10 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
       if (ada_is_array_descriptor_type (type))
         /* GDB allows dereferencing GNAT array descriptors.  */
         return ada_coerce_to_simple_array (arg1);
+      else if (TYPE_CODE (type) == TYPE_CODE_INT)
+       /* GDB allows dereferencing an int.  */
+       return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
+                             (CORE_ADDR) value_as_address (arg1));
       else
         return ada_value_ind (arg1);
 
index 6a43e9486e7d48cb07cbcf8382501b7750a9b2fb..f4ae539b52f25c3be510c1a0d700bcb829aa98e3 100644 (file)
@@ -2288,10 +2288,19 @@ evaluate_subexp_standard (struct type *expect_type,
                               lval_memory);
          else if (TYPE_CODE (type) == TYPE_CODE_INT)
            /* GDB allows dereferencing an int.  */
-           return value_zero (builtin_type_int, lval_memory);
+           return value_zero (builtin_type (exp->gdbarch)->builtin_int,
+                              lval_memory);
          else
            error (_("Attempt to take contents of a non-pointer value."));
        }
+
+      /* Allow * on an integer so we can cast it to whatever we want.
+        This returns an int, which seems like the most C-like thing to
+        do.  "long long" variables are rare enough that
+        BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
+      if (TYPE_CODE (type) == TYPE_CODE_INT)
+       return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
+                             (CORE_ADDR) value_as_address (arg1));
       return value_ind (arg1);
 
     case UNOP_ADDR:
index 0d1ffdf3e6ad1d94a54602954cfe4ecb33192aaf..f14c2f5f38d4ceeb3811b417a180ee2c7b9a784e 100644 (file)
@@ -1172,14 +1172,7 @@ value_ind (struct value *arg1)
 
   base_type = check_typedef (value_type (arg1));
 
-  /* Allow * on an integer so we can cast it to whatever we want.
-     This returns an int, which seems like the most C-like thing to
-     do.  "long long" variables are rare enough that
-     BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
-  if (TYPE_CODE (base_type) == TYPE_CODE_INT)
-    return value_at_lazy (builtin_type_int,
-                         (CORE_ADDR) value_as_address (arg1));
-  else if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
+  if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
     {
       struct type *enc_type;
       /* We may be pointing to something embedded in a larger object.