[OSy] .entry sekce a volani SYSCALL
Martin Dobias
wonder.sk at gmail.com
Fri Dec 29 14:56:58 CET 2006
On 12/29/06, Martin Decky <decky at dsrg.mff.cuni.cz> wrote:
> Hezky den,
>
> > Jakym zpusobem definovat sekci .entry? A kde ji provadet? Je mi jasne,
> > ze funkce __entry bude prvni funkci, ktera se zavola po prepnuti do user
> > modu, ale jakym zpusobem definovat, ze zrovna tato funkce se ma zavolat?
> > My to zatim trochu obchazime tim, ze vime presne adresu kde je librt.a
> > umisteno a tam se prepiname, ale pres vyuziti sekce .entry by to bylo
> > asi cistsi.
>
> Smysl sekce .entry ve spojitosti s binary formatem uzivatelskeho procesu
> je takovy, aby se kod funkce __entry() objevil ve vystupu linkeru
> zarucene na pozici 0. Toho se dosahne tak, ze linker pouzije sekci
> .entry jako prvni na vystupu a tato sekce obsahuje jako prvni symbol
> __entry.
Zdravim,
zmyslu sekcie .entry rozumiem, nedari sa mi ale dostat funkciu
__entry() do tejto sekcie - napriek tomu ze v linker scripte mam
nastavene ENTRY(__entry). Podarilo sa mi to len rucne tym, ze som
funkciu __entry() dal do samostatneho suboru, ktoreho kod bude v
binarke ako prvy, t.j.:
entry.o(.text)
*(.text)
*(data) atd.
Ale ako dostat tuto funkciu korektne do sekcie .entry?
A mam este jeden dotaz k linkovaniu - Makefile pre testy pouziva na
linkovanie najprv LD na vytvorenie 'raw' suboru, ktory potom pomocou
nastroju objcopy prevedie na cistu binarku. Myslim ze ten druhy krok
sa da obist pouzitim prikazu OUTPUT_FORMAT(binary) priamo v linker
scripte. Alebo je nejaky dovod preco je vytvorenie binarky rozdelene
na dva kroky?
Martin Dobias
More information about the NSWI004
mailing list