Beim gcc lässt sich das mit dem Attribut 'section' ändern. Eine portable
Möglichkeit gibt es nicht (bei anderen Compilern ist das z.B. ein
#pragma). Daher hab ich mal ein F'up nach de.comp.gnu gesetzt.
Stefan
Versuch grad mal ein sehr, sehr einfaches linker_script
zusammenzustellen. Dabei moechte ich eigentlich nur die
Addressen fuer ein paar Sektions angeben, wie auch immer wenn
ich folgendes Script verwende:
SECTIONS
{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
Und dann in die Bash eingebe: gcc -Wl,-T linker_script.ld -o test example.c
Erhalte ich die folgende Fehlermeldung:
/usr/bin/ld: warning: ld-linux.so.2, needed by /lib/libc.so.6, not found
(try using -rpath or -rpath-link)
/usr/lib/libc_nonshared.a(elf-init.oS)(.text+0x1c): In function
`__libc_csu_init':
: undefined reference to `__init_array_end'
/usr/lib/libc_nonshared.a(elf-init.oS)(.text+0x22): In function
`__libc_csu_init':
: undefined reference to `__init_array_start'
/usr/lib/libc_nonshared.a(elf-init.oS)(.text+0x68): In function
....
/usr/bin/ld: test: hidden symbol `__fini_array_end' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
Ich denke, mein Linkerscript ist zu einfach :D. Weiss hier vielleicht
jemand wo ich eine "Scriptvorlage" finden kann die ich dann entsprechend
anpassen kann (x86, fuer Redhat Linux)
Bei mir (Debian) gibt's sowas unter /usr/lib/ldscripts.
Stefan