RuntimeDyldMachO.h revision 0e4fa5ff365fccff46870b7d5d8d4d1d46e77986
18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//===-- RuntimeDyldMachO.h - Run-time dynamic linker for MC-JIT ---*- C++ -*-=//
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//                     The LLVM Compiler Infrastructure
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// This file is distributed under the University of Illinois Open Source
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// License. See LICENSE.TXT for details.
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//===----------------------------------------------------------------------===//
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// MachO support for MC-JIT runtime dynamic linker.
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project//===----------------------------------------------------------------------===//
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef LLVM_RUNTIME_DYLD_MACHO_H
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define LLVM_RUNTIME_DYLD_MACHO_H
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "llvm/ADT/IndexedMap.h"
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "llvm/Object/MachOObject.h"
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "llvm/Support/Format.h"
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "RuntimeDyldImpl.h"
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectusing namespace llvm;
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectusing namespace llvm::object;
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectnamespace llvm {
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectclass RuntimeDyldMachO : public RuntimeDyldImpl {
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectprotected:
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  bool resolveI386Relocation(uint8_t *LocalAddress,
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                             uint64_t FinalAddress,
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                             uint64_t Value,
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                             bool isPCRel,
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                             unsigned Type,
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                             unsigned Size,
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                             int64_t Addend);
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  bool resolveX86_64Relocation(uint8_t *LocalAddress,
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                               uint64_t FinalAddress,
382ff39a367738422c0ca1313cac8ff380e1fdd498Ot ten Thije                               uint64_t Value,
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                               bool isPCRel,
405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                               unsigned Type,
41e92bc56ef89ab8b51c4c89d4d9779b64e9491b9bDavid 'Digit' Turner                               unsigned Size,
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                               int64_t Addend);
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  bool resolveARMRelocation(uint8_t *LocalAddress,
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            uint64_t FinalAddress,
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            uint64_t Value,
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            bool isPCRel,
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            unsigned Type,
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            unsigned Size,
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            int64_t Addend);
5034f2974ce7ec7c71beb47b5daf9089d5c8c40c79David 'Digit' Turner
51736e01f86f4ec4049bb5795f1ddb979132b05333Tim Wan  virtual void processRelocationRef(const ObjRelocationInfo &Rel,
5271bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine                                    const ObjectFile &Obj,
5371bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine                                    ObjSectionToIDMap &ObjSectionToID,
54e95660aadc669784406d5f5a867988b8ecc2ed0dVladimir Chtchetkine                                    LocalSymbolMap &Symbols, StubMap &Stubs);
5594a2fba98924c6684650d66409934358cb0c9d09Vladimir Chtchetkine
56250b2e00af04f8407dea564e643dad4ef08b8a88Vladimir Chtchetkinepublic:
57777eb68eb60cac18f4b62e2e1b14a906875cbe7aVladimir Chtchetkine  virtual void resolveRelocation(uint8_t *LocalAddress,
58777eb68eb60cac18f4b62e2e1b14a906875cbe7aVladimir Chtchetkine                                 uint64_t FinalAddress,
59777eb68eb60cac18f4b62e2e1b14a906875cbe7aVladimir Chtchetkine                                 uint64_t Value,
6085276806ec6ac969d7befa2496c1de59adaaac74Vladimir Chtchetkine                                 uint32_t Type,
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                 int64_t Addend);
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  RuntimeDyldMachO(RTDyldMemoryManager *mm) : RuntimeDyldImpl(mm) {}
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project  bool isCompatibleFormat(const MemoryBuffer *InputBuffer) const;
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} // end namespace llvm
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project