* 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_GROUP = 17;
SHT_SYMTAB_SHNDX = 18;
SHT_GNU_ATTRIBUTES = $6ffffff5;
SHT_GNU_HASH = $6ffffff6;
SHT_GNU_LIBLIST = $6ffffff7;
SHT_GNU_verdef = $6ffffffd;
SHT_GNU_verneed = $6ffffffe;
SHT_GNU_versym = $6fffffff;

View File

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