Add initial type alignment support
authorTom Tromey <tom@tromey.com>
Fri, 20 Apr 2018 17:50:09 +0000 (11:50 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 30 Apr 2018 17:25:30 +0000 (11:25 -0600)
commit2b4424c35b9ebabaab8588b2ba6c38935a48efec
tree3b1ea57f6b2f1b7d703c4c6532db28b10c74e9d3
parentfe944acf8f858cfe6bcfd00670a88847a464717c
Add initial type alignment support

This adds some basic type alignment support to gdb.  It changes struct
type to store the alignment, and updates dwarf2read.c to handle
DW_AT_alignment.  It also adds a new gdbarch method and updates
i386-tdep.c.

None of this new functionality is used anywhere yet, so tests will
wait until the next patch.

2018-04-30  Tom Tromey  <tom@tromey.com>

* i386-tdep.c (i386_type_align): New function.
(i386_gdbarch_init): Update.
* gdbarch.sh (type_align): New method.
* gdbarch.c, gdbarch.h: Rebuild.
* arch-utils.h (default_type_align): Declare.
* arch-utils.c (default_type_align): New function.
* gdbtypes.h (TYPE_ALIGN_BITS): New define.
(struct type) <align_log2>: New field.
<instance_flags>: Now a bitfield.
(TYPE_RAW_ALIGN): New macro.
(type_align, type_raw_align, set_type_align): Declare.
* gdbtypes.c (type_align, type_raw_align, set_type_align): New
functions.
* dwarf2read.c (quirk_rust_enum): Set type alignment.
(get_alignment, maybe_set_alignment): New functions.
(read_structure_type, read_enumeration_type, read_array_type)
(read_set_type, read_tag_pointer_type, read_tag_reference_type)
(read_subrange_type, read_base_type): Set type alignment.
gdb/ChangeLog
gdb/arch-utils.c
gdb/arch-utils.h
gdb/dwarf2read.c
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/i386-tdep.c