forked from OSchip/llvm-project
Remove SymbolTable::addUndefined<ELF32LE>(StringRef).
Because we can implement the function as a non-member function. llvm-svn: 344290
This commit is contained in:
parent
0cb8710e11
commit
c7497d3ac5
|
@ -1342,6 +1342,11 @@ static void findKeepUniqueSections(opt::InputArgList &Args) {
|
|||
}
|
||||
}
|
||||
|
||||
template <class ELFT> static Symbol *addUndefined(StringRef Name) {
|
||||
return Symtab->addUndefined<ELFT>(Name, STB_GLOBAL, STV_DEFAULT, 0, false,
|
||||
nullptr);
|
||||
}
|
||||
|
||||
// The --wrap option is a feature to rename symbols so that you can write
|
||||
// wrappers for existing functions. If you pass `-wrap=foo`, all
|
||||
// occurrences of symbol `foo` are resolved to `wrap_foo` (so, you are
|
||||
|
@ -1375,8 +1380,8 @@ static std::vector<WrappedSymbol> addWrappedSymbols(opt::InputArgList &Args) {
|
|||
if (!Sym)
|
||||
continue;
|
||||
|
||||
Symbol *Real = Symtab->addUndefined<ELFT>(Saver.save("__real_" + Name));
|
||||
Symbol *Wrap = Symtab->addUndefined<ELFT>(Saver.save("__wrap_" + Name));
|
||||
Symbol *Real = addUndefined<ELFT>(Saver.save("__real_" + Name));
|
||||
Symbol *Wrap = addUndefined<ELFT>(Saver.save("__wrap_" + Name));
|
||||
V.push_back({Sym, Real, Wrap});
|
||||
|
||||
// We want to tell LTO not to inline symbols to be overwritten
|
||||
|
@ -1483,8 +1488,8 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) {
|
|||
|
||||
// Some symbols (such as __ehdr_start) are defined lazily only when there
|
||||
// are undefined symbols for them, so we add these to trigger that logic.
|
||||
for (StringRef Sym : Script->ReferencedSymbols)
|
||||
Symtab->addUndefined<ELFT>(Sym);
|
||||
for (StringRef Name : Script->ReferencedSymbols)
|
||||
addUndefined<ELFT>(Name);
|
||||
|
||||
// Handle the `--undefined <sym>` options.
|
||||
for (StringRef S : Config->Undefined)
|
||||
|
|
|
@ -241,12 +241,6 @@ std::pair<Symbol *, bool> SymbolTable::insert(StringRef Name, uint8_t Type,
|
|||
return {S, WasInserted};
|
||||
}
|
||||
|
||||
template <class ELFT> Symbol *SymbolTable::addUndefined(StringRef Name) {
|
||||
return addUndefined<ELFT>(Name, STB_GLOBAL, STV_DEFAULT,
|
||||
/*Type*/ 0,
|
||||
/*CanOmitFromDynSym*/ false, /*File*/ nullptr);
|
||||
}
|
||||
|
||||
static uint8_t getVisibility(uint8_t StOther) { return StOther & 3; }
|
||||
|
||||
template <class ELFT>
|
||||
|
@ -779,11 +773,6 @@ template void SymbolTable::addFile<ELF32BE>(InputFile *);
|
|||
template void SymbolTable::addFile<ELF64LE>(InputFile *);
|
||||
template void SymbolTable::addFile<ELF64BE>(InputFile *);
|
||||
|
||||
template Symbol *SymbolTable::addUndefined<ELF32LE>(StringRef);
|
||||
template Symbol *SymbolTable::addUndefined<ELF32BE>(StringRef);
|
||||
template Symbol *SymbolTable::addUndefined<ELF64LE>(StringRef);
|
||||
template Symbol *SymbolTable::addUndefined<ELF64BE>(StringRef);
|
||||
|
||||
template Symbol *SymbolTable::addUndefined<ELF32LE>(StringRef, uint8_t, uint8_t,
|
||||
uint8_t, bool, InputFile *);
|
||||
template Symbol *SymbolTable::addUndefined<ELF32BE>(StringRef, uint8_t, uint8_t,
|
||||
|
|
|
@ -45,10 +45,10 @@ public:
|
|||
uint8_t Visibility = llvm::ELF::STV_HIDDEN,
|
||||
uint8_t Binding = llvm::ELF::STB_GLOBAL);
|
||||
|
||||
template <class ELFT> Symbol *addUndefined(StringRef Name);
|
||||
template <class ELFT>
|
||||
Symbol *addUndefined(StringRef Name, uint8_t Binding, uint8_t StOther,
|
||||
uint8_t Type, bool CanOmitFromDynSym, InputFile *File);
|
||||
|
||||
Symbol *addRegular(StringRef Name, uint8_t StOther, uint8_t Type,
|
||||
uint64_t Value, uint64_t Size, uint8_t Binding,
|
||||
SectionBase *Section, InputFile *File);
|
||||
|
|
Loading…
Reference in New Issue