• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  
31  namespace llvm {
32  namespace object {
33  
34  using RelocationResolver = uint64_t (*)(RelocationRef R, uint64_t S, uint64_t A);
35  
36  std::pair<bool (*)(uint64_t), RelocationResolver>
37  getRelocationResolver(const ObjectFile &Obj);
38  
39  } // end namespace object
40  } // end namespace llvm
41  
42  #endif // LLVM_OBJECT_RELOCVISITOR_H
43