| Index: base/exception_utils.cc
|
| diff --git a/base/exception_utils.cc b/base/exception_utils.cc
|
| deleted file mode 100644
|
| index 56af779fa72ef19c44c9700ebb9ae0082f39cae7..0000000000000000000000000000000000000000
|
| --- a/base/exception_utils.cc
|
| +++ /dev/null
|
| @@ -1,86 +0,0 @@
|
| -// Copyright 2006-2009 Google Inc.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -// ========================================================================
|
| -
|
| -#include "exception_utils.h"
|
| -
|
| -
|
| -// Capture a CONTEXT that represents machine state at callsite
|
| -// TODO(omaha): 64 bit platforms can pass through to
|
| -// RtlCaptureContext (or can they?)
|
| -__declspec(naked) PCONTEXT WINAPI CaptureContext(PCONTEXT runner) {
|
| - runner; // unreferenced formal parameter
|
| - __asm {
|
| - // set up a call frame
|
| - push ebp
|
| - mov ebp, esp
|
| -
|
| - // save ecx for later
|
| - push ecx
|
| -
|
| - // fetch the context record pointer argument into ecx
|
| - // which we use as pointer to context throughout the rest
|
| - // of this function
|
| - mov ecx, DWORD PTR [ebp + 8]
|
| -
|
| - // set flags
|
| - mov [ecx]CONTEXT.ContextFlags, CONTEXT_SEGMENTS | CONTEXT_INTEGER | \
|
| - CONTEXT_CONTROL | CONTEXT_FLOATING_POINT
|
| -
|
| - // stash the integer registers away
|
| - mov [ecx]CONTEXT.Edi, edi
|
| - mov [ecx]CONTEXT.Ebx, ebx
|
| - mov [ecx]CONTEXT.Edx, edx
|
| - mov [ecx]CONTEXT.Eax, eax
|
| - mov [ecx]CONTEXT.Esi, esi
|
| - // get the saved ecx
|
| - pop eax
|
| - mov [ecx]CONTEXT.Ecx, eax
|
| -
|
| - // now control registers
|
| - pushfd
|
| - pop eax
|
| - mov [ecx]CONTEXT.EFlags, eax
|
| -
|
| - // get the old ebp, our FP points to it
|
| - mov eax, [ebp]
|
| - mov [ecx]CONTEXT.Ebp, eax
|
| -
|
| - // get return address and record as eip
|
| - mov eax, [ebp + 4]
|
| - mov [ecx]CONTEXT.Eip, eax
|
| -
|
| - // esp post-return is ...
|
| - lea eax, [ebp + 0xC]
|
| - mov [ecx]CONTEXT.Esp, eax
|
| -
|
| - // snarf segment registers
|
| - mov word ptr [ecx]CONTEXT.SegSs, ss
|
| - mov word ptr [ecx]CONTEXT.SegCs, cs
|
| - mov word ptr [ecx]CONTEXT.SegGs, gs
|
| - mov word ptr [ecx]CONTEXT.SegFs, fs
|
| - mov word ptr [ecx]CONTEXT.SegEs, es
|
| - mov word ptr [ecx]CONTEXT.SegDs, ds
|
| -
|
| - // and lastly grab floating point state
|
| - fnsave [ecx]CONTEXT.FloatSave
|
| -
|
| - // return the CONTEXT pointer
|
| - mov eax, ecx
|
| -
|
| - // and return
|
| - pop ebp
|
| - ret 4
|
| - }
|
| -}
|
|
|