Provided by: manpages-hu_20010119-5_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>