diff --git a/compiler/dbgdwarf.pas b/compiler/dbgdwarf.pas index 7f2769ac8e..7b1e1523e7 100644 --- a/compiler/dbgdwarf.pas +++ b/compiler/dbgdwarf.pas @@ -4279,7 +4279,11 @@ implementation { yes -> length = 0 } current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_lit0))); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_skip))); - current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_16bit_unaligned(3)); + if upperopcodes=16 then + { skip the extra deref_size argument and the division by two of the length } + current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_16bit_unaligned(6)) + else + current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_16bit_unaligned(3)); { no -> load length } if upperopcodes=16 then { for Windows WideString the size is always a DWORD }