+ add all exported by name symbols to the resident or the nonresident name table

git-svn-id: trunk@42634 -
This commit is contained in:
nickysn 2019-08-10 00:29:33 +00:00
parent 238c9e576c
commit f40736438c

View File

@ -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}