1//===- RelocVisitor.h - Visitor for object file relocations -----*- 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// This file provides a wrapper around all the different types of relocations
10// in different file formats, such that a client can handle them in a unified
11// manner by only implementing a minimal number of functions.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_OBJECT_RELOCVISITOR_H
16#define LLVM_OBJECT_RELOCVISITOR_H
17
18#include "llvm/ADT/Triple.h"
19#include "llvm/BinaryFormat/ELF.h"
20#include "llvm/BinaryFormat/MachO.h"
21#include "llvm/Object/COFF.h"
22#include "llvm/Object/ELFObjectFile.h"
23#include "llvm/Object/MachO.h"
24#include "llvm/Object/ObjectFile.h"
25#include "llvm/Object/Wasm.h"
26#include "llvm/Support/Casting.h"
27#include "llvm/Support/ErrorHandling.h"
28#include <cstdint>
29#include <system_error>
30
31namespace llvm {
32namespace object {
33
34using RelocationResolver = uint64_t (*)(RelocationRef R, uint64_t S, uint64_t A);
35
36std::pair<bool (*)(uint64_t), RelocationResolver>
37getRelocationResolver(const ObjectFile &Obj);
38
39} // end namespace object
40} // end namespace llvm
41
42#endif // LLVM_OBJECT_RELOCVISITOR_H
43