This is the mail archive of the mailing list for the Archer project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch for pascal-dynamic arrays

On Sat, 2009-11-07 at 22:48 +0100, Joost van der Sluis wrote:
> On Fri, 2009-10-30 at 10:47 +0100, Jan Kratochvil wrote:

Some time has passed, and to my suprise one of the problems got solved
in the FSF-gdb head. (in cp-valprint.c)

I have a new patch now that doesn't cause any regressions on my system,
but fixes problems with pascal-dynamic arrays.

The patch is attached, the changelog below. Any comments, improvements,

(patch is against the archer-jankratochvil-vla branch)

2010-04-12 Joost van der Sluis <>

* tekhex.c (move_section_contents): implemented usage of offset
parameter, which was always 0 but not anymore due to changes is

* gdbtypes.c, gdbtypes.h (check_typedef, check_typedef_target) Added 
check_typedef_target which resolves the target type without doing a full
check_typedef, so that the result still can be dynamic

* p-valprint.c (pascal_val_print) Do not Handle arrays of integers as
* p-valprint.c (pascal_val_print) When printing array-elements use the
original passed type, and not one which is handled by check_typedef
* p-valprint.c (pascal_val_print) Pass the embedded offset as a separate
parameter to val_print_array_elements

* arrays.exp New tests for arrays in fpc
* pascal.exp Added variables fpcversion_major, fpcversion_minor and
fpcversion_release with the version of the used compiler

* valprint.c, valprint.h (val_print_array_elements) Added the
embedded_offset parameter which is needed to calculate the the position
of an element in the exterior
* valprint.c (get_array_bounds) Use value_lower_bound and
value_higher_bound to resolve array bounds
* valprint.c (val_print_array_elements) Always calculate the amount of
elements in an array by substracting the upper and lower bound
* valprint.c (val_print_array_elements) For each element in the array,
create a new struct value using value_data_address and
check_typedef_target and print it using common_val_print, so that all
elements are properly evaluated

* value.c, value.h (struct value) Added value_data_address to struct
value. Added the functions value_data_address and
* value.c, value.h (set_value_address) Use object_address_get_data to
set value_data_addr
* value.c, value.h (value_lower_bound, value_upper_bound) Added
these functions to get the lower and upper bound of an value struct
containing an array

* ada-valprint.c (ada_val_print_array): Pass an embedded offset of 0 to

* c-valprint.c (c_val_print): Pass the embedded offset as a separate
parameter to val_print_array_elements

* m2-valprint.c (m2_print_array_contents, m2_val_print): Pass the
embedded offset as a separate parameter to val_print_array_elements

Attachment: dyn_array_patch.tgz
Description: application/compressed-tar

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]