From e2729157e478878198701fd423f60469333f03bb Mon Sep 17 00:00:00 2001 From: Max Logaev Date: Tue, 13 Jan 2026 18:00:02 +0300 Subject: [PATCH] map2dbg: Implemented Signed-off-by: Max Logaev --- tools/map2dbg.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tools/map2dbg.py diff --git a/tools/map2dbg.py b/tools/map2dbg.py new file mode 100644 index 0000000000..4e2d034ffc --- /dev/null +++ b/tools/map2dbg.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +# SPDX-License-Identifier: GPL-2.0 + +# Script for converting GNU LD map file +# into symbols for KolibriOS debuger (mtdbg), + +# Copyright (C) 2025 KolibriOS team +# Author: Maxim Logaev + +import sys +import re + +if len(sys.argv) < 2: + print("Usage: python3 map2dbg.py ") + sys.exit(1) + +map_file = open(sys.argv[1], 'r') +dbg_file = open(sys.argv[2], 'w') + +# Find .text section +line = map_file.readline() + +while (line): + if line.startswith(".text"): + break + line = map_file.readline() + +# Extract symbols from .text section +line = map_file.readline() + +while (line): + + # .text section is ended + if not line.startswith(" "): + break + + match = re.search(r'^\s+0x([0-9a-fA-F]+)\s+(\S+)\s*$', line) + if match: + addr = match.group(1) + name = match.group(2) + dbg_file.write(f"0x{addr} {name}\n") + + line = map_file.readline() + +map_file.close() +dbg_file.close()