| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdint.h> | 5 #include <stdint.h> |
| 6 #include <stdio.h> | 6 #include <stdio.h> |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include "vm/gdbjit_android.h" | 9 #include "vm/gdbjit_android.h" |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 struct jit_descriptor { | 25 struct jit_descriptor { |
| 26 uint32_t version; | 26 uint32_t version; |
| 27 /* This type should be jit_actions_t, but we use uint32_t | 27 /* This type should be jit_actions_t, but we use uint32_t |
| 28 to be explicit about the bitwidth. */ | 28 to be explicit about the bitwidth. */ |
| 29 uint32_t action_flag; | 29 uint32_t action_flag; |
| 30 struct jit_code_entry* relevant_entry; | 30 struct jit_code_entry* relevant_entry; |
| 31 struct jit_code_entry* first_entry; | 31 struct jit_code_entry* first_entry; |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 #ifndef GDB_JIT_SYMBOLS |
| 34 /* GDB puts a breakpoint in this function. */ | 35 /* GDB puts a breakpoint in this function. */ |
| 35 void __attribute__((noinline)) __jit_debug_register_code() { } | 36 void __attribute__((noinline)) __jit_debug_register_code() { } |
| 36 | 37 |
| 37 /* Make sure to specify the version statically, because the | 38 /* Make sure to specify the version statically, because the |
| 38 debugger may check the version before we can set it. */ | 39 debugger may check the version before we can set it. */ |
| 39 struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 }; | 40 struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 }; |
| 41 #endif |
| 40 | 42 |
| 41 static struct jit_code_entry* first_dynamic_region = NULL; | 43 static struct jit_code_entry* first_dynamic_region = NULL; |
| 42 static struct jit_code_entry* last_dynamic_region = NULL; | 44 static struct jit_code_entry* last_dynamic_region = NULL; |
| 43 | 45 |
| 44 void addDynamicSection(const char* symfile_addr, uint64_t symfile_size) { | 46 void addDynamicSection(const char* symfile_addr, uint64_t symfile_size) { |
| 45 jit_code_entry* new_entry = reinterpret_cast<jit_code_entry*>( | 47 jit_code_entry* new_entry = reinterpret_cast<jit_code_entry*>( |
| 46 malloc(sizeof(jit_code_entry))); | 48 malloc(sizeof(jit_code_entry))); |
| 47 if (new_entry != NULL) { | 49 if (new_entry != NULL) { |
| 48 new_entry->symfile_addr = symfile_addr; | 50 new_entry->symfile_addr = symfile_addr; |
| 49 new_entry->symfile_size = symfile_size; | 51 new_entry->symfile_size = symfile_size; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 68 __jit_debug_descriptor.action_flag = JIT_UNREGISTER_FN; | 70 __jit_debug_descriptor.action_flag = JIT_UNREGISTER_FN; |
| 69 __jit_debug_descriptor.relevant_entry = iterator; | 71 __jit_debug_descriptor.relevant_entry = iterator; |
| 70 __jit_debug_descriptor.first_entry = first_dynamic_region; | 72 __jit_debug_descriptor.first_entry = first_dynamic_region; |
| 71 __jit_debug_register_code(); | 73 __jit_debug_register_code(); |
| 72 iterator = iterator->prev_entry; | 74 iterator = iterator->prev_entry; |
| 73 } | 75 } |
| 74 first_dynamic_region = NULL; | 76 first_dynamic_region = NULL; |
| 75 last_dynamic_region = NULL; | 77 last_dynamic_region = NULL; |
| 76 } | 78 } |
| 77 }; | 79 }; |
| OLD | NEW |