avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] Align attribute in gcc requiring alignment of 2 for X


From: Georg-Johann Lay
Subject: Re: [avr-gcc-list] Align attribute in gcc requiring alignment of 2 for Xmegas with USB.
Date: Mon, 19 Nov 2012 19:04:17 +0100
User-agent: Thunderbird 2.0.0.24 (X11/20100302)

Weddington, Eric wrote:
> 
>> 
>>> Section 20.13.7 of the Xmega manual speaks about the requirement of 16 
>>> bit alignment.
>>> 
>>> http://www.atmel.com/images/doc8331.pdf
>>> 
>>> As the MAXIMUM_ALIGNMENT in avr.h is set to 1,  it throws an error when
>>> trying to compile.
>>> 
>>> I have attached a patch which sets it to 2 by default in the compiler. I
>>> have also attached a case which fails.
>>> 
>>> Would this be an acceptable change ?
>> Hi George,
>> 
>> No, this would not be an acceptable change, because it is changing the 
>> data alignment for the whole compiler, when there is only a restriction on
>> a data structure for a single peripheral for a small subset of the AVR 
>> processors.
>> 
>> This is why the data attribute "aligned" exists. Just do this for your 
>> data structure: __attribute__ ((aligned (2)))
> 
> Excuse me, perhaps I have this wrong... (It's still early for me).
> 
> Does changing MAXIMUM_ALIGNMENT allow the aligned attribute to work? If we 
> don't change MAXIMUM_ALIGNMENT, are you saying that the aligned attribute 
> fails?

See PR53448.  In general, that is no issue in < 4.7 because only xmega needs
align(2) and these versions don't support xmega.

Besides that, 4.7 had quite some clean-up of w.r.t. ELF, e.g. avr/elf.h.

Even if it works with changing MAXIMUM_ALIGNMENT, that's not the purpose of
MAXIMUM_ALIGNMENT.

Johann




reply via email to

[Prev in Thread] Current Thread [Next in Thread]