tracing: bugfix for mem dereferences at mapping boundary

As we copy a 32-bit word from the dereferenced address, we also need to
check whether address+3 is also mapped.  (Yes, I've seen this in the
wild.)

Change-Id: I43f891c56e077333670c9cb48c0ee8e9342fa41d
This commit is contained in:
Horst Schirmeier
2014-02-13 18:29:15 +01:00
parent 58fa4c59cc
commit 01c1321b48

View File

@ -117,7 +117,7 @@ bool TracingPlugin::run()
Trace_Event_Extended_Registers *er = ext.add_registers();
er->set_id((*it)->getId());
er->set_value(simulator.getCPU(0).getRegisterContent(*it));
if (mm.isMapped(er->value())) {
if (mm.isMapped(er->value()) && mm.isMapped(er->value() + 3)) {
uint32_t value_deref;
mm.getBytes(er->value(), 4, &value_deref);
er->set_value_deref(value_deref);