mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-03 02:23:40 +02:00
635 lines
27 KiB
ObjectPascal
635 lines
27 KiB
ObjectPascal
unit TestDwarfSetupBasic;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$IF FPC_FULLVERSION>=20701}
|
|
{$OPTIMIZATION NOREMOVEEMPTYPROCS}
|
|
{$OPTIMIZATION NOORDERFIELDS}
|
|
{$ENDIF}
|
|
{$OPTIMIZATION OFF}
|
|
{$A2}
|
|
|
|
(*
|
|
Data generated from testdata\dwarfsetupbasic.lpr
|
|
*)
|
|
|
|
interface
|
|
|
|
uses
|
|
FpDbgDwarfConst,
|
|
TestHelperClasses;
|
|
|
|
const
|
|
TTestSetupBasicProcMainAddr = $00400000;
|
|
|
|
type
|
|
|
|
{%region Types defined in the DWARF }
|
|
TEnum0 = (e0a);
|
|
TEnum1 = (e1a, e1b, e1c);
|
|
TEnum2 = (e2a, e2b, e2c, e2d, e2e, e2f, e2g, e2h, e2i);
|
|
TEnum3 = (e3a, e3b, e3c, e3d, e3e, e3f, e3g, e3h,
|
|
e3i, e3j, e3k, e3l, e3m, e3n, e3o, e3p,
|
|
e3q);
|
|
TEnumX = (eXa, eXb := 10, eXc := 3);
|
|
|
|
TSet0 = Set of TEnum0;
|
|
TSet1 = Set of TEnum1;
|
|
TSet2 = Set of TEnum2;
|
|
TSet3 = Set of TEnum3;
|
|
TSetX1 = Set of (s1a, s1b, s1c);
|
|
|
|
{%endregion}
|
|
|
|
type
|
|
{ TTestDwarfSetupBasic }
|
|
|
|
TTestLoaderSetupBasic = class(TTestDummyImageLoader)
|
|
public
|
|
constructor Create; override;
|
|
procedure PoissonTestFrame;
|
|
public
|
|
SectionDbgInfo: TTestDummySectionInfoEntries;
|
|
|
|
Unitdwarfsetupbasic_lpr_0, VarVARENUM0_1, VarVARENUM1_2, VarVARENUM2_3, VarVARENUM3_4, VarVARENUMX_5, VarVARSET0_6, VarVARSET1_7, VarVARSET2_8, VarVARSET3_9, VarVARSETX1_10, Progmain_11, TypeDeclTENUM0_12, TypeTENUM0_13, TypeE0A_14, Type_15, TypeDeclTENUM1_16, TypeTENUM1_17, TypeE1A_18, TypeE1B_19, TypeE1C_20, Type_21, TypeDeclTENUM2_22, TypeTENUM2_23, TypeE2A_24, TypeE2B_25, TypeE2C_26, TypeE2D_27, TypeE2E_28, TypeE2F_29, TypeE2G_30, TypeE2H_31, TypeE2I_32, Type_33, TypeDeclTENUM3_34, TypeTENUM3_35, TypeE3A_36, TypeE3B_37, TypeE3C_38, TypeE3D_39, TypeE3E_40, TypeE3F_41, TypeE3G_42, TypeE3H_43, TypeE3I_44, TypeE3J_45, TypeE3K_46, TypeE3L_47, TypeE3M_48, TypeE3N_49, TypeE3O_50, TypeE3P_51, TypeE3Q_52, Type_53, TypeDeclTENUMX_54, TypeTENUMX_55, TypeEXA_56, TypeEXB_57, TypeEXC_58, Type_59, TypeDeclTSET0_60, TypeTSET0_61, Type_62, Type_63, TypeDeclTSET1_64, TypeTSET1_65, Type_66, Type_67, TypeDeclTSET2_68, TypeTSET2_69, Type_70, Type_71, TypeDeclTSET3_72, TypeTSET3_73, Type_74, Type_75, TypeDeclTSETX1_76, TypeTSETX1_77, Type_78, Type_79, Type_80, TypeS1A_81, TypeS1B_82, TypeS1C_83, Type_84
|
|
: TTestDwarfInfoEntry;
|
|
|
|
// global vars
|
|
GlobalVar: record
|
|
PAD_Before: QWord; // padding will be filled with bad data
|
|
|
|
VarEnum0, PAD_VarEnum0: TEnum0;
|
|
VarEnum1, PAD_VarEnum1: TEnum1;
|
|
VarEnum2, PAD_VarEnum2: TEnum2;
|
|
VarEnum3, PAD_VarEnum3: TEnum3;
|
|
VarEnumX, PAD_VarEnumX: TEnumX;
|
|
|
|
VarSet0, PAD_VarSet0: TSet0;
|
|
VarSet1, PAD_VarSet1: TSet1;
|
|
VarSet2, PAD_VarSet2: TSet2;
|
|
VarSet3, PAD_VarSet3: TSet3;
|
|
VarSetX1, PAD_VarSetX1: TSetX1;
|
|
|
|
PAD_After: QWord;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{ TTestLoaderSetup1 }
|
|
|
|
constructor TTestLoaderSetupBasic.Create;
|
|
//var
|
|
// StackOffs: LongInt;
|
|
begin
|
|
inherited Create;
|
|
PoissonTestFrame;
|
|
|
|
SectionDbgInfo := TestImgReader.TestSection['.debug_info'] as TTestDummySectionInfoEntries;
|
|
Unitdwarfsetupbasic_lpr_0 := SectionDbgInfo.GetFirstInfoEntryObj;
|
|
|
|
// Generated with fpc 2.6.2 32 bit win
|
|
|
|
Unitdwarfsetupbasic_lpr_0.Tag := DW_TAG_compile_unit;
|
|
Unitdwarfsetupbasic_lpr_0.Children := 1;
|
|
Unitdwarfsetupbasic_lpr_0.Add(DW_AT_name, DW_FORM_string, 'dwarfsetupbasic.lpr'+#0);
|
|
Unitdwarfsetupbasic_lpr_0.Add(DW_AT_producer, DW_FORM_string, 'Free Pascal 2.6.2 2013/02/16'+#0);
|
|
Unitdwarfsetupbasic_lpr_0.Add(DW_AT_comp_dir, DW_FORM_string, 'B:/lazarus_latest/components/fpdebug/test/testdata/'+#0);
|
|
Unitdwarfsetupbasic_lpr_0.Add(DW_AT_language, DW_FORM_data1, [$09]);
|
|
Unitdwarfsetupbasic_lpr_0.Add(DW_AT_identifier_case, DW_FORM_data1, [$03]);
|
|
Unitdwarfsetupbasic_lpr_0.Add(DW_AT_stmt_list, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
Unitdwarfsetupbasic_lpr_0.AddAddr(DW_AT_low_pc, DW_FORM_addr, $00400000);
|
|
Unitdwarfsetupbasic_lpr_0.AddAddr(DW_AT_high_pc, DW_FORM_addr, $004FFFFF);
|
|
|
|
VarVARENUM0_1 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARENUM0_1.Tag := DW_TAG_variable;
|
|
VarVARENUM0_1.Children := 0;
|
|
VarVARENUM0_1.Add(DW_AT_name, DW_FORM_string, 'VARENUM0'+#0);
|
|
VarVARENUM0_1.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarENUM0)])); // $03, $00, $90, $40, $00
|
|
VarVARENUM0_1.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM0_12); // $55, $01, $00, $00
|
|
|
|
VarVARENUM1_2 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARENUM1_2.Tag := DW_TAG_variable;
|
|
VarVARENUM1_2.Children := 0;
|
|
VarVARENUM1_2.Add(DW_AT_name, DW_FORM_string, 'VARENUM1'+#0);
|
|
VarVARENUM1_2.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarENUM1)])); // $03, $10, $90, $40, $00
|
|
VarVARENUM1_2.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM1_16); // $79, $01, $00, $00
|
|
|
|
VarVARENUM2_3 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARENUM2_3.Tag := DW_TAG_variable;
|
|
VarVARENUM2_3.Children := 0;
|
|
VarVARENUM2_3.Add(DW_AT_name, DW_FORM_string, 'VARENUM2'+#0);
|
|
VarVARENUM2_3.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarENUM2)])); // $03, $20, $90, $40, $00
|
|
VarVARENUM2_3.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM2_22); // $AF, $01, $00, $00
|
|
|
|
VarVARENUM3_4 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARENUM3_4.Tag := DW_TAG_variable;
|
|
VarVARENUM3_4.Children := 0;
|
|
VarVARENUM3_4.Add(DW_AT_name, DW_FORM_string, 'VARENUM3'+#0);
|
|
VarVARENUM3_4.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarENUM3)])); // $03, $30, $90, $40, $00
|
|
VarVARENUM3_4.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM3_34); // $1B, $02, $00, $00
|
|
|
|
VarVARENUMX_5 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARENUMX_5.Tag := DW_TAG_variable;
|
|
VarVARENUMX_5.Children := 0;
|
|
VarVARENUMX_5.Add(DW_AT_name, DW_FORM_string, 'VARENUMX'+#0);
|
|
VarVARENUMX_5.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarENUMX)])); // $03, $40, $90, $40, $00
|
|
VarVARENUMX_5.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUMX_54); // $CF, $02, $00, $00
|
|
|
|
VarVARSET0_6 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARSET0_6.Tag := DW_TAG_variable;
|
|
VarVARSET0_6.Children := 0;
|
|
VarVARSET0_6.Add(DW_AT_name, DW_FORM_string, 'VARSET0'+#0);
|
|
VarVARSET0_6.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarSET0)])); // $03, $50, $90, $40, $00
|
|
VarVARSET0_6.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET0_60); // $05, $03, $00, $00
|
|
|
|
VarVARSET1_7 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARSET1_7.Tag := DW_TAG_variable;
|
|
VarVARSET1_7.Children := 0;
|
|
VarVARSET1_7.Add(DW_AT_name, DW_FORM_string, 'VARSET1'+#0);
|
|
VarVARSET1_7.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarSET1)])); // $03, $60, $90, $40, $00
|
|
VarVARSET1_7.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET1_64); // $29, $03, $00, $00
|
|
|
|
VarVARSET2_8 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARSET2_8.Tag := DW_TAG_variable;
|
|
VarVARSET2_8.Children := 0;
|
|
VarVARSET2_8.Add(DW_AT_name, DW_FORM_string, 'VARSET2'+#0);
|
|
VarVARSET2_8.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarSET2)])); // $03, $70, $90, $40, $00
|
|
VarVARSET2_8.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET2_68); // $4D, $03, $00, $00
|
|
|
|
VarVARSET3_9 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARSET3_9.Tag := DW_TAG_variable;
|
|
VarVARSET3_9.Children := 0;
|
|
VarVARSET3_9.Add(DW_AT_name, DW_FORM_string, 'VARSET3'+#0);
|
|
VarVARSET3_9.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarSET3)])); // $03, $80, $90, $40, $00
|
|
VarVARSET3_9.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET3_72); // $71, $03, $00, $00
|
|
|
|
VarVARSETX1_10 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
VarVARSETX1_10.Tag := DW_TAG_variable;
|
|
VarVARSETX1_10.Children := 0;
|
|
VarVARSETX1_10.Add(DW_AT_name, DW_FORM_string, 'VARSETX1'+#0);
|
|
VarVARSETX1_10.Add(DW_AT_location, DW_FORM_block1, BytesLen1([DW_OP_addr, AddrB(@GlobalVar.VarSETX1)])); // $03, $90, $90, $40, $00
|
|
VarVARSETX1_10.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSETX1_76); // $95, $03, $00, $00
|
|
|
|
Progmain_11 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Progmain_11.Tag := DW_TAG_subprogram;
|
|
Progmain_11.Children := 0;
|
|
Progmain_11.Add(DW_AT_name, DW_FORM_string, 'main'+#0);
|
|
Progmain_11.Add(DW_AT_prototyped, DW_FORM_flag, [$01]);
|
|
Progmain_11.Add(DW_AT_calling_convention, DW_FORM_data1, [$41]);
|
|
Progmain_11.Add(DW_AT_external, DW_FORM_flag, [$01]);
|
|
Progmain_11.AddAddr(DW_AT_low_pc, DW_FORM_addr, $00400000);
|
|
Progmain_11.AddAddr(DW_AT_high_pc, DW_FORM_addr, $00400FFF);
|
|
|
|
TypeDeclTENUM0_12 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTENUM0_12.Tag := DW_TAG_typedef;
|
|
TypeDeclTENUM0_12.Children := 0;
|
|
TypeDeclTENUM0_12.Add(DW_AT_name, DW_FORM_string, 'TENUM0'+#0);
|
|
TypeDeclTENUM0_12.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTENUM0_13); // $61, $01, $00, $00
|
|
|
|
TypeTENUM0_13 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTENUM0_13.Tag := DW_TAG_enumeration_type;
|
|
TypeTENUM0_13.Children := 1;
|
|
TypeTENUM0_13.Add(DW_AT_name, DW_FORM_string, 'TENUM0'+#0);
|
|
TypeTENUM0_13.Add(DW_AT_byte_size, DW_FORM_data1, [$04]);
|
|
|
|
TypeE0A_14 := TypeTENUM0_13.GetNewChild;
|
|
TypeE0A_14.Tag := DW_TAG_enumerator;
|
|
TypeE0A_14.Children := 0;
|
|
TypeE0A_14.Add(DW_AT_name, DW_FORM_string, 'E0A'+#0);
|
|
TypeE0A_14.Add(DW_AT_const_value, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
|
|
Type_15 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_15.Tag := DW_TAG_reference_type;
|
|
Type_15.Children := 0;
|
|
Type_15.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM0_12); // $55, $01, $00, $00
|
|
|
|
TypeDeclTENUM1_16 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTENUM1_16.Tag := DW_TAG_typedef;
|
|
TypeDeclTENUM1_16.Children := 0;
|
|
TypeDeclTENUM1_16.Add(DW_AT_name, DW_FORM_string, 'TENUM1'+#0);
|
|
TypeDeclTENUM1_16.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTENUM1_17); // $85, $01, $00, $00
|
|
|
|
TypeTENUM1_17 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTENUM1_17.Tag := DW_TAG_enumeration_type;
|
|
TypeTENUM1_17.Children := 1;
|
|
TypeTENUM1_17.Add(DW_AT_name, DW_FORM_string, 'TENUM1'+#0);
|
|
TypeTENUM1_17.Add(DW_AT_byte_size, DW_FORM_data1, [$04]);
|
|
|
|
TypeE1A_18 := TypeTENUM1_17.GetNewChild;
|
|
TypeE1A_18.Tag := DW_TAG_enumerator;
|
|
TypeE1A_18.Children := 0;
|
|
TypeE1A_18.Add(DW_AT_name, DW_FORM_string, 'E1A'+#0);
|
|
TypeE1A_18.Add(DW_AT_const_value, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
|
|
TypeE1B_19 := TypeTENUM1_17.GetNewChild;
|
|
TypeE1B_19.Tag := DW_TAG_enumerator;
|
|
TypeE1B_19.Children := 0;
|
|
TypeE1B_19.Add(DW_AT_name, DW_FORM_string, 'E1B'+#0);
|
|
TypeE1B_19.Add(DW_AT_const_value, DW_FORM_data4, [$01, $00, $00, $00]);
|
|
|
|
TypeE1C_20 := TypeTENUM1_17.GetNewChild;
|
|
TypeE1C_20.Tag := DW_TAG_enumerator;
|
|
TypeE1C_20.Children := 0;
|
|
TypeE1C_20.Add(DW_AT_name, DW_FORM_string, 'E1C'+#0);
|
|
TypeE1C_20.Add(DW_AT_const_value, DW_FORM_data4, [$02, $00, $00, $00]);
|
|
|
|
Type_21 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_21.Tag := DW_TAG_reference_type;
|
|
Type_21.Children := 0;
|
|
Type_21.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM1_16); // $79, $01, $00, $00
|
|
|
|
TypeDeclTENUM2_22 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTENUM2_22.Tag := DW_TAG_typedef;
|
|
TypeDeclTENUM2_22.Children := 0;
|
|
TypeDeclTENUM2_22.Add(DW_AT_name, DW_FORM_string, 'TENUM2'+#0);
|
|
TypeDeclTENUM2_22.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTENUM2_23); // $BB, $01, $00, $00
|
|
|
|
TypeTENUM2_23 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTENUM2_23.Tag := DW_TAG_enumeration_type;
|
|
TypeTENUM2_23.Children := 1;
|
|
TypeTENUM2_23.Add(DW_AT_name, DW_FORM_string, 'TENUM2'+#0);
|
|
TypeTENUM2_23.Add(DW_AT_byte_size, DW_FORM_data1, [$04]);
|
|
|
|
TypeE2A_24 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2A_24.Tag := DW_TAG_enumerator;
|
|
TypeE2A_24.Children := 0;
|
|
TypeE2A_24.Add(DW_AT_name, DW_FORM_string, 'E2A'+#0);
|
|
TypeE2A_24.Add(DW_AT_const_value, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
|
|
TypeE2B_25 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2B_25.Tag := DW_TAG_enumerator;
|
|
TypeE2B_25.Children := 0;
|
|
TypeE2B_25.Add(DW_AT_name, DW_FORM_string, 'E2B'+#0);
|
|
TypeE2B_25.Add(DW_AT_const_value, DW_FORM_data4, [$01, $00, $00, $00]);
|
|
|
|
TypeE2C_26 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2C_26.Tag := DW_TAG_enumerator;
|
|
TypeE2C_26.Children := 0;
|
|
TypeE2C_26.Add(DW_AT_name, DW_FORM_string, 'E2C'+#0);
|
|
TypeE2C_26.Add(DW_AT_const_value, DW_FORM_data4, [$02, $00, $00, $00]);
|
|
|
|
TypeE2D_27 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2D_27.Tag := DW_TAG_enumerator;
|
|
TypeE2D_27.Children := 0;
|
|
TypeE2D_27.Add(DW_AT_name, DW_FORM_string, 'E2D'+#0);
|
|
TypeE2D_27.Add(DW_AT_const_value, DW_FORM_data4, [$03, $00, $00, $00]);
|
|
|
|
TypeE2E_28 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2E_28.Tag := DW_TAG_enumerator;
|
|
TypeE2E_28.Children := 0;
|
|
TypeE2E_28.Add(DW_AT_name, DW_FORM_string, 'E2E'+#0);
|
|
TypeE2E_28.Add(DW_AT_const_value, DW_FORM_data4, [$04, $00, $00, $00]);
|
|
|
|
TypeE2F_29 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2F_29.Tag := DW_TAG_enumerator;
|
|
TypeE2F_29.Children := 0;
|
|
TypeE2F_29.Add(DW_AT_name, DW_FORM_string, 'E2F'+#0);
|
|
TypeE2F_29.Add(DW_AT_const_value, DW_FORM_data4, [$05, $00, $00, $00]);
|
|
|
|
TypeE2G_30 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2G_30.Tag := DW_TAG_enumerator;
|
|
TypeE2G_30.Children := 0;
|
|
TypeE2G_30.Add(DW_AT_name, DW_FORM_string, 'E2G'+#0);
|
|
TypeE2G_30.Add(DW_AT_const_value, DW_FORM_data4, [$06, $00, $00, $00]);
|
|
|
|
TypeE2H_31 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2H_31.Tag := DW_TAG_enumerator;
|
|
TypeE2H_31.Children := 0;
|
|
TypeE2H_31.Add(DW_AT_name, DW_FORM_string, 'E2H'+#0);
|
|
TypeE2H_31.Add(DW_AT_const_value, DW_FORM_data4, [$07, $00, $00, $00]);
|
|
|
|
TypeE2I_32 := TypeTENUM2_23.GetNewChild;
|
|
TypeE2I_32.Tag := DW_TAG_enumerator;
|
|
TypeE2I_32.Children := 0;
|
|
TypeE2I_32.Add(DW_AT_name, DW_FORM_string, 'E2I'+#0);
|
|
TypeE2I_32.Add(DW_AT_const_value, DW_FORM_data4, [$08, $00, $00, $00]);
|
|
|
|
Type_33 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_33.Tag := DW_TAG_reference_type;
|
|
Type_33.Children := 0;
|
|
Type_33.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM2_22); // $AF, $01, $00, $00
|
|
|
|
TypeDeclTENUM3_34 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTENUM3_34.Tag := DW_TAG_typedef;
|
|
TypeDeclTENUM3_34.Children := 0;
|
|
TypeDeclTENUM3_34.Add(DW_AT_name, DW_FORM_string, 'TENUM3'+#0);
|
|
TypeDeclTENUM3_34.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTENUM3_35); // $27, $02, $00, $00
|
|
|
|
TypeTENUM3_35 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTENUM3_35.Tag := DW_TAG_enumeration_type;
|
|
TypeTENUM3_35.Children := 1;
|
|
TypeTENUM3_35.Add(DW_AT_name, DW_FORM_string, 'TENUM3'+#0);
|
|
TypeTENUM3_35.Add(DW_AT_byte_size, DW_FORM_data1, [$04]);
|
|
|
|
TypeE3A_36 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3A_36.Tag := DW_TAG_enumerator;
|
|
TypeE3A_36.Children := 0;
|
|
TypeE3A_36.Add(DW_AT_name, DW_FORM_string, 'E3A'+#0);
|
|
TypeE3A_36.Add(DW_AT_const_value, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
|
|
TypeE3B_37 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3B_37.Tag := DW_TAG_enumerator;
|
|
TypeE3B_37.Children := 0;
|
|
TypeE3B_37.Add(DW_AT_name, DW_FORM_string, 'E3B'+#0);
|
|
TypeE3B_37.Add(DW_AT_const_value, DW_FORM_data4, [$01, $00, $00, $00]);
|
|
|
|
TypeE3C_38 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3C_38.Tag := DW_TAG_enumerator;
|
|
TypeE3C_38.Children := 0;
|
|
TypeE3C_38.Add(DW_AT_name, DW_FORM_string, 'E3C'+#0);
|
|
TypeE3C_38.Add(DW_AT_const_value, DW_FORM_data4, [$02, $00, $00, $00]);
|
|
|
|
TypeE3D_39 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3D_39.Tag := DW_TAG_enumerator;
|
|
TypeE3D_39.Children := 0;
|
|
TypeE3D_39.Add(DW_AT_name, DW_FORM_string, 'E3D'+#0);
|
|
TypeE3D_39.Add(DW_AT_const_value, DW_FORM_data4, [$03, $00, $00, $00]);
|
|
|
|
TypeE3E_40 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3E_40.Tag := DW_TAG_enumerator;
|
|
TypeE3E_40.Children := 0;
|
|
TypeE3E_40.Add(DW_AT_name, DW_FORM_string, 'E3E'+#0);
|
|
TypeE3E_40.Add(DW_AT_const_value, DW_FORM_data4, [$04, $00, $00, $00]);
|
|
|
|
TypeE3F_41 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3F_41.Tag := DW_TAG_enumerator;
|
|
TypeE3F_41.Children := 0;
|
|
TypeE3F_41.Add(DW_AT_name, DW_FORM_string, 'E3F'+#0);
|
|
TypeE3F_41.Add(DW_AT_const_value, DW_FORM_data4, [$05, $00, $00, $00]);
|
|
|
|
TypeE3G_42 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3G_42.Tag := DW_TAG_enumerator;
|
|
TypeE3G_42.Children := 0;
|
|
TypeE3G_42.Add(DW_AT_name, DW_FORM_string, 'E3G'+#0);
|
|
TypeE3G_42.Add(DW_AT_const_value, DW_FORM_data4, [$06, $00, $00, $00]);
|
|
|
|
TypeE3H_43 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3H_43.Tag := DW_TAG_enumerator;
|
|
TypeE3H_43.Children := 0;
|
|
TypeE3H_43.Add(DW_AT_name, DW_FORM_string, 'E3H'+#0);
|
|
TypeE3H_43.Add(DW_AT_const_value, DW_FORM_data4, [$07, $00, $00, $00]);
|
|
|
|
TypeE3I_44 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3I_44.Tag := DW_TAG_enumerator;
|
|
TypeE3I_44.Children := 0;
|
|
TypeE3I_44.Add(DW_AT_name, DW_FORM_string, 'E3I'+#0);
|
|
TypeE3I_44.Add(DW_AT_const_value, DW_FORM_data4, [$08, $00, $00, $00]);
|
|
|
|
TypeE3J_45 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3J_45.Tag := DW_TAG_enumerator;
|
|
TypeE3J_45.Children := 0;
|
|
TypeE3J_45.Add(DW_AT_name, DW_FORM_string, 'E3J'+#0);
|
|
TypeE3J_45.Add(DW_AT_const_value, DW_FORM_data4, [$09, $00, $00, $00]);
|
|
|
|
TypeE3K_46 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3K_46.Tag := DW_TAG_enumerator;
|
|
TypeE3K_46.Children := 0;
|
|
TypeE3K_46.Add(DW_AT_name, DW_FORM_string, 'E3K'+#0);
|
|
TypeE3K_46.Add(DW_AT_const_value, DW_FORM_data4, [$0A, $00, $00, $00]);
|
|
|
|
TypeE3L_47 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3L_47.Tag := DW_TAG_enumerator;
|
|
TypeE3L_47.Children := 0;
|
|
TypeE3L_47.Add(DW_AT_name, DW_FORM_string, 'E3L'+#0);
|
|
TypeE3L_47.Add(DW_AT_const_value, DW_FORM_data4, [$0B, $00, $00, $00]);
|
|
|
|
TypeE3M_48 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3M_48.Tag := DW_TAG_enumerator;
|
|
TypeE3M_48.Children := 0;
|
|
TypeE3M_48.Add(DW_AT_name, DW_FORM_string, 'E3M'+#0);
|
|
TypeE3M_48.Add(DW_AT_const_value, DW_FORM_data4, [$0C, $00, $00, $00]);
|
|
|
|
TypeE3N_49 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3N_49.Tag := DW_TAG_enumerator;
|
|
TypeE3N_49.Children := 0;
|
|
TypeE3N_49.Add(DW_AT_name, DW_FORM_string, 'E3N'+#0);
|
|
TypeE3N_49.Add(DW_AT_const_value, DW_FORM_data4, [$0D, $00, $00, $00]);
|
|
|
|
TypeE3O_50 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3O_50.Tag := DW_TAG_enumerator;
|
|
TypeE3O_50.Children := 0;
|
|
TypeE3O_50.Add(DW_AT_name, DW_FORM_string, 'E3O'+#0);
|
|
TypeE3O_50.Add(DW_AT_const_value, DW_FORM_data4, [$0E, $00, $00, $00]);
|
|
|
|
TypeE3P_51 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3P_51.Tag := DW_TAG_enumerator;
|
|
TypeE3P_51.Children := 0;
|
|
TypeE3P_51.Add(DW_AT_name, DW_FORM_string, 'E3P'+#0);
|
|
TypeE3P_51.Add(DW_AT_const_value, DW_FORM_data4, [$0F, $00, $00, $00]);
|
|
|
|
TypeE3Q_52 := TypeTENUM3_35.GetNewChild;
|
|
TypeE3Q_52.Tag := DW_TAG_enumerator;
|
|
TypeE3Q_52.Children := 0;
|
|
TypeE3Q_52.Add(DW_AT_name, DW_FORM_string, 'E3Q'+#0);
|
|
TypeE3Q_52.Add(DW_AT_const_value, DW_FORM_data4, [$10, $00, $00, $00]);
|
|
|
|
Type_53 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_53.Tag := DW_TAG_reference_type;
|
|
Type_53.Children := 0;
|
|
Type_53.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM3_34); // $1B, $02, $00, $00
|
|
|
|
TypeDeclTENUMX_54 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTENUMX_54.Tag := DW_TAG_typedef;
|
|
TypeDeclTENUMX_54.Children := 0;
|
|
TypeDeclTENUMX_54.Add(DW_AT_name, DW_FORM_string, 'TENUMX'+#0);
|
|
TypeDeclTENUMX_54.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTENUMX_55); // $DB, $02, $00, $00
|
|
|
|
TypeTENUMX_55 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTENUMX_55.Tag := DW_TAG_enumeration_type;
|
|
TypeTENUMX_55.Children := 1;
|
|
TypeTENUMX_55.Add(DW_AT_name, DW_FORM_string, 'TENUMX'+#0);
|
|
TypeTENUMX_55.Add(DW_AT_byte_size, DW_FORM_data1, [$04]);
|
|
|
|
TypeEXA_56 := TypeTENUMX_55.GetNewChild;
|
|
TypeEXA_56.Tag := DW_TAG_enumerator;
|
|
TypeEXA_56.Children := 0;
|
|
TypeEXA_56.Add(DW_AT_name, DW_FORM_string, 'EXA'+#0);
|
|
TypeEXA_56.Add(DW_AT_const_value, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
|
|
TypeEXB_57 := TypeTENUMX_55.GetNewChild;
|
|
TypeEXB_57.Tag := DW_TAG_enumerator;
|
|
TypeEXB_57.Children := 0;
|
|
TypeEXB_57.Add(DW_AT_name, DW_FORM_string, 'EXB'+#0);
|
|
TypeEXB_57.Add(DW_AT_const_value, DW_FORM_data4, [$0A, $00, $00, $00]);
|
|
|
|
TypeEXC_58 := TypeTENUMX_55.GetNewChild;
|
|
TypeEXC_58.Tag := DW_TAG_enumerator;
|
|
TypeEXC_58.Children := 0;
|
|
TypeEXC_58.Add(DW_AT_name, DW_FORM_string, 'EXC'+#0);
|
|
TypeEXC_58.Add(DW_AT_const_value, DW_FORM_data4, [$03, $00, $00, $00]);
|
|
|
|
Type_59 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_59.Tag := DW_TAG_reference_type;
|
|
Type_59.Children := 0;
|
|
Type_59.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUMX_54); // $CF, $02, $00, $00
|
|
|
|
TypeDeclTSET0_60 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTSET0_60.Tag := DW_TAG_typedef;
|
|
TypeDeclTSET0_60.Children := 0;
|
|
TypeDeclTSET0_60.Add(DW_AT_name, DW_FORM_string, 'TSET0'+#0);
|
|
TypeDeclTSET0_60.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTSET0_61); // $10, $03, $00, $00
|
|
|
|
TypeTSET0_61 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTSET0_61.Tag := DW_TAG_set_type;
|
|
TypeTSET0_61.Children := 0;
|
|
TypeTSET0_61.Add(DW_AT_name, DW_FORM_string, 'TSET0'+#0);
|
|
TypeTSET0_61.Add(DW_AT_byte_size, DW_FORM_data2, [$04, $00, $1D]);
|
|
TypeTSET0_61.AddRef(DW_AT_type, DW_FORM_ref4, @Type_62); // $1D, $03, $00, $00
|
|
|
|
Type_62 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_62.Tag := DW_TAG_subrange_type;
|
|
Type_62.Children := 0;
|
|
Type_62.AddULEB(DW_AT_lower_bound, DW_FORM_sdata, 0);
|
|
Type_62.AddULEB(DW_AT_upper_bound, DW_FORM_sdata, 0);
|
|
Type_62.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM0_12); // $55, $01, $00, $00
|
|
|
|
Type_63 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_63.Tag := DW_TAG_reference_type;
|
|
Type_63.Children := 0;
|
|
Type_63.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET0_60); // $05, $03, $00, $00
|
|
|
|
TypeDeclTSET1_64 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTSET1_64.Tag := DW_TAG_typedef;
|
|
TypeDeclTSET1_64.Children := 0;
|
|
TypeDeclTSET1_64.Add(DW_AT_name, DW_FORM_string, 'TSET1'+#0);
|
|
TypeDeclTSET1_64.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTSET1_65); // $34, $03, $00, $00
|
|
|
|
TypeTSET1_65 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTSET1_65.Tag := DW_TAG_set_type;
|
|
TypeTSET1_65.Children := 0;
|
|
TypeTSET1_65.Add(DW_AT_name, DW_FORM_string, 'TSET1'+#0);
|
|
TypeTSET1_65.Add(DW_AT_byte_size, DW_FORM_data2, [$04, $00, $41]);
|
|
TypeTSET1_65.AddRef(DW_AT_type, DW_FORM_ref4, @Type_66); // $41, $03, $00, $00
|
|
|
|
Type_66 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_66.Tag := DW_TAG_subrange_type;
|
|
Type_66.Children := 0;
|
|
Type_66.AddULEB(DW_AT_lower_bound, DW_FORM_sdata, 0);
|
|
Type_66.AddULEB(DW_AT_upper_bound, DW_FORM_sdata, 2);
|
|
Type_66.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM1_16); // $79, $01, $00, $00
|
|
|
|
Type_67 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_67.Tag := DW_TAG_reference_type;
|
|
Type_67.Children := 0;
|
|
Type_67.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET1_64); // $29, $03, $00, $00
|
|
|
|
TypeDeclTSET2_68 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTSET2_68.Tag := DW_TAG_typedef;
|
|
TypeDeclTSET2_68.Children := 0;
|
|
TypeDeclTSET2_68.Add(DW_AT_name, DW_FORM_string, 'TSET2'+#0);
|
|
TypeDeclTSET2_68.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTSET2_69); // $58, $03, $00, $00
|
|
|
|
TypeTSET2_69 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTSET2_69.Tag := DW_TAG_set_type;
|
|
TypeTSET2_69.Children := 0;
|
|
TypeTSET2_69.Add(DW_AT_name, DW_FORM_string, 'TSET2'+#0);
|
|
TypeTSET2_69.Add(DW_AT_byte_size, DW_FORM_data2, [$04, $00, $65]);
|
|
TypeTSET2_69.AddRef(DW_AT_type, DW_FORM_ref4, @Type_70); // $65, $03, $00, $00
|
|
|
|
Type_70 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_70.Tag := DW_TAG_subrange_type;
|
|
Type_70.Children := 0;
|
|
Type_70.AddULEB(DW_AT_lower_bound, DW_FORM_sdata, 0);
|
|
Type_70.AddULEB(DW_AT_upper_bound, DW_FORM_sdata, 8);
|
|
Type_70.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM2_22); // $AF, $01, $00, $00
|
|
|
|
Type_71 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_71.Tag := DW_TAG_reference_type;
|
|
Type_71.Children := 0;
|
|
Type_71.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET2_68); // $4D, $03, $00, $00
|
|
|
|
TypeDeclTSET3_72 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTSET3_72.Tag := DW_TAG_typedef;
|
|
TypeDeclTSET3_72.Children := 0;
|
|
TypeDeclTSET3_72.Add(DW_AT_name, DW_FORM_string, 'TSET3'+#0);
|
|
TypeDeclTSET3_72.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTSET3_73); // $7C, $03, $00, $00
|
|
|
|
TypeTSET3_73 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTSET3_73.Tag := DW_TAG_set_type;
|
|
TypeTSET3_73.Children := 0;
|
|
TypeTSET3_73.Add(DW_AT_name, DW_FORM_string, 'TSET3'+#0);
|
|
TypeTSET3_73.Add(DW_AT_byte_size, DW_FORM_data2, [$04, $00, $89]);
|
|
TypeTSET3_73.AddRef(DW_AT_type, DW_FORM_ref4, @Type_74); // $89, $03, $00, $00
|
|
|
|
Type_74 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_74.Tag := DW_TAG_subrange_type;
|
|
Type_74.Children := 0;
|
|
Type_74.AddULEB(DW_AT_lower_bound, DW_FORM_sdata, 0);
|
|
Type_74.AddULEB(DW_AT_upper_bound, DW_FORM_sdata, 16);
|
|
Type_74.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTENUM3_34); // $1B, $02, $00, $00
|
|
|
|
Type_75 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_75.Tag := DW_TAG_reference_type;
|
|
Type_75.Children := 0;
|
|
Type_75.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSET3_72); // $71, $03, $00, $00
|
|
|
|
TypeDeclTSETX1_76 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeDeclTSETX1_76.Tag := DW_TAG_typedef;
|
|
TypeDeclTSETX1_76.Children := 0;
|
|
TypeDeclTSETX1_76.Add(DW_AT_name, DW_FORM_string, 'TSETX1'+#0);
|
|
TypeDeclTSETX1_76.AddRef(DW_AT_type, DW_FORM_ref4, @TypeTSETX1_77); // $A1, $03, $00, $00
|
|
|
|
TypeTSETX1_77 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
TypeTSETX1_77.Tag := DW_TAG_set_type;
|
|
TypeTSETX1_77.Children := 0;
|
|
TypeTSETX1_77.Add(DW_AT_name, DW_FORM_string, 'TSETX1'+#0);
|
|
TypeTSETX1_77.Add(DW_AT_byte_size, DW_FORM_data2, [$04, $00, $AF]);
|
|
TypeTSETX1_77.AddRef(DW_AT_type, DW_FORM_ref4, @Type_78); // $AF, $03, $00, $00
|
|
|
|
Type_78 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_78.Tag := DW_TAG_subrange_type;
|
|
Type_78.Children := 0;
|
|
Type_78.AddULEB(DW_AT_lower_bound, DW_FORM_sdata, 0);
|
|
Type_78.AddULEB(DW_AT_upper_bound, DW_FORM_sdata, 2);
|
|
Type_78.AddRef(DW_AT_type, DW_FORM_ref4, @Type_80); // $BB, $03, $00, $00
|
|
|
|
Type_79 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_79.Tag := DW_TAG_reference_type;
|
|
Type_79.Children := 0;
|
|
Type_79.AddRef(DW_AT_type, DW_FORM_ref4, @TypeDeclTSETX1_76); // $95, $03, $00, $00
|
|
|
|
Type_80 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_80.Tag := DW_TAG_enumeration_type;
|
|
Type_80.Children := 1;
|
|
Type_80.Add(DW_AT_byte_size, DW_FORM_data1, [$04]);
|
|
|
|
TypeS1A_81 := Type_80.GetNewChild;
|
|
TypeS1A_81.Tag := DW_TAG_enumerator;
|
|
TypeS1A_81.Children := 0;
|
|
TypeS1A_81.Add(DW_AT_name, DW_FORM_string, 'S1A'+#0);
|
|
TypeS1A_81.Add(DW_AT_const_value, DW_FORM_data4, [$00, $00, $00, $00]);
|
|
|
|
TypeS1B_82 := Type_80.GetNewChild;
|
|
TypeS1B_82.Tag := DW_TAG_enumerator;
|
|
TypeS1B_82.Children := 0;
|
|
TypeS1B_82.Add(DW_AT_name, DW_FORM_string, 'S1B'+#0);
|
|
TypeS1B_82.Add(DW_AT_const_value, DW_FORM_data4, [$01, $00, $00, $00]);
|
|
|
|
TypeS1C_83 := Type_80.GetNewChild;
|
|
TypeS1C_83.Tag := DW_TAG_enumerator;
|
|
TypeS1C_83.Children := 0;
|
|
TypeS1C_83.Add(DW_AT_name, DW_FORM_string, 'S1C'+#0);
|
|
TypeS1C_83.Add(DW_AT_const_value, DW_FORM_data4, [$02, $00, $00, $00]);
|
|
|
|
Type_84 := Unitdwarfsetupbasic_lpr_0.GetNewChild;
|
|
Type_84.Tag := DW_TAG_reference_type;
|
|
Type_84.Children := 0;
|
|
Type_84.AddRef(DW_AT_type, DW_FORM_ref4, @Type_80); // $BB, $03, $00, $00
|
|
|
|
//
|
|
SectionDbgInfo.CreateSectionData;
|
|
SectionDbgInfo.AbbrevSection.CreateSectionData;
|
|
end;
|
|
|
|
procedure TTestLoaderSetupBasic.PoissonTestFrame;
|
|
begin
|
|
// Ensure any out of bound reads get bad data
|
|
FillByte(GlobalVar, SizeOf(GlobalVar), $D5);
|
|
|
|
end;
|
|
|
|
end.
|
|
|