__attribute__((section(“name”))) usage?

后端 未结 2 540
生来不讨喜
生来不讨喜 2021-02-09 08:35

I have ran through code that use _ attribute _((section(\"name\")). I understand that for gcc compiler this allows you to tell the linker to put the object cre

2条回答
  •  野趣味
    野趣味 (楼主)
    2021-02-09 09:08

    There are many possible uses. [Edit to add note: this is just a sample of uses I've seen myself or considered, not a complete list.]

    The Linux kernel, for instance, marks some code and data sections as used only during kernel bootstrap. These can be jettisoned after the kernel is running, reclaiming the space for other uses.

    You can use this to mark code or data values that need patching on a particular processor variant, e.g., with or without a coprocessor.

    You can use it to make things live in "special" address spaces that will be burned to PROM or saved on an EEPROM, rather than in ordinary memory.

    You can use it to collect together code or data areas for purposes like initialization and cleanup, as with C++ constructors and destructors that run before the program starts and when it ends, or for using shorter addressing modes (I don't know how much that would apply on ARM as I have not written any ARM code myself).

    The actual use depends on the linker script(s).

提交回复
热议问题