[lld] fe0d0a9 - [ELF] Merge numSymbols and numELFSyms
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 8 15:59:09 PST 2024
Author: Fangrui Song
Date: 2024-12-08T15:59:03-08:00
New Revision: fe0d0a9e627f606cd2356cc5b2ee0266e8e3ef38
URL: https://github.com/llvm/llvm-project/commit/fe0d0a9e627f606cd2356cc5b2ee0266e8e3ef38
DIFF: https://github.com/llvm/llvm-project/commit/fe0d0a9e627f606cd2356cc5b2ee0266e8e3ef38.diff
LOG: [ELF] Merge numSymbols and numELFSyms
Added:
Modified:
lld/ELF/InputFiles.cpp
lld/ELF/InputFiles.h
Removed:
################################################################################
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 2006b3ba352070..0714c8ce6c16bc 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -528,7 +528,7 @@ template <class ELFT> void ELFFileBase::init(InputFile::Kind k) {
Fatal(ctx) << this << ": invalid sh_info in symbol table";
elfSyms = reinterpret_cast<const void *>(eSyms.data());
- numELFSyms = uint32_t(eSyms.size());
+ numSymbols = eSyms.size();
stringTable = CHECK2(obj.getStringTableForSymtab(*symtabSec, sections), this);
}
@@ -1089,10 +1089,8 @@ InputSectionBase *ObjFile<ELFT>::createInputSection(uint32_t idx,
template <class ELFT>
void ObjFile<ELFT>::initializeSymbols(const object::ELFFile<ELFT> &obj) {
ArrayRef<Elf_Sym> eSyms = this->getELFSyms<ELFT>();
- if (numSymbols == 0) {
- numSymbols = eSyms.size();
+ if (!symbols)
symbols = std::make_unique<Symbol *[]>(numSymbols);
- }
// Some entries have been filled by LazyObjFile.
auto *symtab = ctx.symtab.get();
@@ -1432,8 +1430,6 @@ template <class ELFT> void SharedFile::parse() {
const Elf_Shdr *versymSec = nullptr;
const Elf_Shdr *verdefSec = nullptr;
const Elf_Shdr *verneedSec = nullptr;
-
- numSymbols = numELFSyms;
symbols = std::make_unique<Symbol *[]>(numSymbols);
// Search for .dynsym, .dynamic, .symtab, .gnu.version and .gnu.version_d.
@@ -1457,7 +1453,7 @@ template <class ELFT> void SharedFile::parse() {
}
}
- if (versymSec && numELFSyms == 0) {
+ if (versymSec && numSymbols == 0) {
ErrAlways(ctx) << "SHT_GNU_versym should be associated with symbol table";
return;
}
@@ -1500,7 +1496,7 @@ template <class ELFT> void SharedFile::parse() {
// Parse ".gnu.version" section which is a parallel array for the symbol
// table. If a given file doesn't have a ".gnu.version" section, we use
// VER_NDX_GLOBAL.
- size_t size = numELFSyms - firstGlobal;
+ size_t size = numSymbols - firstGlobal;
std::vector<uint16_t> versyms(size, VER_NDX_GLOBAL);
if (versymSec) {
ArrayRef<Elf_Versym> versym =
diff --git a/lld/ELF/InputFiles.h b/lld/ELF/InputFiles.h
index f31256a4b516d7..b00e7a4286991c 100644
--- a/lld/ELF/InputFiles.h
+++ b/lld/ELF/InputFiles.h
@@ -53,7 +53,7 @@ class InputFile {
protected:
std::unique_ptr<Symbol *[]> symbols;
- uint32_t numSymbols = 0;
+ size_t numSymbols = 0;
SmallVector<InputSectionBase *, 0> sections;
public:
@@ -208,7 +208,7 @@ class ELFFileBase : public InputFile {
}
template <typename ELFT> typename ELFT::SymRange getELFSyms() const {
return typename ELFT::SymRange(
- reinterpret_cast<const typename ELFT::Sym *>(elfSyms), numELFSyms);
+ reinterpret_cast<const typename ELFT::Sym *>(elfSyms), numSymbols);
}
template <typename ELFT> typename ELFT::SymRange getGlobalELFSyms() const {
return getELFSyms<ELFT>().slice(firstGlobal);
@@ -225,7 +225,6 @@ class ELFFileBase : public InputFile {
const void *elfShdrs = nullptr;
const void *elfSyms = nullptr;
uint32_t numELFShdrs = 0;
- uint32_t numELFSyms = 0;
uint32_t firstGlobal = 0;
// Below are ObjFile specific members.
More information about the llvm-commits
mailing list