2000-03-14 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>
Tue, 14 Mar 2000 17:01:05 +0000 (17:01 +0000)
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>
Tue, 14 Mar 2000 17:01:05 +0000 (17:01 +0000)
* eval.c (evaluate_subexp_with_coercion): Add call to
  check_typedef, to handle typedeffed vars correctly.

* gdb.base/printcmds.c: Add typedeffed arrays.

* gdb.base/printcmds.exp (test_print_typedef_arrays): New
  procedure to test arrays that are typedef'd.

gdb/ChangeLog
gdb/eval.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/printcmds.c
gdb/testsuite/gdb.base/printcmds.exp

index 3580442f8d742d9cbdf43b4e412d33e6805dc60f..cdfe0d5e6cfc8259c2002fbbfae98c6e2d6a0e94 100644 (file)
@@ -1,3 +1,8 @@
+2000-03-14  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>
+
+       * eval.c (evaluate_subexp_with_coercion): Add call to
+       check_typedef, to handle typedeffed vars correctly.
+
 Mon Mar 13 21:21:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * defs.h (STREQ, STRCMP, STREQN): Document that these macros are
index d054ac7ffbd3cfb996d91f01f4d64f5cc156072f..5a86a3409ff6807f914f30471c1b36db4310a39f 100644 (file)
@@ -1875,7 +1875,7 @@ evaluate_subexp_with_coercion (exp, pos, noside)
          val =
            locate_var_value
            (var, block_innermost_frame (exp->elts[pc + 1].block));
-         return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (SYMBOL_TYPE (var))),
+         return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (check_typedef (SYMBOL_TYPE (var)))),
                             val);
        }
       /* FALLTHROUGH */
index 101cb6912e35986db6b6b36ec4bed3f9a1b05256..e4e51d0ed0f87a482e4f4abd8358e1fa074301bb 100644 (file)
@@ -1,3 +1,10 @@
+2000-03-14  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>
+
+       * gdb.base/printcmds.c: Add typedeffed arrays.
+
+       * gdb.base/printcmds.exp (test_print_typedef_arrays): New
+       procedure to test arrays that are typedef'd.
+
 2000-03-13  James Ingham  <jingham@leda.cygnus.com>
 
        * lib/gdb.exp: Fix the gdbtk_start routine to correctly find all
index 27080741a3b8fc40234b8fb41be3ccd9ccc8b798..f49c3ebf1b7825fda59e0860c34afd98ac42f705 100644 (file)
@@ -59,6 +59,12 @@ unsigned char ctable2[] = {
 /* Single and multidimensional arrays to test access and printing of array
    members. */
 
+typedef int ArrayInt [10];
+ArrayInt a1 = {2,4,6,8,10,12,14,16,18,20};
+
+typedef char ArrayChar [5];
+ArrayChar a2 = {'a','b','c','d','\0'};
+
 int int1dim[12] = {0,1,2,3,4,5,6,7,8,9,10,11};
 int int2dim[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};
 int int3dim[2][3][2] = {{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}};
@@ -97,5 +103,5 @@ int main ()
   /* Prevent AIX linker from removing variables.  */
   return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0]
     + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] +
-      *parrays -> array1;
+      *parrays -> array1 + a1[0] + a2[0];
 }
index 79c6bc6894094b9b7341c05a74b04c9820595e36..3ea3b90b2629ef99d820f1a9aca410d5af64ca0f 100644 (file)
@@ -552,6 +552,22 @@ proc test_print_int_arrays {} {
        " = {{{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}}"
 }
 
+proc test_print_typedef_arrays {} {
+    global gdb_prompt
+
+    gdb_test "set print elements 24" ""
+
+    gdb_test "p a1" \
+       " = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}"
+    gdb_test "p a1\[0\]" " = 2"
+    gdb_test "p a1\[9\]" " = 20"
+
+    gdb_test "p a2" \
+       " = \"abcd\""
+    gdb_test "p a2\[0\]" " = 97 'a'"
+    gdb_test "p a2\[3\]" " = 100 'd'"
+}
+
 proc test_artificial_arrays {} {
     # Send \026@ instead of just @ in case the kill character is @.
     gdb_test "p int1dim\[0\]\026@2" " = {0, 1}" {p int1dim[0]@2}
@@ -691,6 +707,7 @@ if [set_lang_c] then {
        test_print_repeats_10
        test_print_strings
        test_print_int_arrays
+       test_print_typedef_arrays
        test_artificial_arrays
        test_print_char_arrays
 # We used to do the runto main here.