Provided by: manpages-hu_20010119-6_all bug

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>

Linux                                            2000 április 20                                     KALLSYMS(8)