forked from Imagelibrary/binutils-gdb
* c-exp.y (exp:STRING): Convert C strings into array-of-char
constants with an explicit null byte terminator. OP_STRING is now used for real string types. * c-lang.c (builtin_type_*): Move declarations to lang.c since they are used by all languages. * c-lang.c (_initialize_c_language): Move initializations of builtin_type_* to lang.c. * c-typeprint.c (c_type_print_varspec_prefix, c_type_print_varspec_suffix): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * c-valprint.c (c_val_print): Change the way character arrays are printed as strings to be consistent with the way strings are printed when pointer-to-char types are dereferenced. Remove test of print_max before calling val_print_string, which now does it's own test. * eval.c (evaluate_subexp): Add case for OP_ARRAY. * expprint.c (print_subexp, dump_expression): Add case for OP_ARRAY. * expression.h (enum exp_opcode): Add OP_ARRAY and document. * gdbtypes.c (builtin_type_*): Add declarations moved from c-lang.c. * gdbtypes.c (create_string_type): New function to create real string types. * gdbtypes.c (recursive_dump_type): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * gdbtypes.c (_initialize_gdbtypes): Add initializations of builtin_type_* types moved from c-lang.c. * gdbtypes.h (enum type_code): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * gdbtypes.h (builtin_type_string): Add extern declaration. * gdbtypes.h (create_string_type): Add prototype. * m2-lang.c (m2_create_fundamental_type): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * m88k-tdep.c (pushed_size): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * mipsread.c (_initialize_mipsread): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * parse.c (length_of_subexp, prefixify_subexp): Add case for OP_ARRAY. * printcmd.c (print_formatted): Recognize TYPE_CODE_STRING. * typeprint.c (print_type_scalar): TYPE_CODE_PASCAL_ARRAY renamed to TYPE_CODE_STRING. * valops.c (allocate_space_in_inferior): New function and prototype, using code ripped out of value_string. * valops.c (value_string): Rewritten to use new function allocate_space_in_inferior, but temporarily disabled until some other support is in place. * valops.c (value_array): New function to create array constants. * valprint.c (val_print_string): Add comment to document use, complete rewrite to fix several small buglets. * value.h (value_array): Add prototype. * value.h (val_print_string): Change prototype to match rewrite. **** start-sanitize-chill **** * ch-valprint.c (chill_val_print): Add case for TYPE_CODE_STRING. * ch-exp.y (match_character_literal): Disable recognition of control sequence form of character literals and document why. **** end-sanitize-chill ****
This commit is contained in:
@@ -81,8 +81,7 @@ print_subexp (exp, pos, stream, prec)
|
||||
(enum precedence) ((int) myprec + assoc));
|
||||
fputs_filtered (" :: ", stream);
|
||||
nargs = longest_to_int (exp->elts[pc + 2].longconst);
|
||||
(*pos) += 2 + (nargs + sizeof (union exp_element)) / sizeof (union exp_element);
|
||||
|
||||
(*pos) += 2 + BYTES_TO_EXP_ELEM (nargs + 1);
|
||||
fputs_filtered (&exp->elts[pc + 3].string, stream);
|
||||
return;
|
||||
|
||||
@@ -146,14 +145,21 @@ print_subexp (exp, pos, stream, prec)
|
||||
|
||||
case OP_STRING:
|
||||
nargs = longest_to_int (exp -> elts[pc + 1].longconst);
|
||||
(*pos) += 3 + (nargs + sizeof (union exp_element))
|
||||
/ sizeof (union exp_element);
|
||||
(*pos) += 3 + BYTES_TO_EXP_ELEM (nargs + 1);
|
||||
/* LA_PRINT_STRING will print using the current repeat count threshold.
|
||||
If necessary, we can temporarily set it to zero, or pass it as an
|
||||
additional parameter to LA_PRINT_STRING. -fnf */
|
||||
LA_PRINT_STRING (stream, &exp->elts[pc + 2].string, nargs, 0);
|
||||
return;
|
||||
|
||||
case OP_BITSTRING:
|
||||
error ("support for OP_BITSTRING unimplemented");
|
||||
break;
|
||||
|
||||
case OP_ARRAY:
|
||||
error ("support for OP_ARRAY unimplemented");
|
||||
break;
|
||||
|
||||
case TERNOP_COND:
|
||||
if ((int) prec > (int) PREC_COMMA)
|
||||
fputs_filtered ("(", stream);
|
||||
@@ -172,7 +178,7 @@ print_subexp (exp, pos, stream, prec)
|
||||
|
||||
case STRUCTOP_STRUCT:
|
||||
tem = longest_to_int (exp->elts[pc + 1].longconst);
|
||||
(*pos) += 3 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
|
||||
(*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
|
||||
print_subexp (exp, pos, stream, PREC_SUFFIX);
|
||||
fputs_filtered (".", stream);
|
||||
fputs_filtered (&exp->elts[pc + 2].string, stream);
|
||||
@@ -181,7 +187,7 @@ print_subexp (exp, pos, stream, prec)
|
||||
/* Will not occur for Modula-2 */
|
||||
case STRUCTOP_PTR:
|
||||
tem = longest_to_int (exp->elts[pc + 1].longconst);
|
||||
(*pos) += 3 + (tem + sizeof (union exp_element)) / sizeof (union exp_element);
|
||||
(*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
|
||||
print_subexp (exp, pos, stream, PREC_SUFFIX);
|
||||
fputs_filtered ("->", stream);
|
||||
fputs_filtered (&exp->elts[pc + 2].string, stream);
|
||||
@@ -487,6 +493,8 @@ dump_expression (exp, stream, note)
|
||||
case OP_INTERNALVAR: opcode_name = "OP_INTERNALVAR"; break;
|
||||
case OP_FUNCALL: opcode_name = "OP_FUNCALL"; break;
|
||||
case OP_STRING: opcode_name = "OP_STRING"; break;
|
||||
case OP_BITSTRING: opcode_name = "OP_BITSTRING"; break;
|
||||
case OP_ARRAY: opcode_name = "OP_ARRAY"; break;
|
||||
case UNOP_CAST: opcode_name = "UNOP_CAST"; break;
|
||||
case UNOP_MEMVAL: opcode_name = "UNOP_MEMVAL"; break;
|
||||
case UNOP_NEG: opcode_name = "UNOP_NEG"; break;
|
||||
|
||||
Reference in New Issue
Block a user