This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Section X overlaps section Y problem.
- From: Sergei Organov <osv at topconrd dot ru>
- To: binutils at sources dot redhat dot com
- Date: 29 Jun 2005 21:59:42 +0400
- Subject: Section X overlaps section Y problem.
Hello,
On embedded target, to copy at startup some data and/or code from ROM to
RAM at startup, I've been using the following technique that worked for
me for years. The last version of binutils where I know it works is
version 2.10.
The ld from binutils 2.16.1 (got from binutils-2_16-branch), however,
issues error message:
ld: section .vect_image [00822890 -> 0082479f] overlaps section .vect [00822890 -> 0082479f]
My linker command file contains the following:
[...]
.vect : AT(__vect_image) {
*(.vect)
. = ALIGN(16);
} > VECT
[...]
.vect_image : {
__vect_image = .;
. += SIZEOF(.vect);
} > ROM
[...]
Please notice that LMA of .vect matches LMA of .vect_image.
Old ld version 2.10 creates the sections as follows:
Idx Name Size VMA LMA File off Algn Flags
6 .vect 00001f10 00000000 00822890 00000114 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE
13 .vect_image 00001f10 00822890 00822890 0018c2b4 2**0 CONTENTS
that apparently leads to ignoring of .vect_image for the purposes of
overlap checking due to absence of ALLOC flag.
New ld 2.16.1, on the other hand, creates the section .vect_image in a
different manner:
Idx Name Size VMA LMA File off Algn Flags
13 .vect_image 00001f10 00822890 00822890 000149d8 2**0 ALLOC
i.e., it sets ALLOC flag but makes the section to be of type NOBITS that
results in considering this section for overlap checking and leads to
the error message above as LMA addresses do match.
Now, what do I do about it? Is it ld 2.16.1 flaw or should I use some
other technique in my command file to achieve the goal?
--
Sergei.