diff options
Diffstat (limited to 'lib/ReaderWriter/ELF/ARM/ARMSymbolTable.h')
-rw-r--r-- | lib/ReaderWriter/ELF/ARM/ARMSymbolTable.h | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/lib/ReaderWriter/ELF/ARM/ARMSymbolTable.h b/lib/ReaderWriter/ELF/ARM/ARMSymbolTable.h deleted file mode 100644 index 85b9c9162589..000000000000 --- a/lib/ReaderWriter/ELF/ARM/ARMSymbolTable.h +++ /dev/null @@ -1,59 +0,0 @@ -//===--------- lib/ReaderWriter/ELF/ARM/ARMSymbolTable.h ------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLD_READER_WRITER_ELF_ARM_ARM_SYMBOL_TABLE_H -#define LLD_READER_WRITER_ELF_ARM_ARM_SYMBOL_TABLE_H - -#include "SectionChunks.h" -#include "TargetLayout.h" -#include "ARMELFFile.h" - -namespace lld { -namespace elf { - -/// \brief The SymbolTable class represents the symbol table in a ELF file -class ARMSymbolTable : public SymbolTable<ELF32LE> { -public: - typedef llvm::object::Elf_Sym_Impl<ELF32LE> Elf_Sym; - - ARMSymbolTable(const ELFLinkingContext &ctx); - - void addDefinedAtom(Elf_Sym &sym, const DefinedAtom *da, - int64_t addr) override; -}; - -ARMSymbolTable::ARMSymbolTable(const ELFLinkingContext &ctx) - : SymbolTable(ctx, ".symtab", TargetLayout<ELF32LE>::ORDER_SYMBOL_TABLE) {} - -void ARMSymbolTable::addDefinedAtom(Elf_Sym &sym, const DefinedAtom *da, - int64_t addr) { - SymbolTable::addDefinedAtom(sym, da, addr); - - if ((ARMELFDefinedAtom::ARMContentType)da->contentType() == - ARMELFDefinedAtom::typeARMExidx) - sym.st_value = addr; - - // Set zero bit to distinguish real symbols addressing Thumb instructions. - // Don't care about mapping symbols like $t and others. - if (DefinedAtom::codeARMThumb == da->codeModel()) - sym.st_value = static_cast<int64_t>(sym.st_value) | 0x1; - - // Mapping symbols should have special values of binding, type and size set. - if ((DefinedAtom::codeARM_a == da->codeModel()) || - (DefinedAtom::codeARM_d == da->codeModel()) || - (DefinedAtom::codeARM_t == da->codeModel())) { - sym.setBindingAndType(llvm::ELF::STB_LOCAL, llvm::ELF::STT_NOTYPE); - sym.st_size = 0; - } -} - -} // elf -} // lld - -#endif // LLD_READER_WRITER_ELF_ARM_ARM_SYMBOL_TABLE_H |