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