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.hin 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

Popular posts from this blog

Ansible - ERROR! the field 'hosts' is required but was not set -

customize file_field button ruby on rails -

SoapUI on windows 10 - high DPI/4K scaling issue -