-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement versioning system for DLLs #3239
base: master
Are you sure you want to change the base?
Commits on Sep 26, 2020
-
[SPEC2DEF] Implement generating export patch information
Now spec2def uses the version annotations in spec files to generate a table, which will be used to dynamically patch the export table based on the current process' appcompat settings, when a dll is initialized, allowing to export the appropriate functions for each version. This feature is still disabled in config.cmake with the variable DISABLE_EXPORT_VERSIONING.
Configuration menu - View commit details
-
Copy full SHA for d27de78 - Browse repository at this point
Copy the full SHA d27de78View commit details -
[NTDLL] Add mechanism to patch the export table at runtime
The loader checks for a ros-compat-descriptor, and if one is found, parses it's entries. Each entry corresponds to an export and provides a bitmask that specifies on what Windows version the export exists. If the bit for the process' appcompat version (default is still Windows 2003) is set, the export will be kept, otherwise the export will be moved into a second (private) export table. If a module has a ros-compat-descritor, it is still allowed to import these hidden exports.
Configuration menu - View commit details
-
Copy full SHA for 4f876ed - Browse repository at this point
Copy the full SHA 4f876edView commit details -
Configuration menu - View commit details
-
Copy full SHA for f9f1e8b - Browse repository at this point
Copy the full SHA f9f1e8bView commit details -
Configuration menu - View commit details
-
Copy full SHA for afb05f2 - Browse repository at this point
Copy the full SHA afb05f2View commit details -
[WINHTTP] Include roscompat descriptor,
so that winhttp can use nt6+ apis
Configuration menu - View commit details
-
Copy full SHA for 0540a52 - Browse repository at this point
Copy the full SHA 0540a52View commit details -
[REACTOS] Make sure xxx_vista is linked to before xxx
This is required, because with dynamically patched export tables we will export all vista functions from the main dll, and you can link to them at compile time, but they will not be resolved at runtime, unless the importer has a roscompat-descriptor. Linking the vista version first will resolve the imports from the vista dll.
Configuration menu - View commit details
-
Copy full SHA for 3acece4 - Browse repository at this point
Copy the full SHA 3acece4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 973aedb - Browse repository at this point
Copy the full SHA 973aedbView commit details -
[KERNEL32] Export more Vista APIs
Create kernel32_vista_static library and link both kernel32_vista and kernel32 to it. Export some vista functions from kernel32.
Configuration menu - View commit details
-
Copy full SHA for 19f331f - Browse repository at this point
Copy the full SHA 19f331fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5008362 - Browse repository at this point
Copy the full SHA 5008362View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7f796e4 - Browse repository at this point
Copy the full SHA 7f796e4View commit details
Commits on Sep 27, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 07f9f79 - Browse repository at this point
Copy the full SHA 07f9f79View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1cac444 - Browse repository at this point
Copy the full SHA 1cac444View commit details -
Configuration menu - View commit details
-
Copy full SHA for 82a7f1a - Browse repository at this point
Copy the full SHA 82a7f1aView commit details -
[KERNEL32_APITEST] Hack the loader test
The test is mapping ntdll using MapViewOfFile, bypassing the loader, then enumerates it's exports, and then passes the names to GetProcAddress, which is hiding some of the original exports. At this point we do not support this scenario.
Configuration menu - View commit details
-
Copy full SHA for ffa1c04 - Browse repository at this point
Copy the full SHA ffa1c04View commit details -
Configuration menu - View commit details
-
Copy full SHA for 42ffa67 - Browse repository at this point
Copy the full SHA 42ffa67View commit details