LCOV - code coverage report
Current view: top level - lib/ExecutionEngine/RuntimeDyld/Targets - RuntimeDyldELFMips.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 2 2 100.0 %
Date: 2017-09-14 15:23:50 Functions: 1 2 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- RuntimeDyldELFMips.h ---- ELF/Mips specific code. -------*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : 
      10             : #ifndef LLVM_LIB_EXECUTIONENGINE_RUNTIMEDYLD_TARGETS_RUNTIMEDYLDELFMIPS_H
      11             : #define LLVM_LIB_EXECUTIONENGINE_RUNTIMEDYLD_TARGETS_RUNTIMEDYLDELFMIPS_H
      12             : 
      13             : #include "../RuntimeDyldELF.h"
      14             : #include <string>
      15             : 
      16             : #define DEBUG_TYPE "dyld"
      17             : 
      18             : namespace llvm {
      19             : 
      20          10 : class RuntimeDyldELFMips : public RuntimeDyldELF {
      21             : public:
      22             : 
      23             :   typedef uint64_t TargetPtrT;
      24             : 
      25             :   RuntimeDyldELFMips(RuntimeDyld::MemoryManager &MM,
      26             :                      JITSymbolResolver &Resolver)
      27          10 :       : RuntimeDyldELF(MM, Resolver) {}
      28             : 
      29             :   void resolveRelocation(const RelocationEntry &RE, uint64_t Value) override;
      30             : 
      31             : protected:
      32             :   void resolveMIPSO32Relocation(const SectionEntry &Section, uint64_t Offset,
      33             :                                 uint32_t Value, uint32_t Type, int32_t Addend);
      34             :   void resolveMIPSN32Relocation(const SectionEntry &Section, uint64_t Offset,
      35             :                                 uint64_t Value, uint32_t Type, int64_t Addend,
      36             :                                 uint64_t SymOffset, SID SectionID);
      37             :   void resolveMIPSN64Relocation(const SectionEntry &Section, uint64_t Offset,
      38             :                                 uint64_t Value, uint32_t Type, int64_t Addend,
      39             :                                 uint64_t SymOffset, SID SectionID);
      40             : 
      41             : private:
      42             :   /// \brief A object file specific relocation resolver
      43             :   /// \param RE The relocation to be resolved
      44             :   /// \param Value Target symbol address to apply the relocation action
      45             :   uint64_t evaluateRelocation(const RelocationEntry &RE, uint64_t Value,
      46             :                               uint64_t Addend);
      47             : 
      48             :   /// \brief A object file specific relocation resolver
      49             :   /// \param RE The relocation to be resolved
      50             :   /// \param Value Target symbol address to apply the relocation action
      51             :   void applyRelocation(const RelocationEntry &RE, uint64_t Value);
      52             : 
      53             :   int64_t evaluateMIPS32Relocation(const SectionEntry &Section, uint64_t Offset,
      54             :                                    uint64_t Value, uint32_t Type);
      55             :   int64_t evaluateMIPS64Relocation(const SectionEntry &Section,
      56             :                                    uint64_t Offset, uint64_t Value,
      57             :                                    uint32_t Type,  int64_t Addend,
      58             :                                    uint64_t SymOffset, SID SectionID);
      59             : 
      60             :   void applyMIPSRelocation(uint8_t *TargetPtr, int64_t CalculatedValue,
      61             :                            uint32_t Type);
      62             : 
      63             : };
      64             : }
      65             : 
      66             : #undef DEBUG_TYPE
      67             : 
      68             : #endif

Generated by: LCOV version 1.13