Index: chrome_frame/exception_barrier_lowlevel.asm |
=================================================================== |
--- chrome_frame/exception_barrier_lowlevel.asm (revision 0) |
+++ chrome_frame/exception_barrier_lowlevel.asm (revision 0) |
@@ -0,0 +1,52 @@ |
+; Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+; Use of this source code is governed by a BSD-style license that can be |
+; found in the LICENSE file. |
+; |
+; Tag the exception handler as an SEH handler in case the executable |
+; is linked with /SAFESEH (which is the default). |
+; |
+; MASM 8.0 inserts an additional leading underscore in front of names |
+; and this is an attempted fix until we understand why. |
+IF @version LT 800 |
+_ExceptionBarrierHandler PROTO |
+.SAFESEH _ExceptionBarrierHandler |
+ELSE |
+ExceptionBarrierHandler PROTO |
+.SAFESEH ExceptionBarrierHandler |
+ENDIF |
+ |
+.586 |
+.MODEL FLAT, STDCALL |
+ASSUME FS:NOTHING |
+.CODE |
+ |
+; extern "C" void WINAPI RegisterExceptionRecord( |
+; EXCEPTION_REGISTRATION *registration, |
+; ExceptionHandlerFunc func); |
+RegisterExceptionRecord PROC registration:DWORD, func:DWORD |
+OPTION PROLOGUE:None |
+OPTION EPILOGUE:None |
+ mov edx, DWORD PTR [esp + 4] ; edx is registration |
+ mov eax, DWORD PTR [esp + 8] ; eax is func |
+ mov DWORD PTR [edx + 4], eax |
+ mov eax, FS:[0] |
+ mov DWORD PTR [edx], eax |
+ mov FS:[0], edx |
+ ret 8 |
+ |
+RegisterExceptionRecord ENDP |
+ |
+; extern "C" void UnregisterExceptionRecord( |
+; EXCEPTION_REGISTRATION *registration); |
+UnregisterExceptionRecord PROC registration:DWORD |
+OPTION PROLOGUE:None |
+OPTION EPILOGUE:None |
+ |
+ mov edx, DWORD PTR [esp + 4] |
+ mov eax, [edx] |
+ mov FS:[0], eax |
+ ret 4 |
+ |
+UnregisterExceptionRecord ENDP |
+ |
+END |
Property changes on: chrome_frame\exception_barrier_lowlevel.asm |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |