mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 00:09:25 +02:00
+ add all exported by name symbols to the resident or the nonresident name table
git-svn-id: trunk@42634 -
This commit is contained in:
parent
238c9e576c
commit
f40736438c
@ -682,6 +682,7 @@ interface
|
||||
function GetHighestExportSymbolOrdinal: Word;
|
||||
procedure AssignOrdinalsToAllExportSymbols;
|
||||
procedure AddEntryPointsForAllExportSymbols;
|
||||
procedure AddExportedNames;
|
||||
property Header: TNewExeHeader read FHeader;
|
||||
property CurrExeMetaSec: TNewExeMetaSection read FCurrExeMetaSec write FCurrExeMetaSec;
|
||||
property ResourceTable: TNewExeResourceTable read FResourceTable;
|
||||
@ -4305,6 +4306,8 @@ cleanup:
|
||||
TNewExeExportNameTableEntry.Create(ResidentNameTable,ExtractModuleName(current_module.exefilename),0);
|
||||
{ the first entry in the nonresident-name table is the module description }
|
||||
TNewExeExportNameTableEntry.Create(NonresidentNameTable,description,0);
|
||||
{ add all symbols, exported by name to the resident and nonresident-name tables }
|
||||
AddExportedNames;
|
||||
|
||||
FillImportedNameAndModuleReferenceTable;
|
||||
ImportedNameTable.CalcTableOffsets;
|
||||
@ -4464,6 +4467,29 @@ cleanup:
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TNewExeOutput.AddExportedNames;
|
||||
var
|
||||
i, j: Integer;
|
||||
ObjData: TOmfObjData;
|
||||
sym: TOmfObjExportedSymbol;
|
||||
begin
|
||||
for i:=0 to ObjDataList.Count-1 do
|
||||
begin
|
||||
ObjData:=TOmfObjData(ObjDataList[i]);
|
||||
for j:=0 to ObjData.ExportedSymbolList.Count-1 do
|
||||
begin
|
||||
sym:=TOmfObjExportedSymbol(ObjData.ExportedSymbolList[j]);
|
||||
{ all exports must have an ordinal at this point }
|
||||
if not sym.ExportByOrdinal then
|
||||
internalerror(2019081007);
|
||||
if sym.ResidentName then
|
||||
TNewExeExportNameTableEntry.Create(ResidentNameTable,sym.ExportedName,sym.ExportOrdinal)
|
||||
else
|
||||
TNewExeExportNameTableEntry.Create(NonresidentNameTable,sym.ExportedName,sym.ExportOrdinal);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TNewExeOutput.DoRelocationFixup(objsec: TObjSection);
|
||||
begin
|
||||
{todo}
|
||||
|
Loading…
Reference in New Issue
Block a user