I am building a boot loader (barebox) with gcc 10.2.0 for a NXP LS1021A for which I intend to use SPD. The SPD structure for DDR3 (struct ddr3_spd_eeprom )can be found here: https://git.pengutronix.de/cgit/barebox/tree/include/ddr_spd.h The problem I have is that the field after the union are not packed: .... } registered; unsigned char uc[57]; /* 60-116 Module-Specific Section */ ==> uc[56] is at the right place offset 116 } mod_section; /* Unique Module ID: Bytes 117-125 */ unsigned char mmid_lsb; /* 117 Module MfgID Code LSB - JEP-106 */ ===> mmid_lsb end up at offset 120 instead of offset 117 I tried the __packed attribute without effect This is the debug output showing the offset from the start of SPD structure: uc[56]@ = 0x1000e2cc, 116 mmid_lsb@ = 0x1000e2d0, 120 ==> should be 117. Is there a bug in 10.2.0 that I have not found or a parameter I have not used to build the boot loader that could fix this problem. Cheers, R