Re: [PATCH/RFA] PR gdb/648 (eval.c approval reqd)

Jim Blandy
2004-08-25T05:53:21Z

So, I'm just trying to get my head around what's going on here. Would
you say the following comment change would be correct?

*** gdbtypes.h.~1.58.~ 2004-08-09 17:42:14.000000000 -0500
--- gdbtypes.h 2004-08-25 00:51:03.000000000 -0500
*************** enum type_code
*** 82,88 ****
{
TYPE_CODE_UNDEF, /* Not used; catches errors */
TYPE_CODE_PTR, /* Pointer type */
! TYPE_CODE_ARRAY, /* Array type with lower & upper bounds. */
TYPE_CODE_STRUCT, /* C struct or Pascal record */
TYPE_CODE_UNION, /* C union or Pascal variant part */
TYPE_CODE_ENUM, /* Enumeration type */
--- 82,108 ----
{
TYPE_CODE_UNDEF, /* Not used; catches errors */
TYPE_CODE_PTR, /* Pointer type */
!
! /* Array type with lower & upper bounds.
!
! Regardless of the language, GDB represents multidimensional
! array types the way C does: as arrays of arrays. So an
! instance of a GDB array type T can always be seen as a series
! of instances of TYPE_TARGET_TYPE (T) laid out sequentially in
! memory.
!
! Row-major languages like C lay out multi-dimensional arrays so
! that incrementing the rightmost index in a subscripting
! expression results in the smallest change in the address of the
! element referred to. Column-major languages like Fortran lay
! them out so that incrementing the leftmost index results in the
! smallest change.
!
! This means that, in column-major languages, working our way
! from type to target type corresponds to working through indices
! from right to left, not left to right. */
! TYPE_CODE_ARRAY,
!
TYPE_CODE_STRUCT, /* C struct or Pascal record */
TYPE_CODE_UNION, /* C union or Pascal variant part */
TYPE_CODE_ENUM, /* Enumeration type */