VMA section overlap warnings for overlays
David Stubbs
stubbs@IceraSemi.com
Wed May 12 13:19:00 GMT 2010
> On Fri, May 07, 2010 at 05:14:06PM +0100, David Stubbs wrote:
> > Does the following patch look like the correct fix?
>
> No, it doesn't look correct. I think your problem is more likely
> due
> to a ldlang.c bug in setting lma. Do you have a testcase handy?
Thanks for the response. I didn't realize / think that you needed to
allocate filespace for bss sections when they're followed by non BSS
sections in the same segment.
I wasn't able to reproduce the problem, but that turned out to be
because I'd somehow lost the bit of code that calls write_zeros in our
copy of the source.
I have however found another potential problem with strip. Here's the
test:
---
brsbs01 0>cat start.s
.section .text,"ax",@progbits
.globl _start
.type _start, @function
_start:
nop
.section .dmem.bss,"aw",@nobits
.zero 0x10
brsbs01 0>cat over.S
.section SEC_NAME,"ax",@progbits
.zero 0x10
.section SEC_NAME.bss,"aw",@nobits
.zero 0x10
brsbs01 0>cat ldscript.x
OUTPUT_FORMAT("elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
PHDRS
{
mem PT_LOAD;
imem PT_LOAD;
}
SECTIONS
{
.text 0x1000:
{
*(.text)
} :mem
.dmem.bss 0x2000
: AT (LOADADDR (.text) + SIZEOF (.text))
{
*(.dmem.bss)
} :imem
.overlay1 ADDR (.dmem.bss) + SIZEOF (.dmem.bss)
: AT (LOADADDR (.dmem.bss) + SIZEOF (.dmem.bss))
{
*(.overlay1)
} :imem
.overlay2 ADDR (.dmem.bss) + SIZEOF (.dmem.bss)
: AT (LOADADDR (.overlay1) + SIZEOF (.overlay1))
{
*(.overlay2)
} :imem
.overlay1.bss ADDR (.overlay1) + SIZEOF (.overlay1)
: AT (LOADADDR (.overlay2) + SIZEOF (.overlay2))
{
*(.overlay1.bss)
} :imem
.overlay2.bss ADDR (.overlay2) + SIZEOF (.overlay2)
: AT (LOADADDR (.overlay1.bss) + SIZEOF (.overlay1.bss))
{
*(.overlay1.bss)
} :imem
}
brsbs01 0>gcc over.S -DSEC_NAME=.overlay1 -c -o over1.o
brsbs01 0>gcc over.S -DSEC_NAME=.overlay2 -c -o over2.o
brsbs01 0>gcc start.s -c -o start.o
brsbs01 0>ld over1.o over2.o start.o -T ldscript.x -o test.exe
brsbs01 1>strip test.exe
BFD: stHVOxcK: section .overlay1.bss lma 0x1021 overlaps previous
sections
BFD: stHVOxcK: section .overlay2.bss lma 0x1021 overlaps previous
sections
---
The overlap warning is being emitted because 'adjust' is being
calculated as a negative number. I don't yet know why.
Thanks again,
Dave.
More information about the Binutils
mailing list