1//===----- ELF_riscv.h - JIT link functions for ELF/riscv ----*- C++ -*----===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9//===----------------------------------------------------------------------===// 10// 11// jit-link functions for ELF/riscv. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_EXECUTIONENGINE_JITLINK_ELF_RISCV_H 16#define LLVM_EXECUTIONENGINE_JITLINK_ELF_RISCV_H 17 18#include "llvm/ExecutionEngine/JITLink/JITLink.h" 19 20namespace llvm { 21namespace jitlink { 22 23/// Create a LinkGraph from an ELF/riscv relocatable object 24/// 25/// Note: The graph does not take ownership of the underlying buffer, nor copy 26/// its contents. The caller is responsible for ensuring that the object buffer 27/// outlives the graph. 28Expected<std::unique_ptr<LinkGraph>> 29createLinkGraphFromELFObject_riscv(MemoryBufferRef ObjectBuffer); 30 31/// jit-link the given object buffer, which must be a ELF riscv object file. 32void link_ELF_riscv(std::unique_ptr<LinkGraph> G, 33 std::unique_ptr<JITLinkContext> Ctx); 34 35/// Returns a pass that performs linker relaxation. Should be added to 36/// PostAllocationPasses. 37LinkGraphPassFunction createRelaxationPass_ELF_riscv(); 38 39} // end namespace jitlink 40} // end namespace llvm 41 42#endif // LLVM_EXECUTIONENGINE_JITLINK_ELF_RISCV_H 43