summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-05-11 15:38:56 +0000
committersvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-05-11 15:38:56 +0000
commit6c8d77e1bd004fe71cd88a4383f5739b880c668c (patch)
tree7dfe8bc0dea45ed117fa7b7efc395c26579f96f6
parentad1df93dc8aad398d337f8009132c268dd117f87 (diff)
downloadfpc-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.pas8
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)));