diff options
Diffstat (limited to 'lld/ELF')
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 4 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.h | 2 | ||||
-rw-r--r-- | lld/ELF/Symbols.cpp | 5 | ||||
-rw-r--r-- | lld/ELF/Symbols.h | 4 | ||||
-rw-r--r-- | lld/ELF/Writer.cpp | 32 |
5 files changed, 21 insertions, 26 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index c1f01c10da8..1b2c86fa334 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -161,8 +161,8 @@ DefinedRegular<ELFT> *SymbolTable<ELFT>::addAbsolute(StringRef Name, template <class ELFT> SymbolBody *SymbolTable<ELFT>::addSynthetic(StringRef Name, OutputSectionBase<ELFT> &Sec, - uintX_t Val, uint8_t Visibility) { - auto *Sym = new (Alloc) DefinedSynthetic<ELFT>(Name, Val, Sec, Visibility); + uintX_t Val) { + auto *Sym = new (Alloc) DefinedSynthetic<ELFT>(Name, Val, Sec); resolve(Sym); return Sym; } diff --git a/lld/ELF/SymbolTable.h b/lld/ELF/SymbolTable.h index 34ab4655615..2cbad46eb93 100644 --- a/lld/ELF/SymbolTable.h +++ b/lld/ELF/SymbolTable.h @@ -55,7 +55,7 @@ public: DefinedRegular<ELFT> *addAbsolute(StringRef Name, uint8_t Visibility = llvm::ELF::STV_HIDDEN); SymbolBody *addSynthetic(StringRef Name, OutputSectionBase<ELFT> &Section, - uintX_t Value, uint8_t Visibility); + uintX_t Value); DefinedRegular<ELFT> *addIgnored(StringRef Name, uint8_t Visibility = llvm::ELF::STV_HIDDEN); diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp index a0d07690da6..4e9b6231185 100644 --- a/lld/ELF/Symbols.cpp +++ b/lld/ELF/Symbols.cpp @@ -296,9 +296,8 @@ UndefinedElf<ELFT>::UndefinedElf(const Elf_Sym &Sym) template <typename ELFT> DefinedSynthetic<ELFT>::DefinedSynthetic(StringRef N, uintX_t Value, - OutputSectionBase<ELFT> &Section, - uint8_t StOther) - : Defined(SymbolBody::DefinedSyntheticKind, N, STB_GLOBAL, StOther, + OutputSectionBase<ELFT> &Section) + : Defined(SymbolBody::DefinedSyntheticKind, N, STB_GLOBAL, STV_HIDDEN, 0 /* Type */), Value(Value), Section(Section) {} diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h index 1b3cb2dc226..85e08670cde 100644 --- a/lld/ELF/Symbols.h +++ b/lld/ELF/Symbols.h @@ -269,8 +269,8 @@ InputSectionBase<ELFT> *DefinedRegular<ELFT>::NullInputSection; template <class ELFT> class DefinedSynthetic : public Defined { public: typedef typename ELFT::uint uintX_t; - DefinedSynthetic(StringRef N, uintX_t Value, OutputSectionBase<ELFT> &Section, - uint8_t StOther); + DefinedSynthetic(StringRef N, uintX_t Value, + OutputSectionBase<ELFT> &Section); static bool classof(const SymbolBody *S) { return S->kind() == SymbolBody::DefinedSyntheticKind; diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index c4f8ffc25c5..6bfe75dae8f 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -932,11 +932,10 @@ bool Writer<ELFT>::isDiscarded(InputSectionBase<ELFT> *S) const { template <class ELFT> static SymbolBody * addOptionalSynthetic(SymbolTable<ELFT> &Table, StringRef Name, - OutputSectionBase<ELFT> &Sec, typename ELFT::uint Val, - uint8_t Visibility) { + OutputSectionBase<ELFT> &Sec, typename ELFT::uint Val) { if (!Table.find(Name)) return nullptr; - return Table.addSynthetic(Name, Sec, Val, Visibility); + return Table.addSynthetic(Name, Sec, Val); } // The beginning and the ending of .rel[a].plt section are marked @@ -951,12 +950,11 @@ void Writer<ELFT>::addRelIpltSymbols() { return; StringRef S = Config->Rela ? "__rela_iplt_start" : "__rel_iplt_start"; ElfSym<ELFT>::RelaIpltStart = - addOptionalSynthetic(Symtab, S, *Out<ELFT>::RelaPlt, 0, STV_HIDDEN); + addOptionalSynthetic(Symtab, S, *Out<ELFT>::RelaPlt, 0); S = Config->Rela ? "__rela_iplt_end" : "__rel_iplt_end"; - ElfSym<ELFT>::RelaIpltEnd = - addOptionalSynthetic(Symtab, S, *Out<ELFT>::RelaPlt, - DefinedSynthetic<ELFT>::SectionEnd, STV_HIDDEN); + ElfSym<ELFT>::RelaIpltEnd = addOptionalSynthetic( + Symtab, S, *Out<ELFT>::RelaPlt, DefinedSynthetic<ELFT>::SectionEnd); } template <class ELFT> static bool includeInSymtab(const SymbolBody &B) { @@ -1076,18 +1074,18 @@ template <class ELFT> void Writer<ELFT>::addReservedSymbols() { // See "Global Data Symbols" in Chapter 6 in the following document: // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf ElfSym<ELFT>::MipsGp = - Symtab.addSynthetic("_gp", *Out<ELFT>::Got, MipsGPOffset, STV_DEFAULT); + Symtab.addSynthetic("_gp", *Out<ELFT>::Got, MipsGPOffset); // On MIPS O32 ABI, _gp_disp is a magic symbol designates offset between // start of function and 'gp' pointer into GOT. - ElfSym<ELFT>::MipsGpDisp = addOptionalSynthetic( - Symtab, "_gp_disp", *Out<ELFT>::Got, MipsGPOffset, STV_HIDDEN); + ElfSym<ELFT>::MipsGpDisp = + addOptionalSynthetic(Symtab, "_gp_disp", *Out<ELFT>::Got, MipsGPOffset); // The __gnu_local_gp is a magic symbol equal to the current value of 'gp' // pointer. This symbol is used in the code generated by .cpload pseudo-op // in case of using -mno-shared option. // https://sourceware.org/ml/binutils/2004-12/msg00094.html ElfSym<ELFT>::MipsLocalGp = addOptionalSynthetic( - Symtab, "__gnu_local_gp", *Out<ELFT>::Got, MipsGPOffset, STV_HIDDEN); + Symtab, "__gnu_local_gp", *Out<ELFT>::Got, MipsGPOffset); } // In the assembly for 32 bit x86 the _GLOBAL_OFFSET_TABLE_ symbol @@ -1213,7 +1211,7 @@ template <class ELFT> void Writer<ELFT>::createSections() { // Even the author of gold doesn't remember why gold behaves that way. // https://sourceware.org/ml/binutils/2002-03/msg00360.html if (isOutputDynamic()) - Symtab.addSynthetic("_DYNAMIC", *Out<ELFT>::Dynamic, 0, STV_HIDDEN); + Symtab.addSynthetic("_DYNAMIC", *Out<ELFT>::Dynamic, 0); // Define __rel[a]_iplt_{start,end} symbols if needed. addRelIpltSymbols(); @@ -1363,9 +1361,8 @@ template <class ELFT> void Writer<ELFT>::addStartEndSymbols() { auto Define = [&](StringRef Start, StringRef End, OutputSectionBase<ELFT> *OS) { if (OS) { - Symtab.addSynthetic(Start, *OS, 0, STV_HIDDEN); - Symtab.addSynthetic(End, *OS, DefinedSynthetic<ELFT>::SectionEnd, - STV_HIDDEN); + Symtab.addSynthetic(Start, *OS, 0); + Symtab.addSynthetic(End, *OS, DefinedSynthetic<ELFT>::SectionEnd); } else { Symtab.addIgnored(Start); Symtab.addIgnored(End); @@ -1395,11 +1392,10 @@ void Writer<ELFT>::addStartStopSymbols(OutputSectionBase<ELFT> *Sec) { StringRef Stop = Saver.save("__stop_" + S); if (SymbolBody *B = Symtab.find(Start)) if (B->isUndefined()) - Symtab.addSynthetic(Start, *Sec, 0, STV_HIDDEN); + Symtab.addSynthetic(Start, *Sec, 0); if (SymbolBody *B = Symtab.find(Stop)) if (B->isUndefined()) - Symtab.addSynthetic(Stop, *Sec, DefinedSynthetic<ELFT>::SectionEnd, - STV_HIDDEN); + Symtab.addSynthetic(Stop, *Sec, DefinedSynthetic<ELFT>::SectionEnd); } template <class ELFT> static bool needsPtLoad(OutputSectionBase<ELFT> *Sec) { |