COFF Archive (Library) File Format.(COFF_LIB.rfi):
Class: Executable and Object, Status: Almost Complete, Last change: 05.02.2018 9:36:50
data
0 array[8] of char ArchSign
assert ArchSign='!<arch>'#10;
descr ('COFF Archive (Library) File Format.',NL,
'Info Source: WinNT.h',NL,
'Info Source: MSDN Library Visual studio 6.0.\Specifications\Platforms\',NL,
' Microsoft Portable Executable and Common Object File Format Specification',NL,
' Revision 5.0 October 1997',NL)
const
Days1970=DateToDays(1970,1,1);
DaySec=24*60*60;
type
TDateStr array[12]of char,<32;:displ=(INT(DaysToDay(Days1970+StrToInt(@) div DaySec)),'.',
INT(DaysToMonth(Days1970+StrToInt(@) div DaySec)),'.',
INT(DaysToYear(Days1970+StrToInt(@) div DaySec)),' ',
INT((StrToInt(@) div (60*60))mod 24),':',INT((StrToInt(@) div 60)mod 60),'''',
INT(StrToInt(@) mod 60),'"');
IMAGE_ARCHIVE_MEMBER_HEADER struc pas
Name: array[16]of char,<32; // File member name - `/' terminated.
Date: TDateStr; // File member date - decimal.
UserID: array[6]of char,<32; // File member user id - decimal.
GroupID: array[6]of char,<32; // File member group id - decimal.
Mode: array[8]of char,<32; // File member mode - octal.
Size: array[10]of char,<32; // File member size - decimal.
EndHeader: array[2]of char; // String to end header.
ends:assert[@.EndHeader='`'#10]
TMangledName PChar():displ=(DemangleVC_Wine(@))
set byteorder rev
type
ULongRev num+(4)
set byteorder norm
type
IMAGE_ARCHIVE_MEMBER_Data1 struc
ULongRev NOfSymbols
array[@.NOfSymbols] of ULongRev NameMemberOffsets
array[@.NOfSymbols] of TMangledName Names
raw[] Rest
ends
IMAGE_ARCHIVE_MEMBER_Data2 struc
ULong NOfMembers
array[@.NOfMembers] of ULong MemberOffsets
ULong NOfSymbols
array[@.NOfSymbols] of Word hNameMember
array[@.NOfSymbols] of TMangledName Names
raw[] Rest
ends
IMAGE_ARCHIVE_LONG_NAMES array of PChar
IMAGE_ARCHIVE_MEMBER_Block struc pas
H: IMAGE_ARCHIVE_MEMBER_HEADER
D: case (@:#+1)*((@.H.Name='/')and(@:#<2)+(@.H.Name='//')and(@:#=2)) of
1: IMAGE_ARCHIVE_MEMBER_Data1
2: IMAGE_ARCHIVE_MEMBER_Data2
3: IMAGE_ARCHIVE_LONG_NAMES
else subfile[] spec 'COFF_OBJ.RFI'//raw[]
endc
Al: align 2 at &@.D;
ends:[@.D:Size=StrToInt(@.H.Size,10)]:displ=('{',ADDR(&@),'}',@)
data
8 array of IMAGE_ARCHIVE_MEMBER_Block:[@:Size=FileSize-8] Blocks
Other specifications.
FlexT home page,
Author`s home page.