Nigel Stephens wrote:
8 .rodata 00000190 000000f0 000000f0 000000f0 2**4
CONTENTS, ALLOC, LOAD, READONLY, DATA
9 .rodata.str1.4 000005fe 00000280 00000280 00000280 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
OK. I think that the final .rodata.str1.4 section is causing your
problem because the offset between its load address and the other
section is huge, causing "objcopy -O binary" to generate a huge file.
This is a new section generated by gcc 3.x and above to hold mergeable
constant data. Try changing the line in your linker script which (I'm
guessing here) probably looks like this:
*(.rodata)
to:
*(.rodata) *(.rodata.*)
I failed to spot that .rodata also has a "bad" load address. So it looks
like .rodata also isn't correctly handled in your linker script.
Nigel