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>