xcode - Symbols not found - IOUSBHostHIDDevice - OSX kext -
i had convert existing driver osx10.11 (previous question).
i have replaced deprecated , removed classes , methods new ones introduced in 10.11. kext builds cannot load driver.
the osbundlelibraries
updated after issuing command kextlibs -xml driver.kext
.
<key>osbundlelibraries</key> <dict> <key>com.apple.driver.iobluetoothhiddriver</key> <string>4.4d69</string> <key>com.apple.driver.usb.iousbhosthiddevice</key> <string>1.0</string> <key>com.apple.iokit.iohidfamily</key> <string>2.0</string> <key>com.apple.iokit.iousbhostfamily</key> <string>1.0</string> <key>com.apple.kpi.bsd</key> <string>15.0</string> <key>com.apple.kpi.iokit</key> <string>15.0</string> <key>com.apple.kpi.libkern</key> <string>15.0</string> <key>com.apple.kpi.mach</key> <string>15.0</string> </dict>
also , giving -all
kextlibs
stated 20 symbols not found. please find below relevant portion result of command.
22 symbols not found in library kext: __zn18iousbhosthiddevice28_reservediousbhosthiddevice5ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice17ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice0ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice14ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice9ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice11ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice4ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice18ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice8ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice15ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice3ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice12ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice7ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice19ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice2ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice16ev __zn20iobluetoothhiddriver31_reservediobluetoothhiddriver12ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice13ev __zn20iobluetoothhiddriver31_reservediobluetoothhiddriver11ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice6ev __zn18iousbhosthiddevice28_reservediousbhosthiddevice1ev __zn18iousbhosthiddevice29_reservediousbhosthiddevice10ev
kextutil gave following output
sudo kextutil -n -print-diagnostics prdt.kext kxld[com.comp.driver.prdt]: super class vtable 'vtable iobluetoothhiddriver' vtable 'vtable com_madcatz_driver_bt_ratte' out of date. make sure kext has been built against correct headers. kxld[com.comp.driver.prdt]: super class vtable 'vtable iobluetoothhiddriver' vtable 'vtable com_madcatz_driver_bt_ratte' out of date. make sure kext has been built against correct headers. kxld[com.comp.driver.prdt]: vtable com_comp_driver_usb_prdt not patched because parent, vtable iousbhosthiddevice, not found. link failed (error code 5). check library declarations kext kextlibs(8).
what should done rectify missing symbols?. how find symbols located?.
any idea relating issue highly appreciated, cannot figure out how proceed.
also, __zn18
, 28_
etc represent in __zn18iousbhosthiddevice28_reservediousbhosthiddevice5ev
? there way trace line of code in unknown symbols located
****** edited add additional info ******
additional information
demangled , sorted missing symbols kextlibs
result (listed above)
iousbhosthiddevice::_reservediousbhosthiddevice0(); iousbhosthiddevice::_reservediousbhosthiddevice1(); iousbhosthiddevice::_reservediousbhosthiddevice2(); . . . iousbhosthiddevice::_reservediousbhosthiddevice17(); iousbhosthiddevice::_reservediousbhosthiddevice18(); iousbhosthiddevice::_reservediousbhosthiddevice19(); iobluetoothhiddriver::_reservediobluetoothhiddriver11(); iobluetoothhiddriver::_reservediobluetoothhiddriver12();
it seems reservediousbhosthiddevice
(listed above) declared in iokit/usb/iousbhosthiddevice.h
//from iousbhosthiddevice.h // protected pad slots future expansion osmetaclassdeclarereservedunused(iousbhosthiddevice, 0); osmetaclassdeclarereservedunused(iousbhosthiddevice, 1); osmetaclassdeclarereservedunused(iousbhosthiddevice, 2); . . // public pad slots future expansion osmetaclassdeclarereservedunused(iousbhosthiddevice, 10); . . osmetaclassdeclarereservedunused(iousbhosthiddevice, 19);
however reservediobluetoothhiddriver
declared in iobluetoothhiddriver.h
in contains
osmetaclassdeclarereservedunused( iobluetoothhiddriver, 0 ); osmetaclassdeclarereservedunused( iobluetoothhiddriver, 1 ); . . . osmetaclassdeclarereservedunused( iobluetoothhiddriver, 19 );
is declared, however, interestingly _reservediobluetoothhiddriver11()
, _reservediobluetoothhiddriver12()
methods not matched kernel though 1 19 declared in iobluetoothhiddriver.h
.
where osmetaclassdeclarereservedunused
macro declared in osmetaclass.h
as
#if apple_kext_vtable_padding #define osmetaclassdeclarereservedunused(classname, index) \ private: \ virtual void _reserved ## classname ## index () #else #define osmetaclassdeclarereservedunused(classname, index) #endif
Comments
Post a Comment