| 275 | } |
| 276 | |
| 277 | QBDI::VMAction checkArrayWrite32(QBDI::VMInstanceRef vm, |
| 278 | QBDI::GPRState *gprState, |
| 279 | QBDI::FPRState *fprState, void *data) { |
| 280 | |
| 281 | TestInfo *info = (TestInfo *)data; |
| 282 | std::vector<QBDI::MemoryAccess> memaccesses = vm->getInstMemoryAccess(); |
| 283 | QBDI::Range<QBDI::rword> brange( |
| 284 | (QBDI::rword)info->buffer, |
| 285 | ((QBDI::rword)info->buffer) + info->buffer_size, QBDI::auth_addr_t()); |
| 286 | for (const QBDI::MemoryAccess &memaccess : memaccesses) { |
| 287 | if (memaccess.type == QBDI::MEMORY_WRITE) { |
| 288 | if (brange.contains(memaccess.accessAddress)) { |
| 289 | size_t offset = (memaccess.accessAddress - brange.start()) >> 2; |
| 290 | if ((QBDI::rword)((uint32_t *)info->buffer)[offset] == |
| 291 | memaccess.value) { |
| 292 | info->i += offset; |
| 293 | } |
| 294 | } |
| 295 | } |
| 296 | } |
| 297 | return QBDI::VMAction::CONTINUE; |
| 298 | } |
| 299 | |
| 300 | QBDI::VMAction checkUnrolledReadInst(QBDI::VMInstanceRef vm, |
| 301 | QBDI::GPRState *gprState, |
nothing calls this directly
no test coverage detected