mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 05:39:24 +02:00
codetools: ppu parser: added module options
git-svn-id: trunk@29497 -
This commit is contained in:
parent
7b7300a573
commit
b64cc46583
@ -1,18 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="7"/>
|
||||
<Version Value="9"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<LRSInOutputDirectory Value="False"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InIDEConfig"/>
|
||||
<MainUnit Value="0"/>
|
||||
<TargetFileExt Value=""/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
<StringTable ProductVersion=""/>
|
||||
</VersionInfo>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
@ -39,8 +41,11 @@
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="8"/>
|
||||
<Version Value="10"/>
|
||||
<Other>
|
||||
<CompilerMessages>
|
||||
<UseMsgFile Value="True"/>
|
||||
</CompilerMessages>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
|
@ -402,7 +402,7 @@ begin
|
||||
Grid.Cells[0,1]:=crsTotal;
|
||||
Grid.Cells[1,1]:=SizeToStr(TotalPPUBytes,1.0);
|
||||
Grid.Cells[2,1]:=SizeToStr(TotalOBytes,1.0);
|
||||
Grid.Cells[3,1]:='';
|
||||
Grid.Cells[3,1]:=IntToStr(SortedItems.Count);
|
||||
Grid.Cells[4,1]:='';
|
||||
|
||||
// fill grid
|
||||
|
@ -32,7 +32,7 @@ unit PPUParser;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
{off $DEFINE VerbosePPUParser}
|
||||
{$DEFINE VerbosePPUParser}
|
||||
|
||||
interface
|
||||
|
||||
@ -54,7 +54,7 @@ const
|
||||
ibendsyms = 251;
|
||||
ibendinterface = 252;
|
||||
ibendimplementation = 253;
|
||||
// ibendbrowser = 254;
|
||||
ibendbrowser = 254;
|
||||
ibend = 255;
|
||||
{general}
|
||||
ibmodulename = 1;
|
||||
@ -70,8 +70,8 @@ const
|
||||
ibImportSymbols = 11;
|
||||
ibsymref = 12;
|
||||
ibdefref = 13;
|
||||
// ibendsymtablebrowser = 14;
|
||||
// ibbeginsymtablebrowser = 15;
|
||||
ibendsymtablebrowser = 14;
|
||||
ibbeginsymtablebrowser = 15;
|
||||
ibusedmacros = 16;
|
||||
ibderefdata = 17;
|
||||
ibexportedmacros = 18;
|
||||
@ -82,14 +82,14 @@ const
|
||||
ibstaticvarsym = 22;
|
||||
ibconstsym = 23;
|
||||
ibenumsym = 24;
|
||||
// ibtypedconstsym = 25;
|
||||
ibtypedconstsym = 25;
|
||||
ibabsolutevarsym = 26;
|
||||
ibpropertysym = 27;
|
||||
ibfieldvarsym = 28;
|
||||
ibunitsym = 29;
|
||||
iblabelsym = 30;
|
||||
ibsyssym = 31;
|
||||
// ibrttisym = 32;
|
||||
ibrttisym = 32;
|
||||
iblocalvarsym = 33;
|
||||
ibparavarsym = 34;
|
||||
ibmacrosym = 35;
|
||||
@ -113,14 +113,18 @@ const
|
||||
ibwidestringdef = 56;
|
||||
ibvariantdef = 57;
|
||||
ibundefineddef = 58;
|
||||
ibunicodestringdef = 59; // svn rev 9382
|
||||
{implementation/ObjData}
|
||||
ibnodetree = 80;
|
||||
ibasmsymbols = 81;
|
||||
ibresources = 82;
|
||||
ibresources = 82; // svn rev 7515 ppu version 80
|
||||
ibcreatedobjtypes = 83; // svn rev 12341 ppu version 95
|
||||
ibwpofile = 84; // svn rev 12341 ppu version 95
|
||||
ibmoduleoptions = 85; // svn rev 14767 ppu version 114
|
||||
|
||||
ibmainname = 90;
|
||||
ibmainname = 90; // svn rev 10406
|
||||
{ target-specific things }
|
||||
iblinkotherframeworks = 100;
|
||||
iblinkotherframeworks = 100; // svn rev 8344
|
||||
|
||||
{ unit flags }
|
||||
uf_init = $1;
|
||||
@ -436,7 +440,7 @@ type
|
||||
interface_checksum : cardinal;
|
||||
deflistsize,
|
||||
symlistsize : longint;
|
||||
future : array[0..0] of longint;
|
||||
indirect_checksum: cardinal; // svn rev 14503
|
||||
end;
|
||||
|
||||
TPPUEntry = packed record
|
||||
@ -492,6 +496,7 @@ type
|
||||
procedure ReadEntrySmallSet(var s);
|
||||
procedure ReadEntryNormalSet(var s);
|
||||
procedure ReadUsedUnits;
|
||||
procedure ReadModuleOptions;
|
||||
procedure ReadLinkContainer(Nr: byte);
|
||||
procedure ReadImportSymbols;
|
||||
procedure ReadDerefData;
|
||||
@ -547,55 +552,81 @@ type
|
||||
{ taken from systems.pas }
|
||||
ttarget =
|
||||
(
|
||||
target_none, { 0 }
|
||||
target_i386_GO32V1, { 1 }
|
||||
target_i386_GO32V2, { 2 }
|
||||
target_i386_linux, { 3 }
|
||||
target_i386_OS2, { 4 }
|
||||
target_i386_Win32, { 5 }
|
||||
target_i386_freebsd, { 6 }
|
||||
target_m68k_Amiga, { 7 }
|
||||
target_m68k_Atari, { 8 }
|
||||
target_m68k_Mac, { 9 }
|
||||
target_m68k_linux, { 10 }
|
||||
target_m68k_PalmOS, { 11 }
|
||||
target_alpha_linux, { 12 }
|
||||
target_powerpc_linux, { 13 }
|
||||
target_powerpc_macos, { 14 }
|
||||
target_i386_sunos, { 15 }
|
||||
target_i386_beos, { 16 }
|
||||
target_i386_netbsd, { 17 }
|
||||
target_m68k_netbsd, { 18 }
|
||||
target_i386_Netware, { 19 }
|
||||
target_i386_qnx, { 20 }
|
||||
target_i386_wdosx, { 21 }
|
||||
target_sparc_sunos, { 22 }
|
||||
target_sparc_linux, { 23 }
|
||||
target_i386_openbsd, { 24 }
|
||||
target_m68k_openbsd, { 25 }
|
||||
system_x86_64_linux, { 26 }
|
||||
system_powerpc_macosx, { 27 }
|
||||
target_i386_emx, { 28 }
|
||||
target_powerpc_netbsd, { 29 }
|
||||
target_powerpc_openbsd, { 30 }
|
||||
target_arm_linux, { 31 }
|
||||
target_i386_watcom, { 32 }
|
||||
target_powerpc_MorphOS, { 33 }
|
||||
target_x86_64_freebsd, { 34 }
|
||||
target_i386_netwlibc, { 35 }
|
||||
system_powerpc_Amiga, { 36 }
|
||||
system_x86_64_win64, { 37 }
|
||||
system_arm_wince, { 38 }
|
||||
system_ia64_win64, { 39 }
|
||||
system_i386_wince, { 40 }
|
||||
system_x86_6432_linux, { 41 }
|
||||
system_arm_gba, { 42 }
|
||||
system_arm_nds { 43 }
|
||||
target_none, { 0 }
|
||||
obsolete_target_i386_GO32V1,{ 1 }
|
||||
target_i386_GO32V2, { 2 }
|
||||
target_i386_linux, { 3 }
|
||||
target_i386_OS2, { 4 }
|
||||
target_i386_Win32, { 5 }
|
||||
target_i386_freebsd, { 6 }
|
||||
target_m68k_Amiga, { 7 }
|
||||
target_m68k_Atari, { 8 }
|
||||
target_m68k_Mac, { 9 }
|
||||
target_m68k_linux, { 10 }
|
||||
target_m68k_PalmOS, { 11 }
|
||||
target_alpha_linux, { 12 }
|
||||
target_powerpc_linux, { 13 }
|
||||
target_powerpc_macos, { 14 }
|
||||
target_i386_solaris, { 15 }
|
||||
target_i386_beos, { 16 }
|
||||
target_i386_netbsd, { 17 }
|
||||
target_m68k_netbsd, { 18 }
|
||||
target_i386_Netware, { 19 }
|
||||
target_i386_qnx, { 20 }
|
||||
target_i386_wdosx, { 21 }
|
||||
target_sparc_solaris, { 22 }
|
||||
target_sparc_linux, { 23 }
|
||||
target_i386_openbsd, { 24 }
|
||||
target_m68k_openbsd, { 25 }
|
||||
target_x86_64_linux, { 26 }
|
||||
target_powerpc_darwin, { 27 }
|
||||
target_i386_emx, { 28 }
|
||||
target_powerpc_netbsd, { 29 }
|
||||
target_powerpc_openbsd, { 30 }
|
||||
target_arm_linux, { 31 }
|
||||
target_i386_watcom, { 32 }
|
||||
target_powerpc_MorphOS, { 33 }
|
||||
target_x86_64_freebsd, { 34 }
|
||||
target_i386_netwlibc, { 35 }
|
||||
target_powerpc_Amiga, { 36 }
|
||||
target_x86_64_win64, { 37 }
|
||||
target_arm_wince, { 38 }
|
||||
target_ia64_win64, { 39 }
|
||||
target_i386_wince, { 40 }
|
||||
target_x86_6432_linux, { 41 }
|
||||
target_arm_gba, { 42 }
|
||||
target_powerpc64_linux, { 43 }
|
||||
target_i386_darwin, { 44 }
|
||||
target_arm_palmos, { 45 }
|
||||
target_powerpc64_darwin, { 46 }
|
||||
target_arm_nds, { 47 }
|
||||
target_i386_embedded, { 48 }
|
||||
target_m68k_embedded, { 49 }
|
||||
target_alpha_embedded, { 50 }
|
||||
target_powerpc_embedded, { 51 }
|
||||
target_sparc_embedded, { 52 }
|
||||
target_vm_embedded, { 53 }
|
||||
target_iA64_embedded, { 54 }
|
||||
target_x86_64_embedded, { 55 }
|
||||
target_mips_embedded, { 56 }
|
||||
target_arm_embedded, { 57 }
|
||||
target_powerpc64_embedded, { 58 }
|
||||
target_i386_symbian, { 59 }
|
||||
target_arm_symbian, { 60 }
|
||||
target_x86_64_darwin, { 61 }
|
||||
target_avr_embedded, { 62 }
|
||||
target_i386_haiku, { 63 }
|
||||
target_arm_darwin, { 64 }
|
||||
target_x86_64_solaris, { 65 }
|
||||
target_mips_linux, { 66 }
|
||||
target_mipsel_linux, { 67 }
|
||||
target_i386_nativent, { 68 }
|
||||
target_i386_iphonesim { 69 }
|
||||
);
|
||||
const
|
||||
Targets : array[ttarget] of string[17]=(
|
||||
Targets : array[ttarget] of string[18]=(
|
||||
{ 0 } 'none',
|
||||
{ 1 } 'GO32V1',
|
||||
{ 1 } 'GO32V1 (obsolete)',
|
||||
{ 2 } 'GO32V2',
|
||||
{ 3 } 'Linux-i386',
|
||||
{ 4 } 'OS/2',
|
||||
@ -637,7 +668,33 @@ const
|
||||
{ 40 } 'WinCE-i386',
|
||||
{ 41 } 'Linux-x64',
|
||||
{ 42 } 'GBA-arm',
|
||||
{ 43 } 'NDS-arm'
|
||||
{ 43 } 'Linux-powerpc64',
|
||||
{ 44 } 'Darwin-i386',
|
||||
{ 45 } 'PalmOS-arm',
|
||||
{ 46 } 'MacOSX-powerpc64',
|
||||
{ 47 } 'NDS-arm',
|
||||
{ 48 } 'Embedded-i386',
|
||||
{ 49 } 'Embedded-m68k',
|
||||
{ 50 } 'Embedded-alpha',
|
||||
{ 51 } 'Embedded-powerpc',
|
||||
{ 52 } 'Embedded-sparc',
|
||||
{ 53 } 'Embedded-vm',
|
||||
{ 54 } 'Embedded-iA64',
|
||||
{ 55 } 'Embedded-x64',
|
||||
{ 56 } 'Embedded-mips',
|
||||
{ 57 } 'Embedded-arm',
|
||||
{ 58 } 'Embedded-powerpc64',
|
||||
{ 59 } 'Symbian-i386',
|
||||
{ 60 } 'Symbian-arm',
|
||||
{ 61 } 'MacOSX-x64',
|
||||
{ 62 } 'Embedded-avr',
|
||||
{ 63 } 'Haiku-i386',
|
||||
{ 64 } 'Darwin-ARM',
|
||||
{ 65 } 'Solaris-x86-64',
|
||||
{ 66 } 'Linux-MIPS',
|
||||
{ 67 } 'Linux-MIPSel',
|
||||
{ 68 } 'NativeNT-i386',
|
||||
{ 69 } 'iPhoneSim-i386'
|
||||
);
|
||||
begin
|
||||
if w<=ord(high(ttarget)) then
|
||||
@ -651,21 +708,24 @@ type
|
||||
{ Copied from systems.pas }
|
||||
tsystemcpu=
|
||||
(
|
||||
cpu_no, { 0 }
|
||||
cpu_i386, { 1 }
|
||||
cpu_m68k, { 2 }
|
||||
cpu_alpha, { 3 }
|
||||
cpu_powerpc, { 4 }
|
||||
cpu_sparc, { 5 }
|
||||
cpu_vm, { 6 }
|
||||
cpu_iA64, { 7 }
|
||||
cpu_x86_64, { 8 }
|
||||
cpu_mips, { 9 }
|
||||
cpu_arm { 10 }
|
||||
cpu_no, { 0 }
|
||||
cpu_i386, { 1 }
|
||||
cpu_m68k, { 2 }
|
||||
cpu_alpha, { 3 }
|
||||
cpu_powerpc, { 4 }
|
||||
cpu_sparc, { 5 }
|
||||
cpu_vm, { 6 }
|
||||
cpu_iA64, { 7 }
|
||||
cpu_x86_64, { 8 }
|
||||
cpu_mips, { 9 }
|
||||
cpu_arm, { 10 }
|
||||
cpu_powerpc64, { 11 }
|
||||
cpu_avr { 12 }
|
||||
);
|
||||
const
|
||||
CpuTxt : array[tsystemcpu] of string[8]=
|
||||
('none','i386','m68k','alpha','powerpc','sparc','vis','ia64','x86_64','mips','arm');
|
||||
CpuTxt : array[tsystemcpu] of string[9]=
|
||||
('none','i386','m68k','alpha','powerpc','sparc','vis','ia64',
|
||||
'x86_64','mips','arm','powerpc64','avr');
|
||||
begin
|
||||
if w<=ord(high(tsystemcpu)) then
|
||||
Result:=CpuTxt[tsystemcpu(w)]
|
||||
@ -871,6 +931,9 @@ begin
|
||||
DebugLn(['TPPU.ReadInterfaceHeader ModuleName=',ModuleName]);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
ibmoduleoptions:
|
||||
ReadModuleOptions;
|
||||
|
||||
ibsourcefiles:
|
||||
begin
|
||||
@ -1485,7 +1548,6 @@ var
|
||||
Entry^.Size:=SwapEndian(Entry^.Size);
|
||||
if Entry^.Size<0 then
|
||||
Error('entry has negative size');
|
||||
debugln(['ReadEntryBlock ']);
|
||||
Read(Entry^.Size);
|
||||
end;
|
||||
|
||||
@ -1501,6 +1563,7 @@ var
|
||||
var
|
||||
p: Pointer;
|
||||
begin
|
||||
fChangeEndian:=PPUIsEndianBig;
|
||||
Entry:=nil;
|
||||
|
||||
// read header
|
||||
@ -1664,6 +1727,63 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPPU.ReadModuleOptions;
|
||||
type
|
||||
tmoduleoption = (
|
||||
mo_none,
|
||||
mo_hint_deprecated,
|
||||
mo_hint_platform,
|
||||
mo_hint_library,
|
||||
mo_hint_unimplemented,
|
||||
mo_hint_experimental,
|
||||
mo_has_deprecated_msg
|
||||
);
|
||||
tmoduleoptions = set of tmoduleoption;
|
||||
tmoduleopt=record
|
||||
mask : tmoduleoption;
|
||||
str : string[30];
|
||||
end;
|
||||
{$IFDEF VerbosePPUParser}
|
||||
const
|
||||
moduleopts=6;
|
||||
moduleopt : array[1..moduleopts] of tmoduleopt=(
|
||||
(mask:mo_hint_deprecated; str:'Hint Deprecated'),
|
||||
(mask:mo_hint_platform; str:'Hint Platform'),
|
||||
(mask:mo_hint_library; str:'Hint Library'),
|
||||
(mask:mo_hint_unimplemented; str:'Hint Unimplemented'),
|
||||
(mask:mo_hint_experimental; str:'Hint Experimental'),
|
||||
(mask:mo_has_deprecated_msg; str:'Has Deprecated Message')
|
||||
);
|
||||
{$ENDIF}
|
||||
var
|
||||
moduleoptions : tmoduleoptions;
|
||||
{$IFDEF VerbosePPUParser}
|
||||
i : longint;
|
||||
first : boolean;
|
||||
{$ENDIF}
|
||||
begin
|
||||
ReadEntrySmallSet(moduleoptions);
|
||||
{$IFDEF VerbosePPUParser}
|
||||
if moduleoptions<>[] then
|
||||
begin
|
||||
first:=true;
|
||||
for i:=1 to moduleopts do
|
||||
if (moduleopt[i].mask in moduleoptions) then
|
||||
begin
|
||||
if first then
|
||||
first:=false
|
||||
else
|
||||
dbgout(', ');
|
||||
dbgout(moduleopt[i].str);
|
||||
end;
|
||||
debugln;
|
||||
end;
|
||||
{$ENDIF}
|
||||
if mo_has_deprecated_msg in moduleoptions then begin
|
||||
ReadEntryShortstring{$IFDEF VerbosePPUParser}('Deprecated : '){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPPU.ReadLinkContainer(Nr: byte);
|
||||
{$IFDEF VerbosePPUParser}
|
||||
const
|
||||
@ -1904,6 +2024,7 @@ begin
|
||||
DebugLn([Prefix,' Interface CheckSum=',HexStr(cardinal(FHeader.interface_checksum),8)]);
|
||||
DebugLn([Prefix,' Number of Definitions=',FHeader.deflistsize]);
|
||||
DebugLn([Prefix,' Number of Symbols=',FHeader.symlistsize]);
|
||||
DebugLn([Prefix,' Indirect Checksum=',HexStr(cardinal(FHeader.indirect_checksum),8)]);
|
||||
end;
|
||||
|
||||
procedure TPPU.GetMainUsesSectionNames(var List: TStrings);
|
||||
|
Loading…
Reference in New Issue
Block a user