This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: ld generates invalid addresses
- From: Alan Modra <amodra at gmail dot com>
- To: Niklas Gürtler <profclonk at gmx dot de>
- Cc: binutils at sourceware dot org
- Date: Mon, 14 May 2012 13:19:22 +0930
- Subject: Re: ld generates invalid addresses
- References: <4FAFB56C.8030309@gmx.de>
On Sun, May 13, 2012 at 03:21:48PM +0200, Niklas Gürtler wrote:
> from the program memory. The problem is now, that the _sidata label
> is set incorrectly - in my case, the initialization data in the
> flash begins at addess 0x080021b0 (placed there by ld), so ld should
> set _sidata to exactly that address, but it sets it to 0x080021ac.
Why must ld do that? You have
_sidata = .;
.data :
{
. = ALIGN(4);
...
.data may be at a different address due to alignment of .data, or ld
may have inserted an orphan section between the assignment and .data.
Probably your best option is to use
_sidata = ADDR (.data);
Put this somewhere after the .data section.
--
Alan Modra
Australia Development Lab, IBM