Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

GNU ARM tools - linker

$
0
0

Hello,

I am using the gnu tools for the A15 (using the TDA2xx SOC).

1. I have had a general (maybe old) gnu linker manual in which there is a note that says:

" ... Note that if the section has not had a VMA assigned to it then the linker will use the lma region as the VMA region as well. ..."


Lately i have looked at the ld pdf that comes with the arm gnu package (in the gcc-arm-none-eabi-4_9-2015q3 package) and i could NOT find this note anywhere in this document.

Does this mean that the above note no longer applies and i must specify both LMA and VMA regions if i want to be certain of allocation (i dont want to leave LMA not defined as it may calculate it using a VMA- LMA offset of a previous section which may not be desired so i want to control it)? - does the same answer also applies to the TI linker?

2.

Can you explain what should be the value and behavior of the section location counter (both for GNU and for TI linkers) if read / set  between output section blocks (outside of an output section block) where each of the sections may have different memory regions? 

according to the doc assigning value to the . operator defines the start address of the following output section (if not specifically set for the section) - how does this works when sections are assigned to different regions?

"... the linker assumes that an assignment to . is setting the start address of a following output section ..."

I will appreciate if you can explain and elaborate more on this.

3.

When setting input sections to output sections, if i am using the syntax *(.text) i see it only applies the all .text output sections and any input section that is .text.xxxx is not considered and a subgroup and a dedicated output section is created for it - as a result the assignment of a memory region the the .text.xxxx is determined by the linker according to internal logic which may not be what was intended.

on an A15 linker script example , i  have seen that for .text there is only reference to *(.text) but for the .data, for example, there is a reference to both .data (as this is the name of the output section so input esections with the same names will be assigned to it) and to all .data.xxxx ( *(.data.*) ):

.text : { *(.text) } > MEM1
.data : { *(.data.*) }  >MEM2

is there a reason why the .text output section do not include also *(.text.*)? can you explain ? am i wrong in my understanding above?

Thanks

Guy


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>