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, suggestions? (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 val_print_array_elements * 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 strings * 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 set_value_data_address * 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 val_print_array_elements * 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