mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 00:39:34 +02:00
* fix for the encoding of dwarf debug info of local variables, whose base is a
register that has a dwarf register number higher than 31 git-svn-id: trunk@39099 -
This commit is contained in:
parent
e5de7d0eac
commit
5417eb043d
@ -2529,9 +2529,19 @@ implementation
|
||||
if sym.localloc.loc<> LOC_INVALID then
|
||||
begin
|
||||
dreg:=dwarf_reg(sym.localloc.reference.base);
|
||||
templist.concat(tai_const.create_8bit(ord(DW_OP_breg0)+dreg));
|
||||
templist.concat(tai_const.create_sleb128bit(sym.localloc.reference.offset+offset));
|
||||
blocksize:=1+Lengthsleb128(sym.localloc.reference.offset);
|
||||
if dreg<=31 then
|
||||
begin
|
||||
templist.concat(tai_const.create_8bit(ord(DW_OP_breg0)+dreg));
|
||||
templist.concat(tai_const.create_sleb128bit(sym.localloc.reference.offset+offset));
|
||||
blocksize:=1+Lengthsleb128(sym.localloc.reference.offset);
|
||||
end
|
||||
else
|
||||
begin
|
||||
templist.concat(tai_const.create_8bit(ord(DW_OP_bregx)));
|
||||
templist.concat(tai_const.create_uleb128bit(dreg));
|
||||
templist.concat(tai_const.create_sleb128bit(sym.localloc.reference.offset));
|
||||
blocksize:=1+Lengthuleb128(dreg)+LengthSleb128(sym.localloc.reference.offset);
|
||||
end;
|
||||
{$ifndef gdb_supports_DW_AT_variable_parameter}
|
||||
{ Parameters which are passed by reference. (var and the like)
|
||||
Hide the reference-pointer and dereference the pointer
|
||||
|
Loading…
Reference in New Issue
Block a user