This avoids truncating the 64 bit ImageBase for 64 bit executables.
PE32Header and PE32PlusHeader have the same set of fields,The PE32Header struct is only used by COFFYAML, for intermediate storage. except for BaseOfData which is missing in PE32PlusHeader.
In COFFYAMLThe struct doesn't match the on-disk struct layout as it uses native integers instead of e.g. support::ulittle32_t, BaseOfData is never explicitly stored and calculated when written back to an executableso just widen the fields to fit values for object::pe32plus_header, so we can simply use PE32PlusHeader as the intermediate storage without any further changesin addition to object::pe32_header.
This requires adding PE32PlusHeader to BinaryFormat/COFF.h, as it previously only had the PE32Header variant. (Only Object/COFF.h had pe32plus_header.)
Alternatively, COFFYAML.h could be made to use Object/COFF.h and the pe32plus_header definition from there (which stores structs with on-disk endianness instead of the native ones).
avoids truncating the 64 bit ImageBase for 64 bit executables.