make preamble patcher build and run (win64 only)

First, ml64 (amd64 version of masm) doesn't support /coff. Second, it
also doesn't support (nor use) .model directive.

Sadly, asm is inherently amd64-only, so this entire test won't build
in i386 configuration.
This commit is contained in:
Aliaksey Kandratsenka 2023-06-21 10:39:21 -04:00
parent 54605b8a58
commit b58cbd2e23
2 changed files with 103 additions and 101 deletions

View File

@ -32,7 +32,9 @@
;
; Unit tests for PreamblePatcher
IFNDEF AMD64
.MODEL small
ENDIF
.CODE
@ -76,90 +78,90 @@ jumpspot:
nop
nop
nop
mov rax, 1
mov eax, 1
ret
JumpShortCondFunction ENDP
JumpNearCondFunction PROC
test cl, 1
jnz jumpspot
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
jumpspot:
nop
nop
mov rax, 1
mov eax, 1
ret
JumpNearCondFunction ENDP
JumpAbsoluteFunction PROC
test cl, 1
jmp jumpspot
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
jumpspot:
nop
nop
mov rax, 1
mov eax, 1
ret
JumpAbsoluteFunction ENDP
CallNearRelativeFunction PROC
test cl, 1
call TooShortFunction
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov rdx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
mov edx, 0ffff1111H
nop
nop
nop

View File

@ -198,14 +198,14 @@
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\src\windows\shortproc.asm">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ml /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /DAMD64 "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)%(Filename).obj;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(OutDir)%(Filename).obj;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">ml /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">ml /Fo"$(OutDir)%(Filename).obj" /c /Cx /coff "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /DAMD64 "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release-Override|x64'">ml64 /Fo"$(OutDir)%(Filename).obj" /c /Cx /DAMD64 "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-Patch|Win32'">$(OutDir)%(Filename).obj;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-Override|Win32'">$(OutDir)%(Filename).obj;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-Patch|x64'">$(OutDir)%(Filename).obj;%(Outputs)</Outputs>