diff options
author | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-05-11 15:38:56 +0000 |
---|---|---|
committer | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-05-11 15:38:56 +0000 |
commit | 6c8d77e1bd004fe71cd88a4383f5739b880c668c (patch) | |
tree | 7dfe8bc0dea45ed117fa7b7efc395c26579f96f6 | |
parent | ad1df93dc8aad398d337f8009132c268dd117f87 (diff) | |
download | fpc-6c8d77e1bd004fe71cd88a4383f5739b880c668c.tar.gz |
* fix for Mantis #35386: use the correct size for the string's length (SizeInt for Ansi-/UnicodeString and DWord for WideString)
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42038 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | compiler/dbgdwarf.pas | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/dbgdwarf.pas b/compiler/dbgdwarf.pas index 8754c98fdd..aae4c348c9 100644 --- a/compiler/dbgdwarf.pas +++ b/compiler/dbgdwarf.pas @@ -4275,7 +4275,7 @@ implementation DW_AT_upper_bound,DW_FORM_block1,upperopcodes ]); - { high(string) is stored sizeof(ptrint) bytes before the string data } + { high(string) is stored sizeof(sizeint) bytes before the string data } current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_push_object_address))); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_deref))); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_dup))); @@ -4287,7 +4287,11 @@ implementation 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)); { no -> load length } - current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_lit0)+sizeof(ptrint))); + if upperopcodes=15 then + { for Windows WideString the size is always a DWORD } + current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_lit4))) + else + current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_lit0)+sizesinttype.size)); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_minus))); current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_deref))); |