Skip to content
  • Pierrick Bouvier's avatar
    784fdecc
    windows-arm64 support (#8995) · 784fdecc
    Pierrick Bouvier authored
    * [win32] fix compilation for windows-arm64
    
    Credits to MSYS2 Ruby package using this patch.
    
    * [win32] nm use full options
    
    Fix compilation error when using MSYS2 environment.
    Credits to MSYS2 Ruby package using this patch.
    
    * [win32] detect llvm-windres (used for windows-arm64)
    
    When adding preprocessor option for llvm-windres (using clang as
    parameter), it fails. Thus, do not add this.
    
    It's needed to be able to compile windows-arm64 version, because MSYS2
    toolchain is LLVM based (instead of GCC/binutils).
    
    * [win32] pioinfo detection for windows-arm64
    
    This fixes "unexpected ucrtbase.dll" for native windows-arm64 ruby
    binary. It does not solve issue with x64 version emulated on this
    platform.
    
    Value of pioinfo pointer can be found in ucrtbase.dll at latest adrp/add
    sequence before return of _isatty function. This works for both release
    and debug ucrt.
    
    Due to the nature of aarch64 ISA (vs x86 or x64), it's needed to
    disassemble instructions to retrieve offset value, which is a bit more
    complicated than matching specific string patterns.
    
    Details about adrp/add usage can be found in this blog post:
    https://devblogs.microsoft.com/oldnewthing/20220809-00/?p=106955
    For instruction decoding, the Arm documentation was used as a reference.
    784fdecc
    windows-arm64 support (#8995)
    Pierrick Bouvier authored
    * [win32] fix compilation for windows-arm64
    
    Credits to MSYS2 Ruby package using this patch.
    
    * [win32] nm use full options
    
    Fix compilation error when using MSYS2 environment.
    Credits to MSYS2 Ruby package using this patch.
    
    * [win32] detect llvm-windres (used for windows-arm64)
    
    When adding preprocessor option for llvm-windres (using clang as
    parameter), it fails. Thus, do not add this.
    
    It's needed to be able to compile windows-arm64 version, because MSYS2
    toolchain is LLVM based (instead of GCC/binutils).
    
    * [win32] pioinfo detection for windows-arm64
    
    This fixes "unexpected ucrtbase.dll" for native windows-arm64 ruby
    binary. It does not solve issue with x64 version emulated on this
    platform.
    
    Value of pioinfo pointer can be found in ucrtbase.dll at latest adrp/add
    sequence before return of _isatty function. This works for both release
    and debug ucrt.
    
    Due to the nature of aarch64 ISA (vs x86 or x64), it's needed to
    disassemble instructions to retrieve offset value, which is a bit more
    complicated than matching specific string patterns.
    
    Details about adrp/add usage can be found in this blog post:
    https://devblogs.microsoft.com/oldnewthing/20220809-00/?p=106955
    For instruction decoding, the Arm documentation was used as a reference.
Loading