Skip to content

Commit

Permalink
Rename VAStart -> ImageBase. NFC.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
rui314 committed Jul 13, 2016
1 parent 904a880 commit 484a495
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 11 deletions.
2 changes: 1 addition & 1 deletion lld/ELF/Config.h
Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions lld/ELF/Driver.cpp
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion lld/ELF/OutputSections.cpp
Expand Up @@ -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())
Expand Down
6 changes: 4 additions & 2 deletions lld/ELF/Target.cpp
Expand Up @@ -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; }

Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions lld/ELF/Target.h
Expand Up @@ -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;
Expand Down Expand Up @@ -70,7 +70,7 @@ class TargetInfo {
// 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;
Expand Down
4 changes: 2 additions & 2 deletions lld/ELF/Writer.cpp
Expand Up @@ -1022,15 +1022,15 @@ 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);
}

// 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;
Expand Down

0 comments on commit 484a495

Please sign in to comment.