[PATCH] D116358: Make lld to support win-xp

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 2 13:55:43 PST 2022


mstorsjo added a comment.

In D116358#3216228 <https://reviews.llvm.org/D116358#3216228>, @mati865 wrote:

> There was similar differential recently: https://reviews.llvm.org/D112093
>
> Quoting myself from that discussion:
>
>> I never had to dig into subsystem versions and what do the mean but looking at subsystem <https://docs.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem?view=msvc-160> docs `4.0` stands for kernel mode drivers which looks wrong to me. They also specify `5.01` as 32-bit, `5.02` as 64-bit and `6.0` as being either 32-bit or 64-bit.

That's not how I interpret it. It's not that `4.0` stands for kernel version. In most cases (for the windows/console subsystem), subsystem version is a synonym for OS version (and when set via the `-subsystem` option to link.exe/lld-link, it sets both subsystem and OS version). And that page probably has been updated when purging documentation/support for older OS versions. When targeting Win9x and NT4, you'd have subsystem/OS version 4.0, when targeting Win2k/XP as baseline, it'd be 5.0, and requiring Vista if it's set to 6.0.

> This means this change breaks compliance with Windows docs for x86_64 and AArch64 without valid reason.

Yes, that's probably true - I wouldn't be surprised if ARM binaries declaring a minimum version of 4.0/5.0 wouldn't be launched at all. (Similarly, Windows refuses to load ARM binaries unless the dynamicbase flag is set.)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116358/new/

https://reviews.llvm.org/D116358



More information about the llvm-commits mailing list