OLD | NEW |
1 /* Copyright (c) 2007, Google Inc. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 * All rights reserved. | 2 // Use of this source code is governed by a BSD-style license that can be |
3 * | 3 // found in the LICENSE file. |
4 * Redistribution and use in source and binary forms, with or without | 4 |
5 * modification, are permitted provided that the following conditions are | 5 /* |
6 * met: | |
7 * | |
8 * * Redistributions of source code must retain the above copyright | |
9 * notice, this list of conditions and the following disclaimer. | |
10 * * Redistributions in binary form must reproduce the above | |
11 * copyright notice, this list of conditions and the following disclaimer | |
12 * in the documentation and/or other materials provided with the | |
13 * distribution. | |
14 * * Neither the name of Google Inc. nor the names of its | |
15 * contributors may be used to endorse or promote products derived from | |
16 * this software without specific prior written permission. | |
17 * | |
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
29 * | |
30 * --- | |
31 * | |
32 * Implementation of PreamblePatcher | 6 * Implementation of PreamblePatcher |
33 */ | 7 */ |
34 | 8 |
35 #include "preamble_patcher.h" | 9 #include "preamble_patcher.h" |
36 | 10 |
37 #include "mini_disassembler.h" | 11 #include "mini_disassembler.h" |
38 | 12 |
39 // Definitions of assembly statements we need | 13 // Definitions of assembly statements we need |
40 #define ASM_JMP32REL 0xE9 | 14 #define ASM_JMP32REL 0xE9 |
41 #define ASM_INT3 0xCC | 15 #define ASM_INT3 0xCC |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 // Inv: The memory pointed to by target_function now points to a relative | 165 // Inv: The memory pointed to by target_function now points to a relative |
192 // jump instruction that jumps over to the preamble_stub. The preamble | 166 // jump instruction that jumps over to the preamble_stub. The preamble |
193 // stub contains the first stub_size bytes of the original target | 167 // stub contains the first stub_size bytes of the original target |
194 // function's preamble code, followed by a relative jump back to the next | 168 // function's preamble code, followed by a relative jump back to the next |
195 // instruction after the first cbPreamble bytes. | 169 // instruction after the first cbPreamble bytes. |
196 | 170 |
197 return SIDESTEP_SUCCESS; | 171 return SIDESTEP_SUCCESS; |
198 } | 172 } |
199 | 173 |
200 }; // namespace sidestep | 174 }; // namespace sidestep |
OLD | NEW |