mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
Library-ize the dyld components of llvm-rtdyld.
Move the dynamic linking functionality of the llvm-rtdyld program into an ExecutionEngine support library. Update llvm-rtdyld to just load an object file into memory, use the library to process it, then run the _main() function, if one is found. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128031 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
45
include/llvm/ExecutionEngine/RuntimeDyld.h
Normal file
45
include/llvm/ExecutionEngine/RuntimeDyld.h
Normal file
@ -0,0 +1,45 @@
|
||||
//===-- RuntimeDyld.h - Run-time dynamic linker for MC-JIT ------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Interface for the runtime dynamic linker facilities of the MC-JIT.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_RUNTIME_DYLD_H
|
||||
#define LLVM_RUNTIME_DYLD_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/Support/Memory.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class RuntimeDyldImpl;
|
||||
class MemoryBuffer;
|
||||
|
||||
class RuntimeDyld {
|
||||
RuntimeDyld(const RuntimeDyld &); // DO NOT IMPLEMENT
|
||||
void operator=(const RuntimeDyld &); // DO NOT IMPLEMENT
|
||||
|
||||
// RuntimeDyldImpl is the actual class. RuntimeDyld is just the public
|
||||
// interface.
|
||||
RuntimeDyldImpl *Dyld;
|
||||
public:
|
||||
RuntimeDyld();
|
||||
~RuntimeDyld();
|
||||
|
||||
bool loadObject(MemoryBuffer *InputBuffer);
|
||||
void *getSymbolAddress(StringRef Name);
|
||||
// FIXME: Should be parameterized to get the memory block associated with
|
||||
// a particular loaded object.
|
||||
sys::MemoryBlock getMemoryBlock();
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user