VMA and LMA calculation when section alignment is non null

Anitha Boyapati anitha.boyapati@gmail.com
Wed Apr 20 19:40:00 GMT 2011


On 20 April 2011 23:57, Anitha Boyapati <anitha.boyapati@gmail.com> wrote:
>
>
> Hi,
>
> I would like know more about LMA/VMA calculations.  Here is a small linker script (trimmed to relevant portions)
>
>  MEMORY
> {
>     FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
> }
> SECTIONS
> {
>   .mysec1_os          :
>   {
>     *(.mysec1)
>   } >FLASH AT>FLASH
>   .text_os           :
>   {
>     *(.text .text.* )
>   } > FLASH AT>FLASH
> }
>
> It turns out that for some small application which uses .balign 8, the VMA and LMA of .text_os differs. I was debugging this when I hit the function lang_size_sections_1() from ldlang.c. As far as I understand VMA is caculated using os->bfd_section->alignment_power which is then set using bfd_set_section_vma(). This macro sets both lma and vma to some valid value.
>
> Now for lma processing, os->section_alignment is being used. What is the difference between os->bfd_section->alignment_power and os->section_alignment ? The values are different (It is 3 for former and -1 for latter). Please help.
> ...
>  if (os->section_alignment != -1)
>    lma = align_power (lma, os->section_alignment);
> ...

Hi again.

I am glad I found a relevant thread describing the exact problem
I am facing.

http://sourceware.org/ml/binutils/2010-12/msg00477.html

The given patch solves my issue too. (Sorry I havent referred to the
binutils version I am using. It is 2.20.1). Now my next question :
Since the patch was submitted after binutils 2.21 release, I am assuming that
no release of binutils has this patch included.

I would still appreciate anyone letting me know the difference between
os->bfd_section->alignment_power and os->section_alignment

Thanks
Anitha



More information about the Binutils mailing list