Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

352 lines
11 KiB

/***********************************************************************
* Microsoft (R) 32-Bit Incremental Linker
*
* Copyright (C) Microsoft Corp 1992-1996. All rights reserved.
*
* File: proto.h
*
* File Comments:
*
* Prototypes of most global functions.
*
***********************************************************************/
// coff.cpp
MainFunc HelperMain(int, char *[]);
// contrib.cpp
void MoveToBeginningOfPGRPsPCON(PCON);
void MoveToBeginningOfPSECsPGRP(PGRP);
PSEC PsecApplyMergePsec(PSEC);
// disasm.cpp
void DisasmBuffer(WORD, BOOL, DWORD, const BYTE *, DWORD,
const PIMAGE_SYMBOL *, DWORD, DWORD, FILE *);
// disasm68.cpp
void DisasmBuffer68K(const BYTE *, DWORD, const PIMAGE_SYMBOL *, DWORD);
// incr.cpp
void MarkExtern_FuncFixup(PIMAGE_SYMBOL, PIMAGE, PCON);
// lnkmain.cpp
#ifdef ILINKLOG
void IlinkLog(UINT);
#endif // ILINKLOG
void BuildArgList(PIMAGE, PCON, PNAME_LIST, char *);
void ApplyDirectives(PIMAGE, PCON, char *);
BOOL FScanSwitches(const char *);
void SaveImage(PIMAGE);
INT SpawnFullBuild(BOOL);
INT SpawnFullBuildVXD(DWORD);
void FlushWorkingSet(void);
MainFunc LinkerMain(int, char *[]);
// link.cpp
DWORD AdjustImageBase(DWORD);
void AllocateCommon(PIMAGE);
void AllocateCommonPMOD(PIMAGE, PMOD);
void AllocateCommonPEXT(PIMAGE, PEXTERNAL);
INT BuildImage(PIMAGE, BOOL *);
void CheckForReproDir(void);
void CloseReproDir(void);
void CopyFileToReproDir(const char *, BOOL);
BOOL IsDebugSymbol(BYTE, SWITCH *);
void SaveDebugFixup(WORD, WORD, DWORD, DWORD);
void EmitRelocations(PIMAGE);
DWORD Cmod(PLIB);
void CalculateGpRange(void);
extern char *EntryPointName;
extern char *OrderFilename;
// lnkp1.cpp
void Pass1(PIMAGE);
void Pass1Arg(ARGUMENT_LIST *, PIMAGE, PLIB);
void SetDefaultOutFilename(PIMAGE, ARGUMENT_LIST *);
void WarningIgnoredExports(const char *);
void PrepLibForSearching(PIMAGE, PLIB);
void ResolveExternalsInLibs(PIMAGE);
// lnkp2.cpp
void AddSectionsToDBI(PIMAGE);
void CountFixupError(PIMAGE);
void OrderPCTMods(void);
void Pass2(PIMAGE);
const char *SzNameFixupSym(PIMAGE, PIMAGE_SYMBOL);
void AddPublicMod(PIMAGE, const char *, WORD, PEXTERNAL);
// i386.cpp
void I386LinkerInit(PIMAGE pimage, BOOL *);
const char *SzI386RelocationType(WORD, WORD *, BOOL *);
// mips.cpp
void AdjustMipsCode(PCON, PIMAGE_OPTIONAL_HEADER);
void MipsLinkerInit(PIMAGE, BOOL *);
const char *SzMipsRelocationType(WORD, WORD *, BOOL *);
void WriteMipsRomRelocations (PIMAGE);
// alpha.cpp
void AlphaLinkerInit(PIMAGE, BOOL *);
const char *SzAlphaRelocationType(WORD, WORD *, BOOL *);
// ppc.cpp
void CreatePconToc(PIMAGE);
void PpcLinkerInit(PIMAGE, BOOL *);
void ProcessTocSymbol(PIMAGE, PMOD, PEXTERNAL, DWORD, BYTE);
const char *SzPpcRelocationType(WORD, WORD *, BOOL *);
void ValidateToc(PIMAGE);
void WriteToc(void);
BOOL IsPPCTocRW(PIMAGE);
void MergeTocData(PIMAGE);
// mppc.cpp
void MPPCLinkerInit(PIMAGE, BOOL *);
const char *SzMPPCRelocationType(WORD, WORD *, BOOL *);
void CollectAndSort(PIMAGE);
void AddVersionList(const char *, const char *, const char *, const char *);
DWORD CalculateMFilePad(DWORD);
// m68k.cpp
void ApplyM68KSectionResInfo(PSEC, BOOL);
void MacAllocA5Array(void);
void AssignTMAC(PSEC);
void InitSTRefTab(DWORD);
void ProcessSTRef(DWORD, PSEC, DWORD);
void UpdateExternThunkInfo(PEXTERNAL, DWORD);
void UpdateLocalThunkInfo(PIMAGE, PCON, PIMAGE_SYMBOL, DWORD);
DWORD CalcThunkTableSize(PST, BOOL);
void CreateThunkTable(BOOL, PIMAGE);
void CleanupSTRefTab(void);
void WriteResourceHeader(PCON, BOOL);
void AddDFIXSym(DWORD, PCON);
void InitResmap(WORD);
void AddRRM(DWORD, PSEC);
void WriteResmap(void);
DWORD WriteDFIX(PIMAGE, DWORD);
void InitMSCV(void);
void AddMSCVMap(PSEC, BOOL);
void WriteMSCV(PIMAGE);
void WriteSWAP0(void);
void AssignCodeSectionNums(PIMAGE);
void AddRelocInfo(RELOCINFO *, PCON, DWORD);
void AddRawUnknownRelocInfo(PCON, DWORD, DWORD);
void CleanupUnknownObjriRaw(PST, PIMAGE_SYMBOL, char *, PMOD);
void SortRawRelocInfo(void);
void UpdateRelocInfoOffset(PSEC, PIMAGE);
DWORD WriteRelocInfo(PSEC, DWORD);
void ProcessCSECTAB(PIMAGE);
void ProcessDupCons(void);
void AddDupConsToSec(PSEC, PIMAGE);
PEXTNODE IsDupCon(PCON);
void CreateDummyDupConModules(PPEXTNODE);
void DeleteOriginalDupCons(void);
void BuildResNumList(void);
RESINFO *FindResInfo(LONG, DWORD);
SHORT GetNextResNum(RESINFO *);
void CheckForIllegalA5Ref(WORD);
PEXTERNAL FindExtAlternatePcodeSym(PEXTERNAL, PST, BOOL);
void CreateCVRSymbol(char *, PST, DWORD);
void NoteMacExport(const char *, PST, BOOL, BOOL);
void AssignMemberNums(PST);
void BuildMacVTables(PST);
void EmitClientVTableRecs(PIMAGE, const char *);
void EmitMacThunk(PIMAGE, PEXTERNAL, const THUNK_INFO *, const char *);
void EmitMacDLLObject(INT, PIMAGE, const char *, DWORD);
WORD CchParseMacVersion(const char *, DWORD *);
WORD CchParseMacVersionRange(const char *, DWORD *, DWORD *);
void ParseFunctionSetVersion(const char *);
WORD ParseDefMacFlags(char *, const char *);
WORD ParseDefLoadHeap(char *);
WORD ParseDefClientData(const char *, const char *);
void M68KLinkerInit(PIMAGE, BOOL *);
const char *SzM68KRelocationType(WORD, WORD *, BOOL *);
LONG ReadMacWord(INT);
// mac.cpp
void UseMacBinaryRes(char *szResFilename, RESNT resnt, INT);
void IncludeMacPbCb(BYTE *pb, DWORD cb, RESNT resnt);
void GenFinderInfo(BOOL, const char *, const char *);
BOOL FIsProgramPsec(PSEC psec);
RESN *GetMacResourcePointer(const char *, PIMAGE);
BOOL FIsMacResFile (INT);
// lib.cpp
DWORD CountExternTable(PST, DWORD *, DWORD *, DWORD *);
MainFunc LibrarianMain(int, char *[]);
void WriteMemberHeader(const char *, BOOL, time_t, unsigned short, LONG);
void EmitStrings(PST, BOOL);
void EmitOffsets(PST, BOOL);
// deflib.cpp
void AddOrdinal(DWORD);
MainFunc DefLibMain(PIMAGE);
WORD IsDefinitionKeyword(const char *);
WORD SkipToNextKeyword(void);
// dump.cpp
MainFunc DumperMain(int, char *[]);
void DumpMemberHeader(PLIB, IMAGE_ARCHIVE_MEMBER_HEADER, DWORD);
void DumpNamePsym(FILE *, const char *, PIMAGE_SYMBOL);
// edit.cpp
MainFunc EditorMain(int, char *[]);
void ProcessEditorSwitches(const char *, INT);
void ParseSection(const char * szArgs,
char **szsOrig,
char **szsNew,
const char *szFileName);
void PrepareToModifyFile(PARGUMENT_LIST);
// shared.cpp
void AddArgument(PNAME_LIST, char *);
void AddArgumentToList(PNAME_LIST, char *, char *);
void AddArgumentToNumList (PNUMBER_LIST, char *, char *, DWORD);
void AddToLext(LEXT **, PEXTERNAL);
void AddWeakExtToList(PEXTERNAL,PEXTERNAL);
DWORD AppendLongName(PST, const char *);
void ApplyCommandLineSectionAttributes(PSEC);
void BuildExternalSymbolTable(PIMAGE, PBOOL, PMOD, WORD, WORD);
void CalculateBaseForIdataRecords(void);
void CheckDupFilename(const char *, PARGUMENT_LIST);
void ChecksumImage(PIMAGE);
INT __cdecl Compare(void const *, void const *);
void DumpExternTable(PST);
DWORD DwSwap(DWORD);
const char *ExpandMemberName(PLIB, const char *);
BOOL FArgumentInList(const char *, PNAME_LIST);
PIMAGE_SYMBOL FetchNextSymbol(PIMAGE_SYMBOL *);
PCHAR _find(PCHAR);
INT __cdecl FpoDataCompare(void const *, void const *);
void FreeArgumentList(PNAME_LIST);
void FreeArgumentNumberList(PNUMBER_LIST);
void FreeRgrel(PIMAGE_RELOCATION);
void FreeStringTable(char *);
void FreeSymbolTable(PIMAGE_SYMBOL);
void FreeWeakExtList(VOID);
BOOL FValidFileHdr(const char *, PIMAGE_FILE_HEADER);
BOOL IsArchiveFile(const char *, INT);
void LocateUndefinedExternals(PST);
DWORD LookupLongName(PST, const char *);
void MultiplyDefinedSym(SWITCH *, const char *, const char *, const char *);
void ParseCommandLine(INT, char *[], const char *);
LEXT * PlextFind (LEXT *, PEXTERNAL);
PEXTERNAL PextWeakDefaultFind(PEXTERNAL);
void PrintBanner(void);
void PrintUndefinedExternals(PST);
void ProcessArgument(char *, BOOL);
PIMAGE_SYMBOL PsymAlternateStaticPcodeSym(PIMAGE, PCON, BOOL, PIMAGE_SYMBOL, BOOL);
PIMAGE_ARCHIVE_MEMBER_HEADER ReadArchiveMemberHeader(void);
void ReadImageSecHdrInfoPMOD(PMOD, IMAGE_SECTION_HEADER **);
void ReadFileHeader(INT, PIMAGE_FILE_HEADER);
void ReadOptionalHeader(INT, PIMAGE_OPTIONAL_HEADER, WORD);
void ReadRelocations(INT, PIMAGE_RELOCATION, DWORD);
PIMAGE_RELOCATION ReadRgrelPCON(PCON, DWORD *);
void ReadSpecialLinkerInterfaceMembers(PLIB, PIMAGE);
char * ReadStringTable(const char *, LONG, DWORD *);
PIMAGE_SYMBOL ReadSymbolTable(DWORD, DWORD, BOOL);
void ReadSymbolTableEntry(INT, PIMAGE_SYMBOL);
void ResolveSymbol_icsym(PIMAGE);
DWORD RvaAlign(DWORD, DWORD);
void SaveFixupForMapFile(DWORD);
void SearchLib(PIMAGE, PLIB, PBOOL, PBOOL);
DWORD sgetl(DWORD *);
DWORD sputl(DWORD *);
void SwapBytes(void *, DWORD);
char * SzGetArgument(char *, BOOL *);
char * SzModifyFilename(const char *, const char *);
const char *SzObjSectionName(const char *, const char *);
char * SzSearchEnv(const char *, const char *, const char *);
void UpdateExternalSymbol(PEXTERNAL, PCON, DWORD,
SHORT, WORD, WORD, PMOD,
PST);
void VerifyMachine(const char *, WORD, PIMAGE_FILE_HEADER);
void WriteAuxSymbolTableEntry(INT, PIMAGE_AUX_SYMBOL);
void WriteFileHeader(INT, PIMAGE_FILE_HEADER);
void WriteOptionalHeader(INT, PIMAGE_OPTIONAL_HEADER, WORD);
void WriteRelocations(INT, PIMAGE_RELOCATION, DWORD);
void WriteSectionHeader(INT, PIMAGE_SECTION_HEADER);
void WriteStringTable(INT, PST);
void WriteSymbolTableEntry(INT, PIMAGE_SYMBOL);
WORD WSwap(WORD);
// convert.cpp
void ConvertOmfObjects();
void RemoveConvertTempFiles(void);
WORD VerifyAnObject(PARGUMENT_LIST, PIMAGE);
void VerifyObjects(PIMAGE);
// map.cpp
void EmitMap(PIMAGE, const char *);
void SaveStaticForMapFile(const char *, PCON, DWORD, BOOL);
void SaveTocForMapFile(PEXTERNAL);
// cv.cpp
void EmitCvInfo(PIMAGE);
// textpad.cpp
BOOL ComputeTextPad(DWORD, DWORD *, DWORD, DWORD, DWORD *);
// export.cpp
void ParseExportDirective(char *, PIMAGE, BOOL, const char *);
void AddExportToSymbolTable(const char *, const char *, BOOL, EMODE, DWORD,
const char *, BOOL, PIMAGE, BOOL, BOOL);
// cpp.cpp
char *SzUndecorateNameOnly(const char *);
char *SzOutputSymbolName(const char *, BOOL);
// linenumber.cpp
void FeedLinenums(PIMAGE_LINENUMBER, DWORD, PCON, PIMAGE_SYMBOL, DWORD, DWORD, BOOL, BOOL);
void WriteMapFileLinenums(PIMAGE);
// dbiapi.cpp
void FreeLineNumInfo(LMod *);
// vxd.cpp
void InitImageVXD(PIMAGE);
void WriteExtendedVXDHeader(PIMAGE, INT);
void WriteVXDEntryTable(PIMAGE, INT);
void WriteVXDBaseRelocations(PIMAGE);
// errmsg.cpp
void DisableWarning(unsigned);
void FinalizeErrorFile(void);
void __cdecl Error(const char *, UINT, ...);
void __cdecl ErrorPcon(PCON, UINT, ...);
void __cdecl Fatal(const char *, UINT, ...);
void __cdecl FatalNoDelete(const char *, UINT, ...);
void __cdecl FatalPcon(PCON, UINT, ...);
void OutOfMemory(void);
void __cdecl Message(UINT, ...);
void __cdecl PostNote(const char *, UINT, ...);
void __cdecl Warning(const char *, UINT, ...);
void __cdecl WarningPcon(PCON, UINT, ...);
// cmdline.cpp
void TransferLinkerSwitchValues(PIMAGE, PIMAGE);
BOOL CheckAndUpdateLinkerSwitches(PIMAGE, PIMAGE);
#if DBG
// dbinsp.cpp
MainFunc DbInspMain(int, char *[]);
#endif // DBG
// pdata.cpp
void SortFunctionTable(PIMAGE);
// alpha.cpp
void EmitAlphaThunks(void);
void AlphaAddToThunkList(PCON, DWORD, DWORD);
DWORD CalculateTextSectionSize(PIMAGE, DWORD);