//===- lib/ReaderWriter/ELF/Reader.cpp ------------------------------------===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// /// /// \file /// \brief Defines the ELF Reader and all helper sub classes to consume an ELF /// file and produces atoms out of it. /// //===----------------------------------------------------------------------===// #include "ELFReader.h" #include #include using llvm::support::endianness; using namespace llvm::object; namespace lld { // This dynamic registration of a handler causes support for all ELF // architectures to be pulled into the linker. If we want to support making a // linker that only supports one ELF architecture, we'd need to change this // to have a different registration method for each architecture. void Registry::addSupportELFObjects(ELFLinkingContext &ctx) { // Tell registry about the ELF object file parser. add(ctx.getTargetHandler().getObjReader()); // Tell registry about the relocation name to number mapping for this arch. ctx.registerRelocationNames(*this); } void Registry::addSupportELFDynamicSharedObjects(ELFLinkingContext &ctx) { // Tell registry about the ELF dynamic shared library file parser. add(ctx.getTargetHandler().getDSOReader()); } } // end namespace lld