From 0de366f7d6de4b2ad0533a41834e9251d4469e04 Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Wed, 15 Nov 2023 22:50:10 -0500 Subject: [PATCH] Add column support for libdwarf --- src/symbols/symbols_with_libdwarf.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/symbols/symbols_with_libdwarf.cpp b/src/symbols/symbols_with_libdwarf.cpp index d58158c..62dffe4 100644 --- a/src/symbols/symbols_with_libdwarf.cpp +++ b/src/symbols/symbols_with_libdwarf.cpp @@ -70,7 +70,8 @@ namespace libdwarf { // int i; Dwarf_Line line; optional path; - optional line_number; + optional line_number; + optional column_number; line_entry(Dwarf_Addr low, Dwarf_Line line) : low(low), line(line) {} }; @@ -664,12 +665,21 @@ namespace libdwarf { // If the vector has been empty this can happen if(table_it != line_entries.end()) { Dwarf_Line line = table_it->line; + // line number if(!table_it->line_number) { Dwarf_Unsigned line_number = 0; VERIFY(wrap(dwarf_lineno, line, &line_number) == DW_DLV_OK); table_it->line_number = static_cast(line_number); } frame.line = table_it->line_number.unwrap(); + // column number + if(!table_it->column_number) { + Dwarf_Unsigned column_number = 0; + VERIFY(wrap(dwarf_lineoff_b, line, &column_number) == DW_DLV_OK); + table_it->column_number = static_cast(column_number); + } + frame.column = table_it->column_number.unwrap(); + // filename if(!table_it->path) { char* filename = nullptr; VERIFY(wrap(dwarf_linesrc, line, &filename) == DW_DLV_OK);