From 40b04bb7da4ec30ffa6c83279ab44eaa95032b16 Mon Sep 17 00:00:00 2001 From: Dmitry Selyutin Date: Sat, 13 May 2023 22:36:28 +0300 Subject: [PATCH] isa/caller.py: support per-instance trace file --- src/openpower/decoder/isa/caller.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/openpower/decoder/isa/caller.py b/src/openpower/decoder/isa/caller.py index a038a3af..d80db2fd 100644 --- a/src/openpower/decoder/isa/caller.py +++ b/src/openpower/decoder/isa/caller.py @@ -16,6 +16,8 @@ related bugs: from collections import namedtuple from copy import deepcopy from functools import wraps +from tempfile import NamedTemporaryFile +import os from nmigen.sim import Settle from openpower.consts import (MSRb, PIb, # big-endian (PowerISA versions) @@ -1146,7 +1148,17 @@ class ISACaller(ISACallerHelper, ISAFPHelpers, StepLoop): bigendian=False, mmu=False, icachemmu=False, - initial_fpscr=0): + initial_fpscr=0, + tracefile=None): + if tracefile is None: + keep = bool(os.environ.get("TRACEFILE", "")) + tracefile = NamedTemporaryFile(mode="w", encoding="UTF-8", + prefix="trace_", suffix=".trace", delete=not keep) + log("tracefile", tracefile.name, + ("(permanent)" if keep else "(transient)")) + if not callable(getattr(tracefile, "write", None)): + raise ValueError(tracefile) + self.tracefile = tracefile self.bigendian = bigendian self.halted = False @@ -1753,8 +1765,7 @@ class ISACaller(ISACallerHelper, ISAFPHelpers, StepLoop): raise e # ... re-raise # append the log file - with open("/tmp/insnlog.txt", "a+") as f: - f.write(" ".join(self.insnlog)+"\n") + self.tracefile.write(" ".join(self.insnlog)+"\n") log("gprs after code", code) self.gpr.dump() -- 2.30.2