mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 00:39:34 +02:00
-- Zusammenführen von r43183 in ».«:
U compiler/dbgdwarf.pas -- Aufzeichnung der Informationen für Zusammenführung von r43183 in ».«: U . -- Zusammenführen von r47286 in ».«: U compiler/symdef.pas -- Aufzeichnung der Informationen für Zusammenführung von r47286 in ».«: G . -- Zusammenführen von r44070 in ».«: U rtl/objpas/sysutils/sysstr.inc -- Aufzeichnung der Informationen für Zusammenführung von r44070 in ».«: G . git-svn-id: branches/fixes_3_2@47912 -
This commit is contained in:
parent
643d7c4d02
commit
06a0e48958
@ -4401,15 +4401,21 @@ implementation
|
||||
else
|
||||
append_entry(DW_TAG_structure_type,true,[]);
|
||||
append_attribute(DW_AT_byte_size,DW_FORM_udata,[tobjectsymtable(def.symtable).datasize]);
|
||||
// The pointer to the class-structure is hidden. The debug-information
|
||||
// does not contain an implicit pointer, but the data-adress is dereferenced here.
|
||||
// In case of a nil-pointer, report the class as being unallocated.
|
||||
append_block1(DW_AT_allocated,2);
|
||||
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)));
|
||||
append_block1(DW_AT_data_location,2);
|
||||
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)));
|
||||
{ an old style object and a cpp class are accessed directly, so we do not need DW_AT_allocated and DW_AT_data_location tags,
|
||||
see issue #36017 }
|
||||
if not(is_object(def) or is_cppclass(def)) then
|
||||
begin
|
||||
{ The pointer to the class-structure is hidden. The debug-information
|
||||
does not contain an implicit pointer, but the data-adress is dereferenced here.
|
||||
In case of a nil-pointer, report the class as being unallocated.
|
||||
}
|
||||
append_block1(DW_AT_allocated,2);
|
||||
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)));
|
||||
append_block1(DW_AT_data_location,2);
|
||||
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)));
|
||||
end;
|
||||
finish_entry;
|
||||
end;
|
||||
|
||||
|
@ -170,6 +170,7 @@ interface
|
||||
constructor ppuload(ppufile:tcompilerppufile);
|
||||
function getcopy : tstoreddef;override;
|
||||
function GetTypeName:string;override;
|
||||
function alignment : shortint;override;
|
||||
{ do not override this routine in platform-specific subclasses,
|
||||
override ppuwrite_platform instead }
|
||||
procedure ppuwrite(ppufile:tcompilerppufile);override;final;
|
||||
@ -3292,6 +3293,12 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
function tvariantdef.alignment: shortint;
|
||||
begin
|
||||
result:=search_system_type('TVARDATA').typedef.alignment;
|
||||
end;
|
||||
|
||||
|
||||
procedure tvariantdef.ppuwrite(ppufile:tcompilerppufile);
|
||||
begin
|
||||
inherited ppuwrite(ppufile);
|
||||
|
@ -1268,7 +1268,18 @@ Begin
|
||||
P:=Pos(FormatSettings.DecimalSeparator,S);
|
||||
If (P<>0) Then
|
||||
S[P] := '.';
|
||||
Val(trim(S),Value,E);
|
||||
try
|
||||
Val(trim(S),Value,E);
|
||||
{ on x87, a floating point exception may be pending in case of an invalid
|
||||
input value -> trigger it now }
|
||||
{$if defined(cpui386) or (defined(cpux86_64) and not(defined(win64))) or defined(cpui8086)}
|
||||
asm
|
||||
fwait
|
||||
end;
|
||||
{$endif}
|
||||
except
|
||||
E:=1;
|
||||
end;
|
||||
Result:=(E=0);
|
||||
End;
|
||||
|
||||
@ -1328,7 +1339,7 @@ Begin
|
||||
end;
|
||||
{ on x87, a floating point exception may be pending in case of an invalid
|
||||
input value -> trigger it now }
|
||||
{$ifdef cpux86}
|
||||
{$if defined(cpui386) or (defined(cpux86_64) and not(defined(win64))) or defined(cpui8086)}
|
||||
asm
|
||||
fwait
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user