2013-08-30 6 views
1

Я следовал this tutorial given on Apple's developer site.Невозможно найти ссылки на символы для IOKit kext

При управлении kextlib, он показывает 2 неопределенные символы, вот вывод:

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_ 

на бега:

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

Я получаю 0 хитов, на перенаправив вывод в файл - я что символы, которые ищут, даже здесь не присутствуют. И даже если я их найду, я понятия не имею, как связать эти символы или найти соответствующие библиотеки для моего драйвера.

Любая помощь поможет. Это первый раз, когда я работаю над драйверами IOKit, и никто, кажется, не имеет этой ошибки.

Я бегу OSX 10.8.4 и Xcode 5 DP5

Заранее спасибо!

ответ

3

Бежит недостающие символы через с фильтом ++ для demangle их:

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

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

Таким образом, кажется, что мы ищем методу IOService::configureReport и IOService::updateReport - предположительно, для использования в виртуальных таблицах в вашем IOService подклассе.

Теперь эти методы не существуют на 10.8 или более ранних версиях, а 10.9/Xcode5 все еще находятся в закрытой бета-версии, поэтому вы не можете обсуждать их на публичном форуме, как это. Тем не менее, я подозреваю, что вы используете 10.9 SDK, и это может быть ошибкой в ​​предварительном коде. Убедитесь, что вы используете самую последнюю версию SDK (cough DP6 cough), и если проблема все еще существует, (а) спросите на бета-форуме Apple и/или (b) сообщите об ошибке с Apple и/или (c) подать (оплаченный) запрос DTS, если это срочно.