Eric Pouech : dbghelp/dwarf: Properly parse line number header for DWARF4 debug info.

Alexandre Julliard julliard at winehq.org
Tue Sep 14 16:00:14 CDT 2021


Module: wine
Branch: master
Commit: e87f3dd5b8dc6276289863cdbe4a4498fc64fa4c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e87f3dd5b8dc6276289863cdbe4a4498fc64fa4c

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Sat Sep 11 10:59:42 2021 +0200

dbghelp/dwarf: Properly parse line number header for DWARF4 debug info.

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dbghelp/dwarf.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 00fa0f6fb60..098576d620f 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -2222,7 +2222,7 @@ static BOOL dwarf2_parse_line_numbers(const dwarf2_section_t* sections,
 {
     dwarf2_traverse_context_t   traverse;
     ULONG_PTR                   length;
-    unsigned                    insn_size, default_stmt;
+    unsigned                    insn_size, version, default_stmt;
     unsigned                    line_range, opcode_base;
     int                         line_base;
     unsigned char               offset_size;
@@ -2256,9 +2256,11 @@ static BOOL dwarf2_parse_line_numbers(const dwarf2_section_t* sections,
         WARN("out of bounds header\n");
         return FALSE;
     }
-    dwarf2_parse_u2(&traverse); /* version */
+    version = dwarf2_parse_u2(&traverse);
     dwarf2_parse_offset(&traverse, offset_size); /* header_len */
     insn_size = dwarf2_parse_byte(&traverse);
+    if (version >= 4)
+        dwarf2_parse_byte(&traverse); /* max_operations_per_instructions */
     default_stmt = dwarf2_parse_byte(&traverse);
     line_base = (signed char)dwarf2_parse_byte(&traverse);
     line_range = dwarf2_parse_byte(&traverse);




More information about the wine-cvs mailing list