| 207 | } |
| 208 | |
| 209 | QBDI::VMAction checkArrayRead32(QBDI::VMInstanceRef vm, |
| 210 | QBDI::GPRState *gprState, |
| 211 | QBDI::FPRState *fprState, void *data) { |
| 212 | |
| 213 | TestInfo *info = (TestInfo *)data; |
| 214 | std::vector<QBDI::MemoryAccess> memaccesses = vm->getInstMemoryAccess(); |
| 215 | QBDI::Range<QBDI::rword> brange( |
| 216 | (QBDI::rword)info->buffer, |
| 217 | ((QBDI::rword)info->buffer) + info->buffer_size, QBDI::auth_addr_t()); |
| 218 | for (const QBDI::MemoryAccess &memaccess : memaccesses) { |
| 219 | if (memaccess.type == QBDI::MEMORY_READ) { |
| 220 | if (brange.contains(memaccess.accessAddress)) { |
| 221 | size_t offset = (memaccess.accessAddress - brange.start()) >> 2; |
| 222 | if ((QBDI::rword)((uint32_t *)info->buffer)[offset] == |
| 223 | memaccess.value) { |
| 224 | info->i += offset; |
| 225 | } |
| 226 | } |
| 227 | } |
| 228 | } |
| 229 | return QBDI::VMAction::CONTINUE; |
| 230 | } |
| 231 | |
| 232 | QBDI::VMAction checkArrayWrite8(QBDI::VMInstanceRef vm, |
| 233 | QBDI::GPRState *gprState, |
no test coverage detected