No error for Linker Section Overlapping

Deepen Mantri Deepen.Mantri@kpitcummins.com
Tue Apr 24 10:59:00 GMT 2007


On Sat, 21st April 2007 at 10:31:18 +0930 Alan Modra wrote:

>> 1. Error prints the LMA addresses instead of VMA addresses
>>    when VMAs of the sections overlap. This might create 
>>    confusion.	
>  VMA == LMA except when using overlays or when assigning 
>  LMA in the linker script.  I don't think the error message
>  is worth changing.

Being precise in printing the source of error would help the
user in understanding and fixing the problem quickly, isn't it?

On Tue, 24th April 2007 at 01:01:15 +0930 Alan Modra wrote:

> Changing the lma to vma relationship will put .bss into a 
> different load segment. Usually you wouldn't want that to 
> happen, because it needlessly creates a new segment.

Considering the linker script in my preceeding reply, a new 
segment for .bss section is expected and is rightly created 
because of the following condition present in the 
"_bfd_elf_map_sections_to_segments" function.

//////////////////////////////////////////////////////////////
else if (last_hdr->lma - last_hdr->vma != hdr->lma - hdr->vma)
{
     /* If this section has a different relation between the
        virtual address and the load address, then we need a 
        new segment.  */
     new_segment = TRUE;
}
/////////////////////////////////////////////////////////////
The .bss section was assigned a new segment till binutils 2.16.92.
From binutils 2.17 onwards .bss section is not going in a new 
segment because it's LMA is following the .data section and thus
resulting in failure of the above condition.


> Please just add "AT(ADDR(.bss))" to your .bss output 
> section description.

Adding "AT(ADDR(.bss))" seems to be a workaround. I guess, it 
will be always better to fix the problem inside the linker 
itself. Please comment.

Only concern is that the additions done should not result in
unexpected failures in other parts of linker code which, as far as 
my understanding goes, is not happening.
If you foresee any fundamental change happening in the 
linker code due to my patch, could you please share it with me?


Regards,		
Deepen Mantri		

KPIT Cummins InfoSystems Ltd.		
Pune, India		

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
Free download of GNU based tool-chains for Renesas' SH, H8, R8C,
M16C and M32C Series. The following site also offers free 
technical support to its users. Visit http://www.kpitgnutools.com
for details. Latest versions of KPIT GNU tools were released on 
February 6,07	
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	



More information about the Binutils mailing list