mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 10:39:18 +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
|
else
|
||||||
append_entry(DW_TAG_structure_type,true,[]);
|
append_entry(DW_TAG_structure_type,true,[]);
|
||||||
append_attribute(DW_AT_byte_size,DW_FORM_udata,[tobjectsymtable(def.symtable).datasize]);
|
append_attribute(DW_AT_byte_size,DW_FORM_udata,[tobjectsymtable(def.symtable).datasize]);
|
||||||
// The pointer to the class-structure is hidden. The debug-information
|
{ 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,
|
||||||
// does not contain an implicit pointer, but the data-adress is dereferenced here.
|
see issue #36017 }
|
||||||
// In case of a nil-pointer, report the class as being unallocated.
|
if not(is_object(def) or is_cppclass(def)) then
|
||||||
append_block1(DW_AT_allocated,2);
|
begin
|
||||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_push_object_address)));
|
{ The pointer to the class-structure is hidden. The debug-information
|
||||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_deref)));
|
does not contain an implicit pointer, but the data-adress is dereferenced here.
|
||||||
append_block1(DW_AT_data_location,2);
|
In case of a nil-pointer, report the class as being unallocated.
|
||||||
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_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;
|
finish_entry;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -170,6 +170,7 @@ interface
|
|||||||
constructor ppuload(ppufile:tcompilerppufile);
|
constructor ppuload(ppufile:tcompilerppufile);
|
||||||
function getcopy : tstoreddef;override;
|
function getcopy : tstoreddef;override;
|
||||||
function GetTypeName:string;override;
|
function GetTypeName:string;override;
|
||||||
|
function alignment : shortint;override;
|
||||||
{ do not override this routine in platform-specific subclasses,
|
{ do not override this routine in platform-specific subclasses,
|
||||||
override ppuwrite_platform instead }
|
override ppuwrite_platform instead }
|
||||||
procedure ppuwrite(ppufile:tcompilerppufile);override;final;
|
procedure ppuwrite(ppufile:tcompilerppufile);override;final;
|
||||||
@ -3292,6 +3293,12 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function tvariantdef.alignment: shortint;
|
||||||
|
begin
|
||||||
|
result:=search_system_type('TVARDATA').typedef.alignment;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tvariantdef.ppuwrite(ppufile:tcompilerppufile);
|
procedure tvariantdef.ppuwrite(ppufile:tcompilerppufile);
|
||||||
begin
|
begin
|
||||||
inherited ppuwrite(ppufile);
|
inherited ppuwrite(ppufile);
|
||||||
|
@ -1268,7 +1268,18 @@ Begin
|
|||||||
P:=Pos(FormatSettings.DecimalSeparator,S);
|
P:=Pos(FormatSettings.DecimalSeparator,S);
|
||||||
If (P<>0) Then
|
If (P<>0) Then
|
||||||
S[P] := '.';
|
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);
|
Result:=(E=0);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
@ -1328,7 +1339,7 @@ Begin
|
|||||||
end;
|
end;
|
||||||
{ on x87, a floating point exception may be pending in case of an invalid
|
{ on x87, a floating point exception may be pending in case of an invalid
|
||||||
input value -> trigger it now }
|
input value -> trigger it now }
|
||||||
{$ifdef cpux86}
|
{$if defined(cpui386) or (defined(cpux86_64) and not(defined(win64))) or defined(cpui8086)}
|
||||||
asm
|
asm
|
||||||
fwait
|
fwait
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user