This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[arm] Out of range assembly offsets


Under some circumstances an Arm EABI based compiler can generate out-of-range 
loads from constant pools. This occurs when a constant pool requires 
doubleword padding. The doubleword loads are adjusted to accommodate this 
padding, but other items in the same pool are not.

I initially tried fixing this "properly" by adjusting offsets in a pool when 
the first doubleword item was added. This ended up getting messy, so I 
instead went for the sledgehammer solution of shortening all offsets by 4 
bytes if a function contains any doublework constant pool objects.

Tested with cross to arm-none-eabi.
Applied to mainline.

Ok for 4.1?

Technically this isn't a regression as eabi targets have always been broken. 
However 4.1 is the first release with working linux-gnueabi support, which is 
where I'd expect most users to hit this bug.

Paul


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]