- Breakthroughs & Rétro-ingénierie :
* Analyse binaire approfondie du moteur de pré-liaison d'OpenCore (PrelinkedContext.c, Vtables.c, PrelinkedKext.c, CxxSymbols.c).
* Identification de la cause racine exacte du rejet OpenCore 'Invalid Parameter' :
1. Dans Vtables.c:320 (InternalPatchVtableSymbol), OpenCore applique la règle stricte : if (MachoSymbolNameIsPadslot (ParentEntry->Name)) return FALSE. L'insertion de deux slots factices (_RESERVEDIOEthernetController_tahoe0/1) décalait de 2 slots (16 octets) toutes les entrées virtuelles après le slot 393. Au slot 446, ParentEntry valait _RESERVEDIO80211Controller0 (padslot) alors que le kext enfant présentait attachVirtualInterface (non padslot), conduisant OpenCore à rejeter le kext comme binaire-incompatible.
2. Analyse binaire exacte de BootKernelExtensions.kc : __ZTV17IO80211Controller compte exactement 463 slots (terminateur 0x0 à l'index 465). Le slot 394 correspond directement à ___cxa_pure_virtual (isCommandProhibited) sans aucun slot intermédiaire. La suppression des deux slots factices élimine 100% des violations de padslot.
3. Correction des dépendances Info.plist : com.apple.iokit.IO80211Family aligné à 1.5.0, IONetworkingFamily à 1.5.0, IOPCIFamily à 1.0.0 (correspondant à leurs OSBundleCompatibleVersion respectives), et OSBundleRequired défini à Network-Root pour respecter l'ordonnancement XNU / OpenCore.
- Modifications apportées :
* QualcommWireless/include/IOKit/80211/IO80211Controller.h : suppression de _RESERVEDIOEthernetController_tahoe0 et _tahoe1, rétablissant l'alignement strict 463 slots.
* QualcommWifi/Info.plist : déclaration des versions compatibles dans OSBundleLibraries et passage à OSBundleRequired = Network-Root.
- Validation :
* Vérification binaire automatisée reproduisant l'algorithme d'OpenCore : 0 violation de padslot (100% de succès).
* Compilation sans erreur via ./build_wifi.sh.
* Validation des liaisons kmutil libraries : 0 symbole manquant contre BootKernelExtensions.kc.
* Déploiement direct dans /Volumes/EFI/EFI/OC/Kexts/QualcommWifi.kext validé (SHA256 identique).
60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDevelopmentRegion</key>
|
|
<string>en</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>QualcommWifi</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.nawrhehe.QualcommWifi</string>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleName</key>
|
|
<string>QualcommWifi</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>KEXT</string>
|
|
<key>CFBundleShortVersionString</key>
|
|
<string>1.1.0</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>1.1.0</string>
|
|
<key>IOKitPersonalities</key>
|
|
<dict>
|
|
<key>QualcommWifi_PCIe</key>
|
|
<dict>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.nawrhehe.QualcommWifi</string>
|
|
<key>IOClass</key>
|
|
<string>QualcommWifi</string>
|
|
<key>IOMatchCategory</key>
|
|
<string>IODefaultMatchCategory</string>
|
|
<key>IOPCIPrimaryMatch</key>
|
|
<string>0x110717cb</string>
|
|
<key>IOProbeScore</key>
|
|
<integer>20000</integer>
|
|
<key>IOProviderClass</key>
|
|
<string>IOPCIDevice</string>
|
|
</dict>
|
|
</dict>
|
|
<key>OSBundleLibraries</key>
|
|
<dict>
|
|
<key>com.apple.iokit.IO80211Family</key>
|
|
<string>1.5.0</string>
|
|
<key>com.apple.iokit.IONetworkingFamily</key>
|
|
<string>1.5.0</string>
|
|
<key>com.apple.iokit.IOPCIFamily</key>
|
|
<string>1.0.0</string>
|
|
<key>com.apple.kpi.bsd</key>
|
|
<string>16.7</string>
|
|
<key>com.apple.kpi.iokit</key>
|
|
<string>16.7</string>
|
|
<key>com.apple.kpi.libkern</key>
|
|
<string>16.7</string>
|
|
<key>com.apple.kpi.mach</key>
|
|
<string>16.7</string>
|
|
</dict>
|
|
<key>OSBundleRequired</key>
|
|
<string>Network-Root</string>
|
|
</dict>
|
|
</plist>
|