* Made TElfExeOutput.CreatePLT method protected virtual, so CPU-specific handling can be provided by descendants.

* Handle SHT_GNU_ATTRIBUTES sections (ignore them for now).

git-svn-id: trunk@23339 -
This commit is contained in:
sergei 2013-01-07 15:22:04 +00:00
parent b197919953
commit 49d7448f44
2 changed files with 7 additions and 1 deletions

View File

@ -108,6 +108,9 @@ interface
SHT_PREINIT_ARRAY = 16; SHT_PREINIT_ARRAY = 16;
SHT_GROUP = 17; SHT_GROUP = 17;
SHT_SYMTAB_SHNDX = 18; SHT_SYMTAB_SHNDX = 18;
SHT_GNU_ATTRIBUTES = $6ffffff5;
SHT_GNU_HASH = $6ffffff6;
SHT_GNU_LIBLIST = $6ffffff7;
SHT_GNU_verdef = $6ffffffd; SHT_GNU_verdef = $6ffffffd;
SHT_GNU_verneed = $6ffffffe; SHT_GNU_verneed = $6ffffffe;
SHT_GNU_versym = $6fffffff; SHT_GNU_versym = $6fffffff;

View File

@ -229,7 +229,6 @@ interface
function AttachSection(objsec:TObjSection):TElfExeSection; function AttachSection(objsec:TObjSection):TElfExeSection;
function CreateSegment(atype,aflags,aalign:longword):TElfSegment; function CreateSegment(atype,aflags,aalign:longword):TElfSegment;
procedure CreatePLT;
procedure WriteHeader; procedure WriteHeader;
procedure WriteDynamicSymbolsHash; procedure WriteDynamicSymbolsHash;
procedure WriteDynamicTags; procedure WriteDynamicTags;
@ -261,6 +260,7 @@ interface
procedure CreateGOTSection;virtual; procedure CreateGOTSection;virtual;
procedure make_dynamic_if_undefweak(exesym:TExeSymbol); procedure make_dynamic_if_undefweak(exesym:TExeSymbol);
procedure WriteDynRelocEntry(dataofs:aword;typ:byte;symidx:aword;addend:aword); procedure WriteDynRelocEntry(dataofs:aword;typ:byte;symidx:aword;addend:aword);
procedure CreatePLT;virtual;
procedure WriteFirstPLTEntry;virtual;abstract; procedure WriteFirstPLTEntry;virtual;abstract;
procedure WritePLTEntry(exesym:TExeSymbol);virtual; procedure WritePLTEntry(exesym:TExeSymbol);virtual;
procedure WriteIndirectPLTEntry(exesym:TExeSymbol);virtual; procedure WriteIndirectPLTEntry(exesym:TExeSymbol);virtual;
@ -1508,6 +1508,9 @@ implementation
end end
else else
InternalError(2012110706); InternalError(2012110706);
SHT_GNU_ATTRIBUTES:
{ TODO: must not be ignored };
else else
if not (assigned(ElfTarget.loadsection) and if not (assigned(ElfTarget.loadsection) and
ElfTarget.loadsection(self,objdata,shdr,index)) then ElfTarget.loadsection(self,objdata,shdr,index)) then