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.
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>