Skip to content

Commit b226521

Browse files
Leo Yanacmel
authored andcommitted
perf scripts python: Let script to be python2 compliant
The mainline kernel can be used for relative old distros, e.g. RHEL 7. The distro doesn't upgrade from python2 to python3, this causes the building error that the python script is not python2 compliant. To fix the building failure, this patch changes from the python f-string format to traditional string format. Fixes: 12fdd6c ("perf scripts python: Support Arm CoreSight trace data disassembly") Reported-by: Akemi Yagi <toracat@elrepo.org> Signed-off-by: Leo Yan <leo.yan@linaro.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: ElRepo <contact@elrepo.org> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: https://lore.kernel.org/r/20220725104220.1106663-1-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent 553de6e commit b226521

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

tools/perf/scripts/python/arm-cs-trace-disasm.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def get_optional(perf_dict, field):
6161

6262
def get_offset(perf_dict, field):
6363
if field in perf_dict:
64-
return f"+0x{perf_dict[field]:x}"
64+
return "+%#x" % perf_dict[field]
6565
return ""
6666

6767
def get_dso_file_path(dso_name, dso_build_id):
@@ -76,7 +76,7 @@ def get_dso_file_path(dso_name, dso_build_id):
7676
else:
7777
append = "/elf"
7878

79-
dso_path = f"{os.environ['PERF_BUILDID_DIR']}/{dso_name}/{dso_build_id}{append}"
79+
dso_path = os.environ['PERF_BUILDID_DIR'] + "/" + dso_name + "/" + dso_build_id + append;
8080
# Replace duplicate slash chars to single slash char
8181
dso_path = dso_path.replace('//', '/', 1)
8282
return dso_path
@@ -94,8 +94,8 @@ def read_disam(dso_fname, dso_start, start_addr, stop_addr):
9494
start_addr = start_addr - dso_start;
9595
stop_addr = stop_addr - dso_start;
9696
disasm = [ options.objdump_name, "-d", "-z",
97-
f"--start-address=0x{start_addr:x}",
98-
f"--stop-address=0x{stop_addr:x}" ]
97+
"--start-address="+format(start_addr,"#x"),
98+
"--stop-address="+format(stop_addr,"#x") ]
9999
disasm += [ dso_fname ]
100100
disasm_output = check_output(disasm).decode('utf-8').split('\n')
101101
disasm_cache[addr_range] = disasm_output
@@ -109,12 +109,14 @@ def print_disam(dso_fname, dso_start, start_addr, stop_addr):
109109
m = disasm_re.search(line)
110110
if m is None:
111111
continue
112-
print(f"\t{line}")
112+
print("\t" + line)
113113

114114
def print_sample(sample):
115-
print(f"Sample = {{ cpu: {sample['cpu']:04} addr: 0x{sample['addr']:016x} " \
116-
f"phys_addr: 0x{sample['phys_addr']:016x} ip: 0x{sample['ip']:016x} " \
117-
f"pid: {sample['pid']} tid: {sample['tid']} period: {sample['period']} time: {sample['time']} }}")
115+
print("Sample = { cpu: %04d addr: 0x%016x phys_addr: 0x%016x ip: 0x%016x " \
116+
"pid: %d tid: %d period: %d time: %d }" % \
117+
(sample['cpu'], sample['addr'], sample['phys_addr'], \
118+
sample['ip'], sample['pid'], sample['tid'], \
119+
sample['period'], sample['time']))
118120

119121
def trace_begin():
120122
print('ARM CoreSight Trace Data Assembler Dump')
@@ -131,7 +133,7 @@ def common_start_str(comm, sample):
131133
cpu = sample["cpu"]
132134
pid = sample["pid"]
133135
tid = sample["tid"]
134-
return f"{comm:>16} {pid:>5}/{tid:<5} [{cpu:04}] {sec:9}.{ns:09} "
136+
return "%16s %5u/%-5u [%04u] %9u.%09u " % (comm, pid, tid, cpu, sec, ns)
135137

136138
# This code is copied from intel-pt-events.py for printing source code
137139
# line and symbols.
@@ -171,7 +173,7 @@ def print_srccode(comm, param_dict, sample, symbol, dso):
171173
glb_line_number = line_number
172174
glb_source_file_name = source_file_name
173175

174-
print(f"{start_str}{src_str}")
176+
print(start_str, src_str)
175177

176178
def process_event(param_dict):
177179
global cache_size
@@ -188,7 +190,7 @@ def process_event(param_dict):
188190
symbol = get_optional(param_dict, "symbol")
189191

190192
if (options.verbose == True):
191-
print(f"Event type: {name}")
193+
print("Event type: %s" % name)
192194
print_sample(sample)
193195

194196
# If cannot find dso so cannot dump assembler, bail out
@@ -197,7 +199,7 @@ def process_event(param_dict):
197199

198200
# Validate dso start and end addresses
199201
if ((dso_start == '[unknown]') or (dso_end == '[unknown]')):
200-
print(f"Failed to find valid dso map for dso {dso}")
202+
print("Failed to find valid dso map for dso %s" % dso)
201203
return
202204

203205
if (name[0:12] == "instructions"):
@@ -244,15 +246,15 @@ def process_event(param_dict):
244246

245247
# Handle CS_ETM_TRACE_ON packet if start_addr=0 and stop_addr=4
246248
if (start_addr == 0 and stop_addr == 4):
247-
print(f"CPU{cpu}: CS_ETM_TRACE_ON packet is inserted")
249+
print("CPU%d: CS_ETM_TRACE_ON packet is inserted" % cpu)
248250
return
249251

250252
if (start_addr < int(dso_start) or start_addr > int(dso_end)):
251-
print(f"Start address 0x{start_addr:x} is out of range [ 0x{dso_start:x} .. 0x{dso_end:x} ] for dso {dso}")
253+
print("Start address 0x%x is out of range [ 0x%x .. 0x%x ] for dso %s" % (start_addr, int(dso_start), int(dso_end), dso))
252254
return
253255

254256
if (stop_addr < int(dso_start) or stop_addr > int(dso_end)):
255-
print(f"Stop address 0x{stop_addr:x} is out of range [ 0x{dso_start:x} .. 0x{dso_end:x} ] for dso {dso}")
257+
print("Stop address 0x%x is out of range [ 0x%x .. 0x%x ] for dso %s" % (stop_addr, int(dso_start), int(dso_end), dso))
256258
return
257259

258260
if (options.objdump_name != None):
@@ -267,6 +269,6 @@ def process_event(param_dict):
267269
if path.exists(dso_fname):
268270
print_disam(dso_fname, dso_vm_start, start_addr, stop_addr)
269271
else:
270-
print(f"Failed to find dso {dso} for address range [ 0x{start_addr:x} .. 0x{stop_addr:x} ]")
272+
print("Failed to find dso %s for address range [ 0x%x .. 0x%x ]" % (dso, start_addr, stop_addr))
271273

272274
print_srccode(comm, param_dict, sample, symbol, dso)

0 commit comments

Comments
 (0)