Linker scripts

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

 



Hello board, 

i am pretty new in linker scripts so i went through the documentation.
Unfortunately it seems not that easy at it looks like in the doc:

SECTIONS {
  outputa 0x10000 :
    {
    all.o
    foo.o (.input1)
    }
  outputb :
    {
    foo.o (.input2)
    foo1.o (.input1)
    }
  outputc :
    {
    *(.input1)
    *(.input2)
    }
}

This is the description of putting files and parts of files into a specific
section. If I do so, i get a "multiple 
definition of" error from the linker for my function which is in the uart.o

  mySection 0x07800000 : AT (0x07800000)
  {
    uart.o
  *(mySectionFunctions)

  }
  .text 0xFFFF0100 : AT (0xFFFF0100)
  {
    *(.text)
    *(.text.*)
    *(P)
    etext = .;
  }


Another question is about archive files. Can i map this at once in a section
or do I have to get the .o files and map all of them?

I thought gcc is using .text for function code and .rodata for read only
const data. But there is also data which is marked as C in the map file.
Bizarrely if i map a function via an attribute into a section, the C data
for this function (I guess this are jumpTables for example of switch
statements) stay in the C section. So I have to map this again manually,
like this?

  mySection 0x07800000 : AT (0x07800000)
  {
    uart.o
    uart.o (C)
  *(mySectionFunctions)

  }
.rodata :
  {
    *(.rodata)
    *(.rodata.*)
    *(C_1)
    *(C_2)
    *(C)
    _erodata = .;
  }

Thanks a lot for your help, as I cannot find a solutions in the internet for
this.

Reinhard



--
View this message in context: http://gcc.1065356.n5.nabble.com/Linker-scripts-tp1042863.html
Sent from the gcc - Help mailing list archive at Nabble.com.




[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