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( 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