diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-10-26 20:57:14 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-10-26 20:57:14 +0000 |
commit | 5ceeb60c6ebc9d1193d8af9f336b6cce5ca9e1d8 (patch) | |
tree | a87d00bf641ae3cb446a0b7de0b66691aaa4318d | |
parent | 4c1cd45965702d4e2f89c1a4fb2023a5043728fc (diff) | |
download | bcm5719-llvm-5ceeb60c6ebc9d1193d8af9f336b6cce5ca9e1d8.tar.gz bcm5719-llvm-5ceeb60c6ebc9d1193d8af9f336b6cce5ca9e1d8.zip |
Have on addRegular forward to another. NFC.
Another step in making it easier to create symbols without an ELf_Sym.
llvm-svn: 285241
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 27 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.h | 4 | ||||
-rw-r--r-- | lld/ELF/Symbols.h | 11 |
3 files changed, 21 insertions, 21 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index a017df35024..106a648d2c3 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -374,14 +374,24 @@ void SymbolTable<ELFT>::reportDuplicate(SymbolBody *Existing, template <typename ELFT> Symbol *SymbolTable<ELFT>::addRegular(StringRef Name, const Elf_Sym &Sym, InputSectionBase<ELFT> *Section) { + return addRegular(Name, Sym.st_other, Sym.getType(), Sym.st_value, + Sym.st_size, Sym.getBinding(), Section); +} + +template <typename ELFT> +Symbol *SymbolTable<ELFT>::addRegular(StringRef Name, uint8_t StOther, + uint8_t Type, uintX_t Value, uintX_t Size, + uint8_t Binding, + InputSectionBase<ELFT> *Section) { Symbol *S; bool WasInserted; - std::tie(S, WasInserted) = insert(Name, Sym.getType(), Sym.getVisibility(), + std::tie(S, WasInserted) = insert(Name, Type, StOther & 3, /*CanOmitFromDynSym*/ false, Section ? Section->getFile() : nullptr); - int Cmp = compareDefinedNonCommon(S, WasInserted, Sym.getBinding()); + int Cmp = compareDefinedNonCommon(S, WasInserted, Binding); if (Cmp > 0) - replaceBody<DefinedRegular<ELFT>>(S, Name, Sym, Section); + replaceBody<DefinedRegular<ELFT>>(S, Name, StOther, Type, Value, Size, + Section); else if (Cmp == 0) reportDuplicate(S->body(), Section->getFile()); return S; @@ -390,16 +400,7 @@ Symbol *SymbolTable<ELFT>::addRegular(StringRef Name, const Elf_Sym &Sym, template <typename ELFT> Symbol *SymbolTable<ELFT>::addRegular(StringRef Name, uint8_t Binding, uint8_t StOther) { - Symbol *S; - bool WasInserted; - std::tie(S, WasInserted) = insert(Name, STT_NOTYPE, StOther & 3, - /*CanOmitFromDynSym*/ false, nullptr); - int Cmp = compareDefinedNonCommon(S, WasInserted, Binding); - if (Cmp > 0) - replaceBody<DefinedRegular<ELFT>>(S, Name, StOther); - else if (Cmp == 0) - reportDuplicate(S->body(), nullptr); - return S; + return addRegular(Name, StOther, STT_NOTYPE, 0, 0, Binding, nullptr); } template <typename ELFT> diff --git a/lld/ELF/SymbolTable.h b/lld/ELF/SymbolTable.h index f95ff12377a..723031397b5 100644 --- a/lld/ELF/SymbolTable.h +++ b/lld/ELF/SymbolTable.h @@ -63,6 +63,10 @@ public: 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, + uintX_t Value, uintX_t Size, uint8_t Binding, + InputSectionBase<ELFT> *Section); + Symbol *addRegular(StringRef Name, const Elf_Sym &Sym, InputSectionBase<ELFT> *Section); Symbol *addRegular(StringRef Name, uint8_t Binding, uint8_t StOther); diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h index 23c38d31d7c..a00c8008aa4 100644 --- a/lld/ELF/Symbols.h +++ b/lld/ELF/Symbols.h @@ -194,16 +194,11 @@ public: this->File = File; } - DefinedRegular(StringRef Name, const Elf_Sym &Sym, - InputSectionBase<ELFT> *Section) - : DefinedRegular(Name, Sym.st_other, Sym.getType(), Sym.st_value, - Sym.st_size, Section, + DefinedRegular(StringRef Name, uint8_t StOther, uint8_t Type, uintX_t Value, + uintX_t Size, InputSectionBase<ELFT> *Section) + : DefinedRegular(Name, StOther, Type, Value, Size, Section, Section ? Section->getFile() : nullptr) {} - DefinedRegular(StringRef Name, uint8_t StOther) - : DefinedRegular(Name, StOther, llvm::ELF::STT_NOTYPE, 0, 0, - NullInputSection, nullptr) {} - DefinedRegular(StringRef Name, uint8_t StOther, uint8_t Type, BitcodeFile *F) : DefinedRegular(Name, StOther, Type, 0, 0, NullInputSection, F) {} |