When attempting to run a Rusticle binary on Windows 95 (manually setting /SUBSYSTEM:CONSOLE,3.1), I encountered two distinct errors depending on the toolchain used:
MSVC Toolchain:
The RUSTICLE.EXE file is improperly linked with alignment less than 0x1000.
Fix the error, and then link it again.
This suggests that the PE file does not meet the minimum alignment requirements expected by Windows 95. MSVC appears to default to a lower alignment unless explicitly set.
This is expected, and we should consider adding a flag to allow win9x compatibility.
GNU Toolchain (MinGW-w64):
A required .DLL file, MSVCRT.DLL was not found.
This error occurs because Windows 95 does not include MSVCRT.DLL by default. The GNU toolchain links against it statically, assuming its presence.
This is unexpected, since we don't require MSVCRT (or any runtime). We should consider trying to remove this dependancy.
Expected Behavior:
Ideally, Rusticle should be able to produce a minimal PE binary that runs on legacy systems like Windows 95, provided the developer opts into compatibility.
Suggested Fixes:
- For MSVC: Ensure alignment meets Windows 95’s expectations.
- For GNU: Avoid dependencies on MSVCRT.DLL entirely.
Environment:
- Rusticle v1.20.1
- Target:
i686-pc-windows-gnu and i686-pc-windows-msvc
- Host: Windows 95 VM via VirtualBox
When attempting to run a Rusticle binary on Windows 95 (manually setting /SUBSYSTEM:CONSOLE,3.1), I encountered two distinct errors depending on the toolchain used:
MSVC Toolchain:
This suggests that the PE file does not meet the minimum alignment requirements expected by Windows 95. MSVC appears to default to a lower alignment unless explicitly set.
This is expected, and we should consider adding a flag to allow win9x compatibility.
GNU Toolchain (MinGW-w64):
This error occurs because Windows 95 does not include MSVCRT.DLL by default. The GNU toolchain links against it statically, assuming its presence.
This is unexpected, since we don't require MSVCRT (or any runtime). We should consider trying to remove this dependancy.
Expected Behavior:
Ideally, Rusticle should be able to produce a minimal PE binary that runs on legacy systems like Windows 95, provided the developer opts into compatibility.
Suggested Fixes:
Environment:
i686-pc-windows-gnuandi686-pc-windows-msvc