forked from OSchip/llvm-project
Rename VAStart -> ImageBase. NFC.
Config members are named after corresponding command line options. This patch renames VAStart ImageBase so that they are in line with --image-base. Differential Revision: http://reviews.llvm.org/D22277 llvm-svn: 275298
This commit is contained in:
parent
904a88025a
commit
484a49514f
|
@ -117,7 +117,7 @@ struct Configuration {
|
|||
ELFKind EKind = ELFNoneKind;
|
||||
uint16_t EMachine = llvm::ELF::EM_NONE;
|
||||
uint64_t EntryAddr = -1;
|
||||
uint64_t VAStart;
|
||||
uint64_t ImageBase;
|
||||
unsigned LtoJobs;
|
||||
unsigned LtoO;
|
||||
unsigned Optimize;
|
||||
|
|
|
@ -535,12 +535,12 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) {
|
|||
|
||||
if (auto *Arg = Args.getLastArg(OPT_image_base)) {
|
||||
StringRef S = Arg->getValue();
|
||||
if (S.getAsInteger(0, Config->VAStart))
|
||||
if (S.getAsInteger(0, Config->ImageBase))
|
||||
error(Arg->getSpelling() + ": number expected, but got " + S);
|
||||
else if ((Config->VAStart % Target->PageSize) != 0)
|
||||
else if ((Config->ImageBase % Target->PageSize) != 0)
|
||||
warning(Arg->getSpelling() + ": address isn't multiple of page size");
|
||||
} else {
|
||||
Config->VAStart = Target->getVAStart();
|
||||
Config->ImageBase = Target->getImageBase();
|
||||
}
|
||||
|
||||
for (std::unique_ptr<InputFile> &F : Files)
|
||||
|
|
|
@ -724,7 +724,7 @@ template <class ELFT> void DynamicSection<ELFT>::finalize() {
|
|||
if (Config->EMachine == EM_MIPS) {
|
||||
Add({DT_MIPS_RLD_VERSION, 1});
|
||||
Add({DT_MIPS_FLAGS, RHF_NOTPOT});
|
||||
Add({DT_MIPS_BASE_ADDRESS, (uintX_t)Target->getVAStart()});
|
||||
Add({DT_MIPS_BASE_ADDRESS, (uintX_t)Target->getImageBase()});
|
||||
Add({DT_MIPS_SYMTABNO, Out<ELFT>::DynSymTab->getNumSymbols()});
|
||||
Add({DT_MIPS_LOCAL_GOTNO, Out<ELFT>::Got->getMipsLocalEntriesNum()});
|
||||
if (const SymbolBody *B = Out<ELFT>::Got->getMipsFirstGlobalEntry())
|
||||
|
|
|
@ -250,7 +250,9 @@ uint64_t TargetInfo::getImplicitAddend(const uint8_t *Buf,
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint64_t TargetInfo::getVAStart() const { return Config->Pic ? 0 : VAStart; }
|
||||
uint64_t TargetInfo::getImageBase() const {
|
||||
return Config->Pic ? 0 : ImageBase;
|
||||
}
|
||||
|
||||
bool TargetInfo::usesOnlyLowPageBits(uint32_t Type) const { return false; }
|
||||
|
||||
|
@ -989,7 +991,7 @@ PPC64TargetInfo::PPC64TargetInfo() {
|
|||
//
|
||||
// And because the lowest non-zero 256M boundary is 0x10000000, PPC64 linkers
|
||||
// use 0x10000000 as the starting address.
|
||||
VAStart = 0x10000000;
|
||||
ImageBase = 0x10000000;
|
||||
}
|
||||
|
||||
static uint64_t PPC64TocOffset = 0x8000;
|
||||
|
|
|
@ -23,7 +23,7 @@ class SymbolBody;
|
|||
|
||||
class TargetInfo {
|
||||
public:
|
||||
uint64_t getVAStart() const;
|
||||
uint64_t getImageBase() const;
|
||||
virtual bool isTlsInitialExecRel(uint32_t Type) const;
|
||||
virtual bool isTlsLocalDynamicRel(uint32_t Type) const;
|
||||
virtual bool isTlsGlobalDynamicRel(uint32_t Type) const;
|
||||
|
@ -70,7 +70,7 @@ public:
|
|||
// Given that, the smallest value that can be used in here is 0x10000.
|
||||
// If using 2MB pages, the smallest page aligned address that works is
|
||||
// 0x200000, but it looks like every OS uses 4k pages for executables.
|
||||
uint64_t VAStart = 0x10000;
|
||||
uint64_t ImageBase = 0x10000;
|
||||
|
||||
uint32_t CopyRel;
|
||||
uint32_t GotRel;
|
||||
|
|
|
@ -1022,7 +1022,7 @@ template <class ELFT> void Writer<ELFT>::fixSectionAlignments() {
|
|||
// sections. These are special, we do not include them into output sections
|
||||
// list, but have them to simplify the code.
|
||||
template <class ELFT> void Writer<ELFT>::fixHeaders() {
|
||||
uintX_t BaseVA = ScriptConfig->DoLayout ? 0 : Config->VAStart;
|
||||
uintX_t BaseVA = ScriptConfig->DoLayout ? 0 : Config->ImageBase;
|
||||
Out<ELFT>::ElfHeader->setVA(BaseVA);
|
||||
uintX_t Off = Out<ELFT>::ElfHeader->getSize();
|
||||
Out<ELFT>::ProgramHeaders->setVA(Off + BaseVA);
|
||||
|
@ -1030,7 +1030,7 @@ template <class ELFT> void Writer<ELFT>::fixHeaders() {
|
|||
|
||||
// Assign VAs (addresses at run-time) to output sections.
|
||||
template <class ELFT> void Writer<ELFT>::assignAddresses() {
|
||||
uintX_t VA = Config->VAStart + Out<ELFT>::ElfHeader->getSize() +
|
||||
uintX_t VA = Config->ImageBase + Out<ELFT>::ElfHeader->getSize() +
|
||||
Out<ELFT>::ProgramHeaders->getSize();
|
||||
|
||||
uintX_t ThreadBssOffset = 0;
|
||||
|
|
Loading…
Reference in New Issue