kernel: generate symbol tables

In preparation for printing file+function names in backtraces, add
support for generating and linking three tables into the kernel:

- dbg_sym_table: a table consisting of <uint32_t addr_offset, uint32_t
  function_name_offset, uint32_t file_name_offset>, being ordered by
  offset.
- dbg_fn_name_table: a table consisting of packed NULL terminated
  strings, which the dbg_sym_table points into.
- dbg_file_name_table: a table consisting of packed NULL terminated
  strings, which the dbg_sym_table points into.
This commit is contained in:
Matheus
2026-10-08 23:36:37 -03:00
parent 91ec85d8ca
commit 7ac6681ea8
2 changed files with 209 additions and 0 deletions
+19
View File
@@ -68,6 +68,25 @@ SECTIONS
*(.bss .bss.*)
} :data
. = ALIGN(4);
.dbg_sym_table : {
dbg_sym_table = .;
KEEP(*(.dbg_sym_table));
dbg_sym_table_end = .;
} :data
.dbg_fn_name_table : {
dbg_fn_name_table = .;
KEEP(*(.dbg_fn_name_table));
dbg_fn_name_table_end = .;
} :data
.dbg_file_name_table : {
dbg_file_name_table = .;
KEEP(*(.dbg_file_name_table));
dbg_file_name_table_end = .;
} :data
. = ALIGN(4K);
_data_end = .;
}