Question

Hi I am trying to define a custom section in my linker script in a following way:

  .version_section(__custom_data__) :
  {
        KEEP (*version_info.o (.rodata* .data* .sdata*))
  }

I am compiling a C file that contains a structure and I want to that structure be stored in this version_section all time.

version_info ver_info __attribute__ ((section(".version_section"))) = {7, 10, 2013, 17, 17, "some_type", "some_sw_version", "some_version"} ;

Now, till this stage everything works fine. But the so generated section has flags "AW" however I need flags to be "A".

So I am using an assembler file that defined this section to have "A" flag like this:

.section .version_section,"a", @progbits
.align 8
.globl __custom_data__
.type  __custom_data__, @function

__custom_data__:
    .word 0
    .size __custom_data__, .-__custom_data__
    .space (0x1024-0x4), 0

But I still see the the default flags to the version_section, ie. AW in readelf

[11] .version_section  PROGBITS        00011088 004088 001044 00  WA  0   0  8

What am I doing wrong here?

Was it helpful?

Solution

It appears that "W" meant writable in readelf output, as I suspected. Adding the const qualifier to the definition of ver_info moved it to the desired segment in memory.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top