self.active_child.sendline("c%s" % async)
self.active_child.expect("Continuing", timeout=ops * self.timeout)
- def c_all(self):
+ def c_all(self, wait=True):
"""
Resume every hart.
child.sendline("c")
child.expect("Continuing")
- # Now wait for them all to halt
- for child in self.children:
- child.expect(r"\(gdb\)")
+ if wait:
+ for child in self.children:
+ child.expect(r"\(gdb\)")
def interrupt(self):
self.active_child.send("\003")
self.active_child.expect(r"\(gdb\)", timeout=6000)
return self.active_child.before.strip()
+ def interrupt_all(self):
+ for child in self.children:
+ self.select_child(child)
+ self.interrupt()
+
def x(self, address, size='w'):
output = self.command("x/%s %s" % (size, address))
value = int(output.split(':')[1].strip(), 0)
output = self.command("load", ops=1000)
assert "failed" not in output
assert "Transfer rate" in output
+ output = self.command("compare-sections", ops=1000)
+ assert "MIS" not in output
def b(self, location):
output = self.command("b %s" % location, ops=5)
self.gdb.interrupt()
self.gdb.command("disassemble", ops=20)
self.gdb.command("info registers all", ops=100)
+ self.gdb.command("flush regs")
+ self.gdb.command("info threads", ops=100)
def classTeardown(self):
del self.gdb
if hart != self.hart:
self.gdb.select_hart(hart)
self.gdb.p("$pc=loop_forever")
+
self.gdb.select_hart(self.hart)
class GdbSingleHartTest(GdbTest):