| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
| 4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 #include <assert.h> | 7 #include <assert.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| 11 | 11 |
| 12 #include "native_client/src/include/arm_sandbox.h" |
| 12 #include "native_client/src/shared/platform/nacl_log.h" | 13 #include "native_client/src/shared/platform/nacl_log.h" |
| 13 #include "native_client/src/trusted/debug_stub/abi.h" | 14 #include "native_client/src/trusted/debug_stub/abi.h" |
| 14 #include "native_client/src/trusted/debug_stub/platform.h" | 15 #include "native_client/src/trusted/debug_stub/platform.h" |
| 15 | 16 |
| 16 using port::IPlatform; | 17 using port::IPlatform; |
| 17 | 18 |
| 18 namespace gdb_rsp { | 19 namespace gdb_rsp { |
| 19 | 20 |
| 20 #define MINIDEF(x, name, purpose) { #name, sizeof(x), Abi::purpose, 0, 0 } | 21 #define MINIDEF(x, name, purpose) { #name, sizeof(x), Abi::purpose, 0, 0 } |
| 21 | 22 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 // a fault. INT3 leaves %eip/%rip pointing to the address after | 123 // a fault. INT3 leaves %eip/%rip pointing to the address after |
| 123 // the INT3 instruction, which makes it harder to tell | 124 // the INT3 instruction, which makes it harder to tell |
| 124 // unambiguously whether a fault was produced by an INT3 or the | 125 // unambiguously whether a fault was produced by an INT3 or the |
| 125 // instruction after it. | 126 // instruction after it. |
| 126 static uint8_t breakpoint_code_x86[] = { 0xf4 /* HLT */ }; | 127 static uint8_t breakpoint_code_x86[] = { 0xf4 /* HLT */ }; |
| 127 static Abi::BPDef breakpoint_x86 = { | 128 static Abi::BPDef breakpoint_x86 = { |
| 128 sizeof(breakpoint_code_x86), | 129 sizeof(breakpoint_code_x86), |
| 129 breakpoint_code_x86 | 130 breakpoint_code_x86 |
| 130 }; | 131 }; |
| 131 | 132 |
| 132 static uint32_t breakpoint_code_arm[] = { 0xe1277777 /* bkpt 0x7777 */ }; | 133 static uint32_t breakpoint_code_arm[] = { NACL_INSTR_BREAKPOINT }; |
| 133 static Abi::BPDef breakpoint_arm = { | 134 static Abi::BPDef breakpoint_arm = { |
| 134 sizeof(breakpoint_code_arm), | 135 sizeof(breakpoint_code_arm), |
| 135 (uint8_t *) breakpoint_code_arm | 136 (uint8_t *) breakpoint_code_arm |
| 136 }; | 137 }; |
| 137 | 138 |
| 138 static AbiMap_t *GetAbis() { | 139 static AbiMap_t *GetAbis() { |
| 139 static AbiMap_t *_abis = new AbiMap_t(); | 140 static AbiMap_t *_abis = new AbiMap_t(); |
| 140 return _abis; | 141 return _abis; |
| 141 } | 142 } |
| 142 | 143 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 if (index >= regCnt_) return NULL; | 251 if (index >= regCnt_) return NULL; |
| 251 | 252 |
| 252 return ®Defs_[index]; | 253 return ®Defs_[index]; |
| 253 } | 254 } |
| 254 | 255 |
| 255 const Abi::RegDef *Abi::GetInstPtrDef() const { | 256 const Abi::RegDef *Abi::GetInstPtrDef() const { |
| 256 return GetRegisterDef(ipIndex_); | 257 return GetRegisterDef(ipIndex_); |
| 257 } | 258 } |
| 258 | 259 |
| 259 } // namespace gdb_rsp | 260 } // namespace gdb_rsp |
| OLD | NEW |