[linux-l] Unresoved Symbols bei slackware

Jan-Benedict Glaw jbglaw at lug-owl.de
Do Mär 2 20:01:04 CET 2006


On Thu, 2006-03-02 17:31:09 +0100, Winfried Wendler <W.Wendler at Online.de> wrote:
> Hallo Jan-Benedict,
> > Demnach passen die benutzen Kernel-Header-Dateien nicht zum laufenden
> > Kernel. Zeigen /lib/modules/`uname -r`/source und
> > /lib/modules/`uname -r`/build in das Verzeichnis, in dem die Sourcen
> > (bzw. Header) des _laufenden_ Kernels, fertig kompiliert, liegen?
> 
> ich tippe aber immer noch auf irgend eine Compiler/linker Option.
> Der Suffix _Rxxxxxxx sieht wie ein relativer Offset aus, der dem
> Label angehängt wird. So wird aus printk ein printk_Rsmp_1b7d4074.

Also... Es war einmal, vor langer, langer Zeit, da haben Leute
versucht, Module aus einem anderen[tm] Kernel zu laden, als aus dem,
der gerade lief. Dumm nur, daß unterschiedliche Kernel-Konfiguration
dazu führt, daß die übergebenen Argumente von Funktionen und überhaupt
die structs unterschiedlich sind, eben je nach Konfiguration.

Damit man überhaupt eine _Chance_ hat, sowas zu entdecken (und dann
das Laden des Modules abbrechen kann, bevor es zum Oops kommt), hat
man gespielt: Alle Funktionen werden umgewurschtelt und bekommen
automatisch generiert noch eine Checksumme über ihre komplette
Deklaration angehängt. Nun kann man zumindest einfach zu erkennende
API-Änderungen erkennen.

Aber dann kamen noch so böse Sachen wie unterschiedliche calling
conventions, Compiler-Versionen, die das unterschiedlich Umsetzen,
SMP/UP etc. Das hat man dann auch noch geprüft. (Stichwort VERMAGIC).

Was Du siehst, ist, daß Dein Modul eben _mit_ ABI-Check kompiliert
ist (es werden also Symbolnamen plus Checksummen benutzt), Dein Kernel
aber _ohne_ den Firlefanz gebaut wurde.

Es bleibt dabei: Der laufende Kernel wurde mit anderen headern (-> die
mindestens durch andere Konfiguration erzeugt wurden) kompiliert, als
Dein Modul.  Wenn sich also die Original-Konfiguration nicht mehr
herstellen/nachvollziehen läßt, dann bau einfach den kompletten Kernel
(inkl. Deines Extra-Moduls) nochmal neu.

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 für einen Freien Staat voll Freier Bürger"  | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20060302/f32b9118/attachment.sig>


Mehr Informationen über die Mailingliste linux-l