Skip to content
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

Open
wants to merge 15 commits into
base: master
Choose a base branch
from

Commits on Sep 26, 2020

  1. [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.
    tkreuzer committed Sep 26, 2020
    Configuration menu
    Copy the full SHA
    d27de78 View commit details
    Browse the repository at this point in the history
  2. [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.
    tkreuzer committed Sep 26, 2020
    Configuration menu
    Copy the full SHA
    4f876ed View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f9f1e8b View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    afb05f2 View commit details
    Browse the repository at this point in the history
  5. [WINHTTP] Include roscompat descriptor,

    so that winhttp can use nt6+ apis
    learn-more authored and tkreuzer committed Sep 26, 2020
    Configuration menu
    Copy the full SHA
    0540a52 View commit details
    Browse the repository at this point in the history
  6. [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.
    tkreuzer committed Sep 26, 2020
    Configuration menu
    Copy the full SHA
    3acece4 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    973aedb View commit details
    Browse the repository at this point in the history
  8. [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.
    tkreuzer committed Sep 26, 2020
    Configuration menu
    Copy the full SHA
    19f331f View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    5008362 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    7f796e4 View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2020

  1. Configuration menu
    Copy the full SHA
    07f9f79 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1cac444 View commit details
    Browse the repository at this point in the history
  3. [MSVCRT] Export _vcwprintf

    tkreuzer committed Sep 27, 2020
    Configuration menu
    Copy the full SHA
    82a7f1a View commit details
    Browse the repository at this point in the history
  4. [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.
    tkreuzer committed Sep 27, 2020
    Configuration menu
    Copy the full SHA
    ffa1c04 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    42ffa67 View commit details
    Browse the repository at this point in the history