Re: Relocating code on cortex m3 but keeping data constant

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dan Baldor <danbaldor@xxxxxxxxx> writes:

> I am working on a project using a arm cortex-m3 processor that needs
> relocatable code. The relocation is such that the .text and .data
> sections will have a different offset when loaded than what they were
> compiled with (the .text section can be loaded to different sections
> of internal flash while the .data section will always reside in the
> same location of sram). If I keep the .got with .text section I can
> get the global variables to have the correct addresses but my static
> local variables have the wrong address (they are offset from where
> they should be the amount that the .text segment shifted). I think the
> static locals are referenced from the start of the .GOT section which
> is why I am having problems. I am compiling all my c code with âfpic
> and linking with âfpic and âpie. Is there any way to either force the
> static locals (and maybe global variables) to absolute addresses or to
> relocate the .GOT section dynamically? I tried doing by placing the
> GOT section with the data but when I do so code does not locate the
> GOT section correctly. I thought that perhaps I should be using
> |-msingle-pic-base and -mpic-register=|/reg /but so far all attempts
> to use this did not work at all.

If the runtime address is fixed, this is normally done using a linker
script using the AT() modifier; see
http://sourceware.org/binutils/docs-2.21/ld/Output-Section-LMA.html .

If the runtime address varies, then I don't know that there is a way to
handle this.  Using -fpic/-pie implies the existence of a dynamic
linker.

Ian



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux