From c3a4d726e21d75ffd7c0907b85e428480a9ad9a1 Mon Sep 17 00:00:00 2001 From: Alessandro Arzilli Date: Thu, 9 Apr 2020 22:57:44 +0200 Subject: [PATCH] Miscellaneous debug_line improvements (#1999) * dwarf/line: implement DW_LNE_set_discriminator We don't use the discriminator field in any way but we need to at least parse it to support debub_line programs that use it. * dwarf/line: support parsing DWARF4 debug_line sections There is an extra field maximum_operations_per_instruction that is used for VLIW CPUs. We don't support this feature but we have to at least parse the field to not crash. --- _fixtures/zdebug_line_dwarf4 | Bin 0 -> 71710 bytes pkg/dwarf/line/line_parser.go | 8 ++++++- pkg/dwarf/line/line_parser_test.go | 36 +++++++++++++++++++++++++++++ pkg/dwarf/line/state_machine.go | 18 ++++++++++----- 4 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 _fixtures/zdebug_line_dwarf4 diff --git a/_fixtures/zdebug_line_dwarf4 b/_fixtures/zdebug_line_dwarf4 new file mode 100644 index 0000000000000000000000000000000000000000..7e9a016d27201c9b77d7eadd7c18f6df83a1126d GIT binary patch literal 71710 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�L-O&l5)m!H59(${IT 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 literal 0 HcmV?d00001 diff --git a/pkg/dwarf/line/line_parser.go b/pkg/dwarf/line/line_parser.go index d0761993..71dac59f 100644 --- a/pkg/dwarf/line/line_parser.go +++ b/pkg/dwarf/line/line_parser.go @@ -14,6 +14,7 @@ type DebugLinePrologue struct { Version uint16 Length uint32 MinInstrLength uint8 + MaxOpPerInstr uint8 InitialIsStmt uint8 LineBase int8 LineRange uint8 @@ -41,7 +42,7 @@ type DebugLineInfo struct { // if normalizeBackslash is true all backslashes (\) will be converted into forward slashes (/) normalizeBackslash bool - ptrSize int + ptrSize int } type FileEntry struct { @@ -102,6 +103,11 @@ func parseDebugLinePrologue(dbl *DebugLineInfo, buf *bytes.Buffer) { p.Version = binary.LittleEndian.Uint16(buf.Next(2)) p.Length = binary.LittleEndian.Uint32(buf.Next(4)) p.MinInstrLength = uint8(buf.Next(1)[0]) + if p.Version == 4 { + p.MaxOpPerInstr = uint8(buf.Next(1)[0]) + } else { + p.MaxOpPerInstr = 1 + } p.InitialIsStmt = uint8(buf.Next(1)[0]) p.LineBase = int8(buf.Next(1)[0]) p.LineRange = uint8(buf.Next(1)[0]) diff --git a/pkg/dwarf/line/line_parser_test.go b/pkg/dwarf/line/line_parser_test.go index ac3c2405..d2e3ba5b 100644 --- a/pkg/dwarf/line/line_parser_test.go +++ b/pkg/dwarf/line/line_parser_test.go @@ -1,6 +1,7 @@ package line import ( + "compress/zlib" "debug/elf" "debug/macho" "debug/pe" @@ -342,3 +343,38 @@ func TestDebugLineC(t *testing.T) { } } } + +func TestDebugLineDwarf4(t *testing.T) { + p, err := filepath.Abs("../../../_fixtures/zdebug_line_dwarf4") + if err != nil { + t.Fatal("Could not find test data", p, err) + } + fh, err := os.Open(p) + if err != nil { + t.Fatal("Could not open test data", err) + } + defer fh.Close() + fh.Seek(12, 0) // skip "ZLIB" magic signature and length + r, err := zlib.NewReader(fh) + if err != nil { + t.Fatal("Could not open test data (zlib)", err) + } + data, err := ioutil.ReadAll(r) + if err != nil { + t.Fatal("Could not read test data", err) + } + + debugLines := ParseAll(data, nil, 0, true, 8) + + for _, dbl := range debugLines { + if dbl.Prologue.Version == 4 { + if dbl.Prologue.LineBase != -5 { + t.Errorf("Wrong LineBase %d\n", dbl.Prologue.LineBase) + } + if dbl.Prologue.LineRange != 14 { + t.Errorf("Wrong LineRange %d\n", dbl.Prologue.LineRange) + } + } + } + +} diff --git a/pkg/dwarf/line/state_machine.go b/pkg/dwarf/line/state_machine.go index b92f8849..c307a106 100644 --- a/pkg/dwarf/line/state_machine.go +++ b/pkg/dwarf/line/state_machine.go @@ -77,9 +77,10 @@ const ( // Extended opcodes const ( - DW_LINE_end_sequence = 1 - DW_LINE_set_address = 2 - DW_LINE_define_file = 3 + DW_LINE_end_sequence = 1 + DW_LINE_set_address = 2 + DW_LINE_define_file = 3 + DW_LINE_set_discriminator = 4 ) var standardopcodes = map[byte]opcodefn{ @@ -98,9 +99,10 @@ var standardopcodes = map[byte]opcodefn{ } var extendedopcodes = map[byte]opcodefn{ - DW_LINE_end_sequence: endsequence, - DW_LINE_set_address: setaddress, - DW_LINE_define_file: definefile, + DW_LINE_end_sequence: endsequence, + DW_LINE_set_address: setaddress, + DW_LINE_define_file: definefile, + DW_LINE_set_discriminator: setdiscriminator, } func newStateMachine(dbl *DebugLineInfo, instructions []byte, ptrSize int) *StateMachine { @@ -548,6 +550,10 @@ func setaddress(sm *StateMachine, buf *bytes.Buffer) { sm.address = addr + sm.dbl.staticBase } +func setdiscriminator(sm *StateMachine, buf *bytes.Buffer) { + _, _ = util.DecodeULEB128(buf) +} + func definefile(sm *StateMachine, buf *bytes.Buffer) { entry := readFileEntry(sm.dbl, sm.buf, false) sm.definedFiles = append(sm.definedFiles, entry) -- GitLab