reset aux_buffer pt_overflow bit

This commit is contained in:
Steffen Schulz 2022-12-16 04:48:44 -08:00 committed by Sergej Schumilo
parent b1fd5f1039
commit 397dba5ee2
3 changed files with 12 additions and 4 deletions

View File

@ -208,6 +208,11 @@ void set_pt_overflow_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer)
VOLATILE_WRITE_8(auxilary_buffer->result.pt_overflow, 1);
}
void reset_pt_overflow_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer)
{
VOLATILE_WRITE_8(auxilary_buffer->result.pt_overflow, 0);
}
void set_exec_done_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer,
uint32_t sec,
uint32_t usec,

View File

@ -161,6 +161,7 @@ void set_asan_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer);
void set_timeout_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer);
void set_reload_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer);
void set_pt_overflow_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer);
void reset_pt_overflow_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer);
void set_exec_done_auxiliary_result_buffer(auxilary_buffer_t *auxilary_buffer,
uint32_t sec,
uint32_t usec,

View File

@ -220,10 +220,6 @@ void synchronization_lock(void)
pthread_mutex_lock(&synchronization_lock_mutex);
run_counter++;
if (qemu_get_cpu(0)->intel_pt_run_trashed) {
set_pt_overflow_auxiliary_result_buffer(GET_GLOBAL_STATE()->auxilary_buffer);
}
long runtime_sec = timer.config.tv_sec - timer.alarm.it_value.tv_sec;
long runtime_usec = timer.config.tv_usec - timer.alarm.it_value.tv_usec;
@ -242,6 +238,11 @@ void synchronization_lock(void)
set_success_auxiliary_result_buffer(GET_GLOBAL_STATE()->auxilary_buffer, 0);
}
if (qemu_get_cpu(0)->intel_pt_run_trashed) {
set_pt_overflow_auxiliary_result_buffer(GET_GLOBAL_STATE()->auxilary_buffer);
qemu_get_cpu(0)->intel_pt_run_trashed = false;
}
if (GET_GLOBAL_STATE()->dump_page) {
GET_GLOBAL_STATE()->dump_page = false;
GET_GLOBAL_STATE()->dump_page_addr = 0x0;
@ -269,6 +270,7 @@ void synchronization_lock(void)
set_success_auxiliary_result_buffer(GET_GLOBAL_STATE()->auxilary_buffer, 2);
else
set_success_auxiliary_result_buffer(GET_GLOBAL_STATE()->auxilary_buffer, 1);
reset_pt_overflow_auxiliary_result_buffer(GET_GLOBAL_STATE()->auxilary_buffer);
GET_GLOBAL_STATE()->pt_trace_size = 0;
}