https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104692

            Bug ID: 104692
           Summary: Constant data at fixed address
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: henrique.coser at tex dot com.br
  Target Milestone: ---

Hello,

I need a help. I'm trying to solve a problem for weeks.
I have a embeded software that is a boot loader. It puts the boot load version
at a specific address.
My memmory starts at 0x400000 with 0x1400 size. My constant version string
value must be placed @0x401000 with 8bytes length.
If I place this const value into a section like this:

 const unsigned char Version[8] __attribute__ ((section (".bootversion")))  =
"V1.0.1a";

I got this error:

section .bootversion LMA [00401000,00401007] overlaps section .text LMA
[00400000,00401013]collect2.exe(0,0): error: ld returned 1 exit status

I have already tried to split flash memmory using linker script but it does not
worked.
I wish to find something like "automatic" split.

For example, this code was compiled using ARM Keil. With ARM Keil I have the
attribute that makes all the magic :
 const unsigned char Version[8] __attribute__((at(0x0401000))) = "V1.0.1a";

I dont know if is possible to have something as pratical as ARM Keil attribute
in GCC.

I really need make this thing work.
If this is not the best channel to ask, please, could you recommend me one?

Thank you very much!

Reply via email to