Provided by:
manpages-hu_20010119-5_all 
NÉV
kallsyms - minden kernel szimbólumot kiír hibakereséshez
ÁTTEKINTÉS
kallsyms [-Vh] kernel_fájlnév
LEÍRÁS
Kallsyms minden nem-verem szimbólumot kivesz a kernelből, és egy adat
objektumot készít, amelyet ahhoz a kernelhez linkelve debuggolható
lesz.
Egy normális kernel csak a modulok által használt szimbólumokat
exportálja. Hibakereséshez szükség lehet minden nem-verem
szimbólumora, nem csak az exportáltakra. kallsyms kivesz minden
szekciót és szimbólumot a kernelből, a szekciókról, szimbólumokról és a
címeikről egy listát készít, és egy relokálható objektumfájlt készít,
ami csak egy __kallsyms szekciót tartalmaz. Miután a __kallsyms
szekciót a kernelhez linkeltük, és a kernel bebootolt, bármely debugger
használhatja a __kallsyms szekció adatait a jobb szimbólumfeloldás
érdekében.
Például, egy debugger használhatja a __kallsyms adatokat, hogy feloldja
a következő kernel címeket :-
* A tulajdonos kernel vagy modul.
* A szekció a tulajdonos kódon belül.
* A legközelebbi szimbólum.
OPCIÓK
-V A modutils verzióját írja ki.
-h Kiírja a súgót.
LINKER MENETEK
Ahhoz hogy egy pontos __kallsyms szekciót tartalmazó kernelt hozzunk
létre, négy linker menetre van szükség a szokásos egy helyett. A
kallsyms és a linker gyors, a három extra lépés csak néhány másodpercig
tart egy P200-on.
1 Első kernel fordítás, __kallsyms adatok nélkül. Futtassuk a
kallsyms-t ennek eredményén, létrehozva egy relokálható objektumot,
amely tartalmazza a kernel minden szekcióját és szimbólumát.
2 Linkeljük újra a kernelt, ekkor már a kallsyms kimenetet is
hozzátéve az (1) lépésből. A __kallsyms szekciót hozzátéve
megváltozik a szekciók száma és sok kernel szimbólum címe, így
futtassuk le újra a kallsyms-t, most a második kernelen, újra
elmentve a relokálható kimenetet.
3 Linkeljük újra a kernelt, most a (2) lépésből származó kallsyms
kimenettel. Futtassuk le megint a kallsyms-t az utolsó kernelen. A
__kallsyms szekció mérete és pozíciója ebből a futtatásből már
stabil, semelyik kernel szekció vagy szimbólum sem változik ezután.
A kallsyms kimenete a kernel szimbólumok végső értékeit tartalmazza.
4 Linkeljük össze a végső kernelt, a (3) lépésből származó kallsyms
kimenettel.
ADATFORMÁTUM
A __kallsyms szekció egy kicsit szokatlan. Szándékosan nem tartalmaz
relokálható adatokat, minden "pointere" a szekción belüli bájt offszet
vagy abszolút szám. Ez azt jelenti, hogy bárhová elhelyezhető
relokációs problémák nélkül. Különösképp tárolható egy kernel image-en
belül, tárolható a kerneltől külön, hozzáfűzhető egy modulhoz betöltés
előtt, tárolható egy külön területen, stb.
A /usr/include/sys/kallsyms.h tartalmazza a __kallsyms adatok térképét.
Fejléc
* A fejléc mérete.
* A __kalsyms adatok teljes mérete, beleértve a stringeket is.
* Szekciók száma. Ez csak a memóriába betöltött szekciókat
tartalmazza.
* Az első szekció bejegyzés offszetje a __kallsyms fejléc kezdetétől.
* A szekció bejegyzések mérete a név string nélkül.
* A szimbólumok száma.
* Az első szimbólum bejegyzés offszetje a __kallsyms fejléc
kezdetétől.
* A szimbólum bejegyzések mérete a név string nélkül.
* Az első string bejegyzés offszetje a __kallsyms fejléc kezdetétől.
* Az első szekció[1] kezdőcíme.
* Az utolsó szekció[1] végcíme.
Szekció bejegyzés
Egy bejegyzés betöltött szekciónként. Mivel a __kallsyms egy betöltött
szekció, ha az input fájl tartalmazza a __kallsyms szekciót, akkor az
is szerepel a listában.
* A szekció kezdete a kernelen[1] belül.
* A szekció mérete.
* A szekció nevének offszetje a __kallsyms stringek kezdetétől.
* A szekció jelzőbitjei az eredeti Elf szekcióból
Szimbólum bejegyzés
Egy bejegyzés szimbólumonként az input fájlban. Csak a betöltött
szekciókba eső szimbólumok vannak tárolva.
* Offszet a __kallsyms szekció bejegyzésre, amelybe ez a szimbólum
tartozik. Az offszet a __kallsyms szekció bejegyzések kezdetétől
értendő.
* A szimbólum címe a kernelen[1] belül. A szimbólumok ezen mező
szerint növekvő sorrendbe vannak rendezve.
* Offszet a szimbólum nevére, __kallsyms stringek kezdetétől számítva.
Stringek
Null-végződésű stringek halmaza. Minden névre van egy a __kallsyms
stringterület kezdetétől számított offszet hivatkozás.
Megjegyzés [1]
Ezek a mezők kivételek a "minden pointer offszet" szabály alól. Ezek
egy kernelen belül abszolút címet tartalmaznak.
LÁSD MÉG
insmod(8).
TÖRTÉNELEM
Eredeti verzió: Keith Owens <kaos@ocs.com.au>, 2000 április
MAGYAR FORDÍTÁS
Böszörményi Zoltán <zboszor@mail.externet.hu>