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:
parent
54605b8a58
commit
b58cbd2e23
|
@ -1,39 +1,41 @@
|
|||
; Copyright (c) 2011, Google Inc.
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are
|
||||
; met:
|
||||
;
|
||||
; * Redistributions of source code must retain the above copyright
|
||||
; notice, this list of conditions and the following disclaimer.
|
||||
; * Redistributions in binary form must reproduce the above
|
||||
; copyright notice, this list of conditions and the following disclaimer
|
||||
; in the documentation and/or other materials provided with the
|
||||
; distribution.
|
||||
; * Neither the name of Google Inc. nor the names of its
|
||||
; contributors may be used to endorse or promote products derived from
|
||||
; this software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;
|
||||
; ---
|
||||
; Author: Scott Francis
|
||||
;
|
||||
; Copyright (c) 2011, Google Inc.
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are
|
||||
; met:
|
||||
;
|
||||
; * Redistributions of source code must retain the above copyright
|
||||
; notice, this list of conditions and the following disclaimer.
|
||||
; * Redistributions in binary form must reproduce the above
|
||||
; copyright notice, this list of conditions and the following disclaimer
|
||||
; in the documentation and/or other materials provided with the
|
||||
; distribution.
|
||||
; * Neither the name of Google Inc. nor the names of its
|
||||
; contributors may be used to endorse or promote products derived from
|
||||
; this software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;
|
||||
; ---
|
||||
; Author: Scott Francis
|
||||
;
|
||||
; Unit tests for PreamblePatcher
|
||||
|
||||
|
||||
IFNDEF AMD64
|
||||
.MODEL small
|
||||
|
||||
ENDIF
|
||||
|
||||
.CODE
|
||||
|
||||
TooShortFunction PROC
|
||||
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
@ -231,4 +231,4 @@
|
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
Loading…
Reference in New Issue