* language.h (struct language_defn): New field c_style_arrays.
authorPer Bothner <per@bothner.com>
Thu, 26 Jan 1995 02:32:25 +0000 (02:32 +0000)
committerPer Bothner <per@bothner.com>
Thu, 26 Jan 1995 02:32:25 +0000 (02:32 +0000)
* language.c (unknown_language_defn, auto_language_defn,
local_language_defn), c-lang.c (c_language_defn, cplus_language_defn,
asm_language_defn):  Set c_style_arrays to true.
* m2-lang.c (m2_language_defn), ch-lang.c (chill_language_defn),
f-lang.c (f_language_defn):  Set c_style_arrays to false.
* valops.c (value_string):  If c_style_array is not set,
allocate string in gdb (not inferior) using allocate_value.

* value.h (COERCE_ARRAY), valops.c (value_addr, value_arg_coerce):
Only call value_coerce_array if current_language->c_style_arrays.
* values.c:  Add #include "language.h".  (Needed for COERCE_ARRAY.)

* valops.c (chill_varying_type):  New predicate.
* valops.c (value_cast):  Support assigning a fixed string or array
to a variable string/array structure.

* valarith.c (value_subscripted_rvalue):  Extra parameter lowerbound.
Check index>=lowerbound, and then add lowerbound to index here,
instead of in caller.  Generalize to arbitrary lval_types.
(value_subscript):  Use enhanced value_subscripted_rvalue if
c_style_arrays is false (and index is in range).

gdb/ChangeLog
gdb/c-lang.c
gdb/ch-lang.c
gdb/f-lang.c
gdb/language.c
gdb/language.h
gdb/m2-lang.c
gdb/values.c

index 9dac0e4..7954cfc 100644 (file)
@@ -1,3 +1,28 @@
+Wed Jan 25 18:13:14 1995  Per Bothner  <bothner@kalessin.cygnus.com>
+
+       * language.h (struct language_defn):  New field c_style_arrays.
+       * language.c (unknown_language_defn, auto_language_defn,
+       local_language_defn), c-lang.c (c_language_defn, cplus_language_defn,
+       asm_language_defn):  Set c_style_arrays to true.
+       * m2-lang.c (m2_language_defn), ch-lang.c (chill_language_defn),
+       f-lang.c (f_language_defn):  Set c_style_arrays to false.
+       * valops.c (value_string):  If c_style_array is not set,
+       allocate string in gdb (not inferior) using allocate_value.
+
+       * value.h (COERCE_ARRAY), valops.c (value_addr, value_arg_coerce):
+       Only call value_coerce_array if current_language->c_style_arrays.
+       * values.c:  Add #include "language.h".  (Needed for COERCE_ARRAY.)
+
+       * valops.c (chill_varying_type):  New predicate.
+       * valops.c (value_cast):  Support assigning a fixed string or array
+       to a variable string/array structure.
+
+       * valarith.c (value_subscripted_rvalue):  Extra parameter lowerbound.
+       Check index>=lowerbound, and then add lowerbound to index here,
+       instead of in caller.  Generalize to arbitrary lval_types.
+       (value_subscript):  Use enhanced value_subscripted_rvalue if
+       c_style_arrays is false (and index is in range).
+
 Wed Jan 25 18:23:46 1995  Stu Grossman  (grossman@cygnus.com)
 
        * gdbtk.c (gdbtk_init):  Prevent segfault when gdbtk.tcl can't be
index 98d09eb..eccd230 100644 (file)
@@ -410,6 +410,7 @@ const struct language_defn c_language_defn = {
   {"%ld",   "",    "d", ""},   /* Decimal format info */
   {"0x%lx", "0x",  "x", ""},   /* Hex format info */
   c_op_print_tab,              /* expression operators for printing */
+  1,                           /* c-style arrays */
   LANG_MAGIC
 };
 
@@ -432,6 +433,7 @@ const struct language_defn cplus_language_defn = {
   {"%ld",    "",    "d",  ""}, /* Decimal format info */
   {"0x%lx",  "0x",  "x",  ""}, /* Hex format info */
   c_op_print_tab,              /* expression operators for printing */
+  1,                           /* c-style arrays */
   LANG_MAGIC
 };
 
@@ -454,6 +456,7 @@ const struct language_defn asm_language_defn = {
   {"%ld",   "",    "d", ""},   /* Decimal format info */
   {"0x%lx", "0x",  "x", ""},   /* Hex format info */
   c_op_print_tab,              /* expression operators for printing */
+  1,                           /* c-style arrays */
   LANG_MAGIC
 };
 
index bfd7728..a3d2d14 100644 (file)
@@ -323,6 +323,7 @@ const struct language_defn chill_language_defn = {
   {"D'%ld",  "D'",  "d",  ""}, /* Decimal format info */
   {"H'%lx",  "H'",  "x",  ""}, /* Hex format info */
   chill_op_print_tab,          /* expression operators for printing */
+  0,                           /* arrays are first-class (not c-style) */
   LANG_MAGIC
 };
 
index 7a1f714..0232a54 100644 (file)
@@ -431,6 +431,7 @@ const struct language_defn f_language_defn = {
   {"%d",   "",    "d", ""},    /* Decimal format info */
   {"0x%x", "0x",  "x", ""},    /* Hex format info */
   f_op_print_tab,              /* expression operators for printing */
+  0,                           /* arrays are first-class (not c-style) */
   LANG_MAGIC
   };
 
index f27512c..d8cbd56 100644 (file)
@@ -1200,6 +1200,7 @@ const struct language_defn unknown_language_defn = {
   {"%ld",    "",    "d",  ""}, /* Decimal format info */
   {"0x%lx",  "0x",  "x",  ""}, /* Hex format info */
   unk_op_print_tab,            /* expression operators for printing */
+  1,                           /* c-style arrays */
   LANG_MAGIC
 };
 
@@ -1223,6 +1224,7 @@ const struct language_defn auto_language_defn = {
   {"%ld",    "",    "d",  ""}, /* Decimal format info */
   {"0x%lx",  "0x",  "x",  ""}, /* Hex format info */
   unk_op_print_tab,            /* expression operators for printing */
+  1,                           /* c-style arrays */
   LANG_MAGIC
 };
 
@@ -1245,6 +1247,7 @@ const struct language_defn local_language_defn = {
   {"%ld",    "",    "d",  ""}, /* Decimal format info */
   {"0x%lx",  "0x",  "x",  ""}, /* Hex format info */
   unk_op_print_tab,            /* expression operators for printing */
+  1,                           /* c-style arrays */
   LANG_MAGIC
 };
 \f
index 7ab04db..6122bbf 100644 (file)
@@ -172,6 +172,11 @@ struct language_defn
 
   const struct op_print *la_op_print_tab;
 
+  /* Zero if the language has first-class arrays.  True if there are no
+     array values, and array objects decay to pointers, as in C. */
+
+  char c_style_arrays;
+
   /* Add fields above this point, so the magic number is always last. */
   /* Magic number for compat checking */
 
index 8d2f2a5..c7b7530 100644 (file)
@@ -412,6 +412,7 @@ const struct language_defn m2_language_defn = {
   {"%ld",    "",   "d",  ""},  /* Decimal format info */
   {"0%lXH",  "0",  "X",  "H"}, /* Hex format info */
   m2_op_print_tab,             /* expression operators for printing */
+  0,                           /* arrays are first-class (not c-style) */
   LANG_MAGIC
 };
 
index aa4a4f2..788222e 100644 (file)
@@ -28,6 +28,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "command.h"
 #include "gdbcmd.h"
 #include "target.h"
+#include "language.h"
 #include "demangle.h"
 
 /* Local function prototypes. */