summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-10-26 20:57:14 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-10-26 20:57:14 +0000
commit5ceeb60c6ebc9d1193d8af9f336b6cce5ca9e1d8 (patch)
treea87d00bf641ae3cb446a0b7de0b66691aaa4318d
parent4c1cd45965702d4e2f89c1a4fb2023a5043728fc (diff)
downloadbcm5719-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.cpp27
-rw-r--r--lld/ELF/SymbolTable.h4
-rw-r--r--lld/ELF/Symbols.h11
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) {}
OpenPOWER on IntegriCloud