| 118 | } |
| 119 | |
| 120 | FunctionInfo SymbolGuardian::FunctionStartingAtAddress(u32 address) const |
| 121 | { |
| 122 | FunctionInfo info; |
| 123 | Read([&](const ccc::SymbolDatabase& database) { |
| 124 | ccc::FunctionHandle handle = database.functions.first_handle_from_starting_address(address); |
| 125 | const ccc::Function* function = database.functions.symbol_from_handle(handle); |
| 126 | if (!function) |
| 127 | return; |
| 128 | |
| 129 | info.handle = function->handle(); |
| 130 | info.name = function->name(); |
| 131 | info.address = function->address(); |
| 132 | info.size = function->size(); |
| 133 | info.is_no_return = function->is_no_return; |
| 134 | }); |
| 135 | return info; |
| 136 | } |
| 137 | |
| 138 | FunctionInfo SymbolGuardian::FunctionOverlappingAddress(u32 address) const |
| 139 | { |
no test coverage detected