mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-21 10:02:26 +00:00
* parse.c (follow_types): Given (TYPE[]) (i.e. with no length),
create a 0-length array type, and set BOUND_CANNOT_BE_DETERMINED. * valops.c (value_cast): If a cast like (TYPE[])VALUE (i.e. array of unknown length) use sizeof(VALUE)/sizeof(TYPE) as the length. * c-typeprint.c (c_type_print_varspec_suffix): If array length is 0, print it, but not if upper_bound is BOUND_CANNOT_BE_DETERMINED.
This commit is contained in:
parent
07f27bb80c
commit
fda36387eb
@ -1,3 +1,12 @@
|
||||
Thu Feb 16 15:06:12 1995 Per Bothner <bothner@kalessin.cygnus.com>
|
||||
|
||||
* parse.c (follow_types): Given (TYPE[]) (i.e. with no length),
|
||||
create a 0-length array type, and set BOUND_CANNOT_BE_DETERMINED.
|
||||
* valops.c (value_cast): If a cast like (TYPE[])VALUE (i.e. array
|
||||
of unknown length) use sizeof(VALUE)/sizeof(TYPE) as the length.
|
||||
* c-typeprint.c (c_type_print_varspec_suffix): If array length
|
||||
is 0, print it, but not if upper_bound is BOUND_CANNOT_BE_DETERMINED.
|
||||
|
||||
Thu Feb 16 16:06:50 1995 Michael Meissner <meissner@tiktok.cygnus.com>
|
||||
|
||||
* dcache.c (insque, remque): Rewrite Linux support.
|
||||
|
@ -386,7 +386,8 @@ c_type_print_varspec_suffix (type, stream, show, passed_a_ptr, demangled_args)
|
||||
fprintf_filtered (stream, ")");
|
||||
|
||||
fprintf_filtered (stream, "[");
|
||||
if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
|
||||
if (TYPE_LENGTH (type) >= 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
|
||||
&& TYPE_ARRAY_UPPER_BOUND_TYPE(type) != BOUND_CANNOT_BE_DETERMINED)
|
||||
fprintf_filtered (stream, "%d",
|
||||
(TYPE_LENGTH (type)
|
||||
/ TYPE_LENGTH (TYPE_TARGET_TYPE (type))));
|
||||
|
22
gdb/parse.c
22
gdb/parse.c
@ -875,18 +875,16 @@ follow_types (follow_type)
|
||||
break;
|
||||
case tp_array:
|
||||
array_size = pop_type_int ();
|
||||
if (array_size != -1)
|
||||
{
|
||||
range_type =
|
||||
create_range_type ((struct type *) NULL,
|
||||
builtin_type_int, 0,
|
||||
array_size - 1);
|
||||
follow_type =
|
||||
create_array_type ((struct type *) NULL,
|
||||
follow_type, range_type);
|
||||
}
|
||||
else
|
||||
follow_type = lookup_pointer_type (follow_type);
|
||||
range_type =
|
||||
create_range_type ((struct type *) NULL,
|
||||
builtin_type_int, 0,
|
||||
array_size >= 0 ? array_size - 1 : 0);
|
||||
follow_type =
|
||||
create_array_type ((struct type *) NULL,
|
||||
follow_type, range_type);
|
||||
if (array_size < 0)
|
||||
TYPE_ARRAY_UPPER_BOUND_TYPE(follow_type)
|
||||
= BOUND_CANNOT_BE_DETERMINED;
|
||||
break;
|
||||
case tp_function:
|
||||
follow_type = lookup_function_type (follow_type);
|
||||
|
Loading…
x
Reference in New Issue
Block a user