hallo,
per default packt der gcc alles fein säuberlich in die sections .text,
.data und .bss . das linker-script kommt beim abschliessendem linken zum
tragen und sammelt diese sections quasi ein.
mal ein beispiel suchen geh ..
1 | /* Internal text space or external memory */
|
2 | .c_appl_text : /* place everything in this section */
|
3 | {
|
4 | *(.vectors)
|
5 | __ctors_start = . ;
|
6 | *(.ctors)
|
7 | __ctors_end = . ;
|
8 | __dtors_start = . ;
|
9 | *(.dtors)
|
10 | __dtors_end = . ;
|
11 | KEEP(SORT(*)(.ctors))
|
12 | KEEP(SORT(*)(.dtors))
|
13 | [..]
|
14 | *(.text)
|
15 | . = ALIGN(2);
|
16 | *(.text.*)
|
17 | . = ALIGN(2);
|
18 | [..]
|
19 | *(.fini0) /* Infinite loop after program termination. */
|
20 | KEEP (*(.fini0))
|
21 | _etext = . ;
|
22 | } > text
|
diese section sammelt alle .text-sections aus den object-files auf (und
noch vieles mehr) und platziert sie in einer eigenen section
(.c_appl_text ). und so landet es dann im .elf-file. nachzuprüfen mit
readelf.
deine defines kannst du da natürlich nicht verwenden, dass geht nur über
den schalter beim gcc-aufruf (besser: linker-aufruf).
sonst lies dir doch einmal die anleitung zum "ld" durch, die ist meines
erachtens sehr aussagekräftig. oder bei fragen einfach fragen. oder du
zeigst einmal dein linker-script, und die gemeinde wirft einmal einen
blick drauf.
bye kosmo