Hi!

On Thu, Aug 16, 2018 at 02:14:39PM +1000, Michael Ellerman wrote:
> Mahesh Jagannath Salgaonkar <mah...@linux.vnet.ibm.com> writes:
> > On 08/08/2018 08:12 PM, Michael Ellerman wrote:
> >>> +                 uint8_t reserved_1[6];
> >>> +                 __be64  effective_address;
> >>> +                 __be64  logical_address;
> >>> +         } ue_error;
> >>> +         struct {
> >>> +                 uint8_t soft_err_type;
> >>> +                 /* XXXXXXXX
> >>> +                  * X            1: Effective address provided.
> >>> +                  *  XXXXX       5: Reserved.
> >>> +                  *       XX     2: Type of SLB/ERAT/TLB error.
> >>> +                  */
> >>> +                 uint8_t reserved_1[6];
> >>> +                 __be64  effective_address;
> >>> +                 uint8_t reserved_2[8];
> >>> +         } soft_error;
> >>> + } u;
> >>> +};
> >>> +#pragma pack(pop)
> >> 
> >> Why not __packed ?
> >
> > Because when used __packed it added 1 byte extra padding between
> > reserved_1[6] and effective_address. That caused wrong effective address
> > to be printed on the console. Hence I switched to #pragma pack to force
> > 1 byte alignment for this structure alone.
> 
> OK, that's weird.

Yes, if that is true, then please open a GCC bugzilla report.


Segher

Reply via email to