[OSy] Posunuti _kernel_end dovnitr kernelu
Martin Liška
marxin.liska at gmail.com
Mon Dec 5 12:18:12 CET 2011
Dobry den,
mel jste pravdu, problem se vyskytoval v map souboru, kde se za
_kernel_end umistily sekce *text.unlikely*, coz jsem nasel, ze jsou
informace napr. pouzivane pri volbe kompilatoru: -freorder-functions. Nicmene
pridani sekce *(.text.unlikely) hned za *(.text) v kernel.lds pomohlo
vyresit problem.
S pozdravem,
Martin
2011/12/5 Martin Decky <decky at d3s.mff.cuni.cz>
> Hezky den,
>
>
> prevzali jsem kostru Kalosta, kde se pro stanoveni konce assembleru
>> jadra umisti promenna _kernel_end. Puvodne je umistena v malloc.c, kde
>> je jejich external.
>>
>
> Myslim, ze si uplne nerozumime. Promenna _kernel_end neni nikde ve
> zdrojaku umistena, samotna promenna neni nikde vubec deklarovana. V
> hlavickovem souboru malloc.h je pouze deklarace jejiho symbolu, ale adresa
> toho symbolu se nastavi az linkerem diky linker skriptu.
>
> Pokud jste promennou _kernel_end nekde deklarovali, tak to samozrejme
> nebude fungovat.
>
>
> V prubehu vyvoje jadra jsem pridaval hodne souboru,
>> ktere jsou zavisle ci zavisi na malloc.h a _kernel_end se posunul
>> dovnitr jadra, tj. jiz neukazuje na konec kernelu. Poznal jsem to podle
>> velikosti binarky, ktera je nahravana do MSIMu. Podle objdumpu nyni
>> adresa, kam ukazuje _kernel_end je adresa funkce panic(), ktere je
>> inlinovana na spouse mist v jadre. S linker scriptem nebylo nijak
>> manipulovano, pouze se pridavali nove soubory do makefilu.
>>
>
> S inlinovam ten problem nema urcite nic spolecneho. Stejne jako to neni
> primarne problem s pridavanim dalsich souboru, protoze linker skript by mel
> zajistit, ze _kernel_end bude az za vsemi vstupnimi sekcemi obsahujici kod
> a data ze vsech souboru.
>
> Podivejte se do souboru kernel.map, kde je videt, kam se linkuji
> jednotlive vstupni sekce. Jedina moznost, ktera me napada, jak by se mohlo
> stat to, co popisujete, je to, ze se nekde vyrobila nejaka nova kodova nebo
> datova vstupni sekce, ktera pri linkovani nejak skoncila za tou vystupni
> sekci .kernel. Ale i to mi prijde dost nepravdepodobne. Kazdopadne
> kernel.map by Vam mel rict vic.
>
>
> M.D.
>
> ______________________________**_________________
> OSy mailing list
> OSy at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/**mailman/listinfo/osy<https://d3s.mff.cuni.cz/mailman/listinfo/osy>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://d3s.mff.cuni.cz/pipermail/nswi004/attachments/20111205/768f8b97/attachment.html>
More information about the NSWI004
mailing list