[PATCH] default_type_align: Use type_length_units

Tom Tromey tom@tromey.com
Thu Jun 14 16:59:00 GMT 2018


>>>>> "Simon" == Simon Marchi <simon.marchi@ericsson.com> writes:

Simon> The type alignment value is returned in 8-bit-bytes instead of target
Simon> memory addressable units.  For example, on a target with 16-bit-bytes
Simon> where sizeof(int) == 1 (one addressable unit), alignof(int) currently
Simon> returns 2.  After, this patch, it returns 1.

Simon> 	* arch-utils.c (default_type_align): Use type_length_units.

This certainly is correct according to the comment in gdbtypes.h:

  /* * Return the alignment of the type in target addressable memory
     units.

However, I was curious to know what DWARF specifies, to see whether
dwarf2read was doing this as well.  But DWARF seems pretty silent on
this topic:

  A debugging information entry may have a DW_AT_alignment attribute
  whose value of class constant is a positive, non-zero, integer
  describing the alignment of the entity.

So maybe this is depending on what your compiler does?  I think I did
not really consider this issue too deeply when writing the alignment
support :(

Another possible issue is that gdbtypes.c:type_align uses TYPE_LENGTH in
one spot but I suppose it ought to use type_length_units if this patch
goes in.

Tom



More information about the Gdb-patches mailing list