2013-08-30 1 views
1

J'ai suivi this tutorial given on Apple's developer site.Impossible de trouver les liens de symboles pour IOKit kext

sur l'exécution kextlib, il est montrant 2 symboles non définis, voici la sortie:

sudo kextlibs -xml -undef IOKitTest1.kext/ 
    <key>OSBundleLibraries</key> 
    <dict> 
     <key>com.apple.kpi.iokit</key> 
     <string>12.4</string> 
     <key>com.apple.kpi.libkern</key> 
     <string>12.4</string> 
    </dict> 

For x86_64: 
    2 symbols not found in any library kext: 
    __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_ 
    __ZN9IOService12updateReportEP19IOReportChannelListjPvS2_ 

sur la course:

kextfind -dsym __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_ 
nm -arch x86_64 /mach_kernel |grep __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_ 

je reçois 0 coups, sur redirigeant la sortie vers un fichier - i se rendre compte que les symboles que je cherche ne sont même pas présents ici. Et même si je les trouve, je n'ai aucune idée de comment lier ces symboles ou trouver les bibliothèques correspondantes à mon pilote.

Toute aide vous sera utile. C'est la première fois que je travaille sur IOKit Drivers et personne ne semble avoir cette erreur.

Je suis sous OSX 10.8.4 et Xcode 5 DP5

Merci à l'avance!

Répondre

3

Lançons les symboles manquants à C++ filt les demangle:

$ echo __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_ | c++filt 
IOService::configureReport(IOReportChannelList*, unsigned int, void*, void*) 

$ echo __ZN9IOService12updateReportEP19IOReportChannelListjPvS2_ | c++filt 
IOService::updateReport(IOReportChannelList*, unsigned int, void*, void*) 

Il semble donc que nous recherchons les méthodes IOService::configureReport et IOService::updateReport - vraisemblablement pour une utilisation dans le vtable dans votre sous-classe IOService.

Maintenant, ces méthodes n'existent pas sur 10.8 ou plus tôt, et 10.9/Xcode5 sont toujours en version bêta fermée, donc vous ne pouvez pas en discuter sur un forum public comme celui-ci. Cependant, je suppose que vous utilisez le SDK 10.9, et cela pourrait être un bug dans le code de pré-libération. Assurez-vous que vous utilisez le dernier SDK (toux DP6 toux) et si le problème persiste, (a) demandez sur le forum bêta d'Apple et/ou (b) de déposer un rapport de bug avec Apple et/ou (c) déposer une demande DTS (payée) si elle est urgente.

Questions connexes