fix(wifi): resolve OpenCore 'Invalid Parameter' rejection by aligning IO80211Controller vtable padslots and Info.plist dependencies

- 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).
This commit is contained in:
Erwan committed 2026-10-16 13:18:30 +02:00
1 parent d6bce8f360
commit cf09834dc2
2 files changed
+10 -12

No files matched your search

+8 -8
View File
@@ -39,21 +39,21 @@
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IO80211Family</key>
<string>1200.0</string>
<string>1.5.0</string>
<key>com.apple.iokit.IONetworkingFamily</key>
<string>3.2</string>
<string>1.5.0</string>
<key>com.apple.iokit.IOPCIFamily</key>
<string>2.9</string>
<string>1.0.0</string>
<key>com.apple.kpi.bsd</key>
<string>15.0</string>
<string>16.7</string>
<key>com.apple.kpi.iokit</key>
<string>15.0</string>
<string>16.7</string>
<key>com.apple.kpi.libkern</key>
<string>15.0</string>
<string>16.7</string>
<key>com.apple.kpi.mach</key>
<string>15.0</string>
<string>16.7</string>
</dict>
<key>OSBundleRequired</key>
<string>Root</string>
<string>Network-Root</string>
</dict>
</plist>