From 1408d46ff894ea82360318d671c164eb366acf05 Mon Sep 17 00:00:00 2001 From: Jonatan Antoni Date: Thu, 6 Aug 2026 12:33:46 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Adopt=20schema=20change=20for=20`ctrace-ref?= =?UTF-8?q?`with=20`type:=20dwt=C2=B4=20```=20=20=20-=20ctrace-ref:=20data?= =?UTF-8?q?#1=20=20=20=20=20type:=20dwt=20=20=20=20=20address:=20=20=20=20=20=20size:=20=20=20=20=20=20symbol-file:=20?= =?UTF-8?q?=20=20=20=20=20data-type:=20=20```?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pyts/coresight/generator.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pyts/coresight/generator.py b/src/pyts/coresight/generator.py index fab61d6..b29de79 100644 --- a/src/pyts/coresight/generator.py +++ b/src/pyts/coresight/generator.py @@ -413,15 +413,19 @@ def _copy_data_metadata( if feature != "data" or not isinstance(value, dict): return - for property_name in ("symbol", "symbol-file", "symbol-size", "symbol-type", "label"): - if property_name in value: - ref[property_name] = value[property_name] + symbol_file = value.get("symbol-file") address = _integer(value.get("address")) + size = _integer(value.get("size")) or _integer(value.get("symbol-size")) + data_type = value.get("symbol-type") + if size is not None: + ref["size"] = HexInt(size) + if isinstance(data_type, str): + ref["data-type"] = data_type if isinstance(symbol_file, str): ref["symbol-file"] = symbol_file if address is not None: - ref["symbol-address"] = HexInt(address) + ref["address"] = HexInt(address) def _feature_registers( From 9294e35ebf73022c22b218b36bfbafeaea54d878 Mon Sep 17 00:00:00 2001 From: Jonatan Antoni Date: Thu, 6 Aug 2026 13:25:26 +0200 Subject: [PATCH 2/2] Fixup affected unit tests --- tests/test_trace.py | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/tests/test_trace.py b/tests/test_trace.py index 79855f9..305f83f 100644 --- a/tests/test_trace.py +++ b/tests/test_trace.py @@ -549,11 +549,11 @@ def test_setup_trace_generates_coresight_register_settings( } assert refs_by_name["data#0"]["type"] == "dwt" assert refs_by_name["data#0"]["source"] == 0 - assert refs_by_name["data#0"]["symbol"] == "main" - assert refs_by_name["data#0"]["symbol-address"] == 0x08000100 + assert refs_by_name["data#0"]["address"] == 0x08000100 assert refs_by_name["data#0"]["symbol-file"].endswith("/Blinky.axf") - assert refs_by_name["data#0"]["symbol-size"] == 64 - assert refs_by_name["data#0"]["symbol-type"] == "func" + assert refs_by_name["data#0"]["size"] == 64 + assert refs_by_name["data#0"]["data-type"] == "func" + assert "symbol" not in refs_by_name["data#0"] assert refs_by_name["data#0"]["regs"] == [ {"name": "DWT_COMP0", "value": 0x08000100}, {"name": "DWT_MASK0", "value": 2}, @@ -587,7 +587,7 @@ def test_setup_trace_generates_coresight_register_settings( assert all(ref["stream"] == 1 for ref in refs) output_text = output_path.read_text(encoding="utf-8") assert "address: 0x08000100" in output_text - assert "symbol-address: 0x08000100" in output_text + assert "symbol-address:" not in output_text assert "value: 0x00000103" in output_text assert "mask: 0x00000303" in output_text assert "value: 0x00010001" in output_text @@ -1133,7 +1133,7 @@ def _generate_data_refs( ) -def test_generate_ctrace_run_copies_data_location_metadata_to_ref() -> None: +def test_generate_ctrace_run_copies_data_reference_metadata_to_ref() -> None: _output, refs = _generate_data_refs( [ { @@ -1149,12 +1149,12 @@ def test_generate_ctrace_run_copies_data_location_metadata_to_ref() -> None: Processor.from_core("CM4", None), ) - assert refs[0]["symbol"] == "counter" + assert refs[0]["address"] == 0x20000000 assert refs[0]["symbol-file"] == "counter.axf" - assert refs[0]["symbol-size"] == 8 - assert refs[0]["symbol-type"] == "object" - assert refs[0]["label"] == "Counter value" - assert refs[0]["symbol-address"] == 0x20000000 + assert refs[0]["size"] == 8 + assert refs[0]["data-type"] == "object" + assert "symbol" not in refs[0] + assert "label" not in refs[0] def test_generate_ctrace_run_omits_absent_data_location_metadata() -> None: @@ -1168,6 +1168,8 @@ def test_generate_ctrace_run_omits_absent_data_location_metadata() -> None: for property_name in ( "symbol", "symbol-file", + "size", + "data-type", "symbol-size", "symbol-type", "label", @@ -1193,11 +1195,12 @@ def test_generate_ctrace_run_copies_data_metadata_when_generation_fails() -> Non ) assert "error" in refs[0] - assert refs[0]["symbol"] == "counter" + assert refs[0]["address"] == 0x20000000 assert refs[0]["symbol-file"] == "counter.axf" - assert refs[0]["symbol-size"] == 8 - assert refs[0]["symbol-type"] == "object" - assert refs[0]["label"] == "Counter value" + assert refs[0]["size"] == 3 + assert refs[0]["data-type"] == "object" + assert "symbol" not in refs[0] + assert "label" not in refs[0] def test_generate_ctrace_run_copies_data_metadata_for_unsupported_core() -> None: @@ -1218,11 +1221,11 @@ def test_generate_ctrace_run_copies_data_metadata_for_unsupported_core() -> None assert refs[0]["error"] == ( "core CM0 has no architectural ITM/DWT trace support" ) - assert refs[0]["symbol"] == "counter" assert refs[0]["symbol-file"] == "counter.axf" - assert refs[0]["symbol-size"] == 8 - assert refs[0]["symbol-type"] == "object" - assert refs[0]["label"] == "Counter value" + assert refs[0]["size"] == 8 + assert refs[0]["data-type"] == "object" + assert "symbol" not in refs[0] + assert "label" not in refs[0] @pytest.mark.parametrize( @@ -2410,7 +2413,7 @@ def test_setup_trace_accepts_anonymous_fixed_address( assert result.missing == [] ref = output["ctrace-run"]["ctrace-refs"][0] assert "error" not in ref - assert ref["symbol-address"] == 0x20001000 + assert ref["address"] == 0x20001000 assert ref["regs"][0] == {"name": "DWT_COMP0", "value": 0x20001000} output_text = output_path.read_text(encoding="utf-8") assert "address: 0x20001000" in output_text