Coverage Report

Created: 2018-01-17 17:22

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/lld/ELF/Relocations.h
Line
Count
Source
1
//===- Relocations.h -------------------------------------------*- C++ -*-===//
2
//
3
//                             The LLVM Linker
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
10
#ifndef LLD_ELF_RELOCATIONS_H
11
#define LLD_ELF_RELOCATIONS_H
12
13
#include "lld/Common/LLVM.h"
14
#include "llvm/ADT/DenseMap.h"
15
#include <map>
16
#include <vector>
17
18
namespace lld {
19
namespace elf {
20
class Symbol;
21
class InputSection;
22
class InputSectionBase;
23
class OutputSection;
24
class OutputSection;
25
26
// Represents a relocation type, such as R_X86_64_PC32 or R_ARM_THM_CALL.
27
typedef uint32_t RelType;
28
29
// List of target-independent relocation types. Relocations read
30
// from files are converted to these types so that the main code
31
// doesn't have to know about architecture-specific details.
32
enum RelExpr {
33
  R_INVALID,
34
  R_ABS,
35
  R_ARM_SBREL,
36
  R_GOT,
37
  R_GOTONLY_PC,
38
  R_GOTONLY_PC_FROM_END,
39
  R_GOTREL,
40
  R_GOTREL_FROM_END,
41
  R_GOT_FROM_END,
42
  R_GOT_OFF,
43
  R_GOT_PAGE_PC,
44
  R_GOT_PC,
45
  R_HINT,
46
  R_MIPS_GOTREL,
47
  R_MIPS_GOT_GP,
48
  R_MIPS_GOT_GP_PC,
49
  R_MIPS_GOT_LOCAL_PAGE,
50
  R_MIPS_GOT_OFF,
51
  R_MIPS_GOT_OFF32,
52
  R_MIPS_TLSGD,
53
  R_MIPS_TLSLD,
54
  R_NEG_TLS,
55
  R_NONE,
56
  R_PAGE_PC,
57
  R_PC,
58
  R_PLT,
59
  R_PLT_PAGE_PC,
60
  R_PLT_PC,
61
  R_PPC_OPD,
62
  R_PPC_PLT_OPD,
63
  R_PPC_TOC,
64
  R_RELAX_GOT_PC,
65
  R_RELAX_GOT_PC_NOPIC,
66
  R_RELAX_TLS_GD_TO_IE,
67
  R_RELAX_TLS_GD_TO_IE_ABS,
68
  R_RELAX_TLS_GD_TO_IE_END,
69
  R_RELAX_TLS_GD_TO_IE_PAGE_PC,
70
  R_RELAX_TLS_GD_TO_LE,
71
  R_RELAX_TLS_GD_TO_LE_NEG,
72
  R_RELAX_TLS_IE_TO_LE,
73
  R_RELAX_TLS_LD_TO_LE,
74
  R_SIZE,
75
  R_TLS,
76
  R_TLSDESC,
77
  R_TLSDESC_CALL,
78
  R_TLSDESC_PAGE,
79
  R_TLSGD,
80
  R_TLSGD_PC,
81
  R_TLSLD,
82
  R_TLSLD_PC,
83
};
84
85
// Build a bitmask with one bit set for each RelExpr.
86
//
87
// Constexpr function arguments can't be used in static asserts, so we
88
// use template arguments to build the mask.
89
// But function template partial specializations don't exist (needed
90
// for base case of the recursion), so we need a dummy struct.
91
template <RelExpr... Exprs> struct RelExprMaskBuilder {
92
62.8k
  static inline uint64_t build() { return 0; }
93
};
94
95
// Specialization for recursive case.
96
template <RelExpr Head, RelExpr... Tail>
97
struct RelExprMaskBuilder<Head, Tail...> {
98
473k
  static inline uint64_t build() {
99
473k
    static_assert(0 <= Head && Head < 64,
100
473k
                  "RelExpr is too large for 64-bit mask!");
101
473k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
473k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)12, (lld::elf::RelExpr)22>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)22>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)30>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)5, (lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)30>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)30>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)7, (lld::elf::RelExpr)30>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)30>::build()
Line
Count
Source
98
12.4k
  static inline uint64_t build() {
99
12.4k
    static_assert(0 <= Head && Head < 64,
100
12.4k
                  "RelExpr is too large for 64-bit mask!");
101
12.4k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.4k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)43, (lld::elf::RelExpr)45, (lld::elf::RelExpr)44>::build()
Line
Count
Source
98
163
  static inline uint64_t build() {
99
163
    static_assert(0 <= Head && Head < 64,
100
163
                  "RelExpr is too large for 64-bit mask!");
101
163
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
163
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)45, (lld::elf::RelExpr)44>::build()
Line
Count
Source
98
163
  static inline uint64_t build() {
99
163
    static_assert(0 <= Head && Head < 64,
100
163
                  "RelExpr is too large for 64-bit mask!");
101
163
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
163
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)44>::build()
Line
Count
Source
98
163
  static inline uint64_t build() {
99
163
    static_assert(0 <= Head && Head < 64,
100
163
                  "RelExpr is too large for 64-bit mask!");
101
163
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
163
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)49, (lld::elf::RelExpr)48>::build()
Line
Count
Source
98
147
  static inline uint64_t build() {
99
147
    static_assert(0 <= Head && Head < 64,
100
147
                  "RelExpr is too large for 64-bit mask!");
101
147
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
147
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)48>::build()
Line
Count
Source
98
147
  static inline uint64_t build() {
99
147
    static_assert(0 <= Head && Head < 64,
100
147
                  "RelExpr is too large for 64-bit mask!");
101
147
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
147
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)1, (lld::elf::RelExpr)48, (lld::elf::RelExpr)49>::build()
Line
Count
Source
98
138
  static inline uint64_t build() {
99
138
    static_assert(0 <= Head && Head < 64,
100
138
                  "RelExpr is too large for 64-bit mask!");
101
138
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
138
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)48, (lld::elf::RelExpr)49>::build()
Line
Count
Source
98
138
  static inline uint64_t build() {
99
138
    static_assert(0 <= Head && Head < 64,
100
138
                  "RelExpr is too large for 64-bit mask!");
101
138
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
138
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)49>::build()
Line
Count
Source
98
138
  static inline uint64_t build() {
99
138
    static_assert(0 <= Head && Head < 64,
100
138
                  "RelExpr is too large for 64-bit mask!");
101
138
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
138
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)43, (lld::elf::RelExpr)45, (lld::elf::RelExpr)44, (lld::elf::RelExpr)46, (lld::elf::RelExpr)47>::build()
Line
Count
Source
98
131
  static inline uint64_t build() {
99
131
    static_assert(0 <= Head && Head < 64,
100
131
                  "RelExpr is too large for 64-bit mask!");
101
131
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
131
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)45, (lld::elf::RelExpr)44, (lld::elf::RelExpr)46, (lld::elf::RelExpr)47>::build()
Line
Count
Source
98
131
  static inline uint64_t build() {
99
131
    static_assert(0 <= Head && Head < 64,
100
131
                  "RelExpr is too large for 64-bit mask!");
101
131
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
131
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)44, (lld::elf::RelExpr)46, (lld::elf::RelExpr)47>::build()
Line
Count
Source
98
131
  static inline uint64_t build() {
99
131
    static_assert(0 <= Head && Head < 64,
100
131
                  "RelExpr is too large for 64-bit mask!");
101
131
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
131
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)46, (lld::elf::RelExpr)47>::build()
Line
Count
Source
98
131
  static inline uint64_t build() {
99
131
    static_assert(0 <= Head && Head < 64,
100
131
                  "RelExpr is too large for 64-bit mask!");
101
131
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
131
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)47>::build()
Line
Count
Source
98
131
  static inline uint64_t build() {
99
131
    static_assert(0 <= Head && Head < 64,
100
131
                  "RelExpr is too large for 64-bit mask!");
101
131
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
131
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)3, (lld::elf::RelExpr)8, (lld::elf::RelExpr)11, (lld::elf::RelExpr)10>::build()
Line
Count
Source
98
101
  static inline uint64_t build() {
99
101
    static_assert(0 <= Head && Head < 64,
100
101
                  "RelExpr is too large for 64-bit mask!");
101
101
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
101
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)8, (lld::elf::RelExpr)11, (lld::elf::RelExpr)10>::build()
Line
Count
Source
98
101
  static inline uint64_t build() {
99
101
    static_assert(0 <= Head && Head < 64,
100
101
                  "RelExpr is too large for 64-bit mask!");
101
101
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
101
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)11, (lld::elf::RelExpr)10>::build()
Line
Count
Source
98
101
  static inline uint64_t build() {
99
101
    static_assert(0 <= Head && Head < 64,
100
101
                  "RelExpr is too large for 64-bit mask!");
101
101
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
101
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)10>::build()
Line
Count
Source
98
101
  static inline uint64_t build() {
99
101
    static_assert(0 <= Head && Head < 64,
100
101
                  "RelExpr is too large for 64-bit mask!");
101
101
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
101
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)8, (lld::elf::RelExpr)9, (lld::elf::RelExpr)16, (lld::elf::RelExpr)13, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)9, (lld::elf::RelExpr)16, (lld::elf::RelExpr)13, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)16, (lld::elf::RelExpr)13, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)13, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)45, (lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)12>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)24, (lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)13, (lld::elf::RelExpr)23, (lld::elf::RelExpr)31>::build()
Line
Count
Source
98
400
  static inline uint64_t build() {
99
400
    static_assert(0 <= Head && Head < 64,
100
400
                  "RelExpr is too large for 64-bit mask!");
101
400
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
400
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)13, (lld::elf::RelExpr)23, (lld::elf::RelExpr)31>::build()
Line
Count
Source
98
400
  static inline uint64_t build() {
99
400
    static_assert(0 <= Head && Head < 64,
100
400
                  "RelExpr is too large for 64-bit mask!");
101
400
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
400
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)7, (lld::elf::RelExpr)13, (lld::elf::RelExpr)23, (lld::elf::RelExpr)31>::build()
Line
Count
Source
98
400
  static inline uint64_t build() {
99
400
    static_assert(0 <= Head && Head < 64,
100
400
                  "RelExpr is too large for 64-bit mask!");
101
400
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
400
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)13, (lld::elf::RelExpr)23, (lld::elf::RelExpr)31>::build()
Line
Count
Source
98
400
  static inline uint64_t build() {
99
400
    static_assert(0 <= Head && Head < 64,
100
400
                  "RelExpr is too large for 64-bit mask!");
101
400
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
400
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)23, (lld::elf::RelExpr)31>::build()
Line
Count
Source
98
400
  static inline uint64_t build() {
99
400
    static_assert(0 <= Head && Head < 64,
100
400
                  "RelExpr is too large for 64-bit mask!");
101
400
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
400
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)31>::build()
Line
Count
Source
98
400
  static inline uint64_t build() {
99
400
    static_assert(0 <= Head && Head < 64,
100
400
                  "RelExpr is too large for 64-bit mask!");
101
400
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
400
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)27, (lld::elf::RelExpr)29, (lld::elf::RelExpr)25, (lld::elf::RelExpr)26>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)29, (lld::elf::RelExpr)25, (lld::elf::RelExpr)26>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)25, (lld::elf::RelExpr)26>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)26>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)3, (lld::elf::RelExpr)9, (lld::elf::RelExpr)16, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)9, (lld::elf::RelExpr)16, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)16, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)18, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)11, (lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
lld::elf::RelExprMaskBuilder<(lld::elf::RelExpr)8>::build()
Line
Count
Source
98
12.3k
  static inline uint64_t build() {
99
12.3k
    static_assert(0 <= Head && Head < 64,
100
12.3k
                  "RelExpr is too large for 64-bit mask!");
101
12.3k
    return (uint64_t(1) << Head) | RelExprMaskBuilder<Tail...>::build();
102
12.3k
  }
103
};
104
105
// Return true if `Expr` is one of `Exprs`.
106
// There are fewer than 64 RelExpr's, so we can represent any set of
107
// RelExpr's as a constant bit mask and test for membership with a
108
// couple cheap bitwise operations.
109
62.8k
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
62.8k
  assert(0 <= Expr && (int)Expr < 64 &&
111
62.8k
         "RelExpr is too large for 64-bit mask!");
112
62.8k
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
62.8k
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)12, (lld::elf::RelExpr)22>(lld::elf::RelExpr)
Line
Count
Source
109
12.4k
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
12.4k
  assert(0 <= Expr && (int)Expr < 64 &&
111
12.4k
         "RelExpr is too large for 64-bit mask!");
112
12.4k
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
12.4k
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)30>(lld::elf::RelExpr)
Line
Count
Source
109
12.4k
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
12.4k
  assert(0 <= Expr && (int)Expr < 64 &&
111
12.4k
         "RelExpr is too large for 64-bit mask!");
112
12.4k
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
12.4k
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)43, (lld::elf::RelExpr)45, (lld::elf::RelExpr)44>(lld::elf::RelExpr)
Line
Count
Source
109
163
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
163
  assert(0 <= Expr && (int)Expr < 64 &&
111
163
         "RelExpr is too large for 64-bit mask!");
112
163
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
163
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)49, (lld::elf::RelExpr)48>(lld::elf::RelExpr)
Line
Count
Source
109
147
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
147
  assert(0 <= Expr && (int)Expr < 64 &&
111
147
         "RelExpr is too large for 64-bit mask!");
112
147
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
147
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)1, (lld::elf::RelExpr)48, (lld::elf::RelExpr)49>(lld::elf::RelExpr)
Line
Count
Source
109
138
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
138
  assert(0 <= Expr && (int)Expr < 64 &&
111
138
         "RelExpr is too large for 64-bit mask!");
112
138
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
138
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)43, (lld::elf::RelExpr)45, (lld::elf::RelExpr)44, (lld::elf::RelExpr)46, (lld::elf::RelExpr)47>(lld::elf::RelExpr)
Line
Count
Source
109
131
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
131
  assert(0 <= Expr && (int)Expr < 64 &&
111
131
         "RelExpr is too large for 64-bit mask!");
112
131
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
131
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)3, (lld::elf::RelExpr)8, (lld::elf::RelExpr)11, (lld::elf::RelExpr)10>(lld::elf::RelExpr)
Line
Count
Source
109
101
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
101
  assert(0 <= Expr && (int)Expr < 64 &&
111
101
         "RelExpr is too large for 64-bit mask!");
112
101
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
101
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)8, (lld::elf::RelExpr)9, (lld::elf::RelExpr)16, (lld::elf::RelExpr)13, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)15, (lld::elf::RelExpr)19, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)4, (lld::elf::RelExpr)5, (lld::elf::RelExpr)27, (lld::elf::RelExpr)47, (lld::elf::RelExpr)46, (lld::elf::RelExpr)29, (lld::elf::RelExpr)44, (lld::elf::RelExpr)45, (lld::elf::RelExpr)12>(lld::elf::RelExpr)
Line
Count
Source
109
12.3k
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
12.3k
  assert(0 <= Expr && (int)Expr < 64 &&
111
12.3k
         "RelExpr is too large for 64-bit mask!");
112
12.3k
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
12.3k
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)24, (lld::elf::RelExpr)6, (lld::elf::RelExpr)7, (lld::elf::RelExpr)13, (lld::elf::RelExpr)23, (lld::elf::RelExpr)31>(lld::elf::RelExpr)
Line
Count
Source
109
400
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
400
  assert(0 <= Expr && (int)Expr < 64 &&
111
400
         "RelExpr is too large for 64-bit mask!");
112
400
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
400
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)27, (lld::elf::RelExpr)29, (lld::elf::RelExpr)25, (lld::elf::RelExpr)26>(lld::elf::RelExpr)
Line
Count
Source
109
12.3k
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
12.3k
  assert(0 <= Expr && (int)Expr < 64 &&
111
12.3k
         "RelExpr is too large for 64-bit mask!");
112
12.3k
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
12.3k
}
bool lld::elf::isRelExprOneOf<(lld::elf::RelExpr)3, (lld::elf::RelExpr)9, (lld::elf::RelExpr)16, (lld::elf::RelExpr)17, (lld::elf::RelExpr)18, (lld::elf::RelExpr)10, (lld::elf::RelExpr)11, (lld::elf::RelExpr)8>(lld::elf::RelExpr)
Line
Count
Source
109
12.3k
template <RelExpr... Exprs> bool isRelExprOneOf(RelExpr Expr) {
110
12.3k
  assert(0 <= Expr && (int)Expr < 64 &&
111
12.3k
         "RelExpr is too large for 64-bit mask!");
112
12.3k
  return (uint64_t(1) << Expr) & RelExprMaskBuilder<Exprs...>::build();
113
12.3k
}
114
115
// Architecture-neutral representation of relocation.
116
struct Relocation {
117
  RelExpr Expr;
118
  RelType Type;
119
  uint64_t Offset;
120
  int64_t Addend;
121
  Symbol *Sym;
122
};
123
124
template <class ELFT> void scanRelocations(InputSectionBase &);
125
126
class ThunkSection;
127
class Thunk;
128
struct InputSectionDescription;
129
130
class ThunkCreator {
131
public:
132
  // Return true if Thunks have been added to OutputSections
133
  bool createThunks(ArrayRef<OutputSection *> OutputSections);
134
135
  // The number of completed passes of createThunks this permits us
136
  // to do one time initialization on Pass 0 and put a limit on the
137
  // number of times it can be called to prevent infinite loops.
138
  uint32_t Pass = 0;
139
140
private:
141
  void mergeThunks(ArrayRef<OutputSection *> OutputSections);
142
143
  ThunkSection *getISDThunkSec(OutputSection *OS, InputSection *IS,
144
                               InputSectionDescription *ISD, uint32_t Type,
145
                               uint64_t Src);
146
147
  ThunkSection *getISThunkSec(InputSection *IS);
148
149
  void createInitialThunkSections(ArrayRef<OutputSection *> OutputSections);
150
151
  void forEachInputSectionDescription(
152
      ArrayRef<OutputSection *> OutputSections,
153
      std::function<void(OutputSection *, InputSectionDescription *)> Fn);
154
155
  std::pair<Thunk *, bool> getThunk(Symbol &Sym, RelType Type, uint64_t Src);
156
157
  ThunkSection *addThunkSection(OutputSection *OS, InputSectionDescription *,
158
                                uint64_t Off);
159
160
  bool normalizeExistingThunk(Relocation &Rel, uint64_t Src);
161
162
  // Record all the available Thunks for a Symbol
163
  llvm::DenseMap<Symbol *, std::vector<Thunk *>> ThunkedSymbols;
164
165
  // Find a Thunk from the Thunks symbol definition, we can use this to find
166
  // the Thunk from a relocation to the Thunks symbol definition.
167
  llvm::DenseMap<Symbol *, Thunk *> Thunks;
168
169
  // Track InputSections that have an inline ThunkSection placed in front
170
  // an inline ThunkSection may have control fall through to the section below
171
  // so we need to make sure that there is only one of them.
172
  // The Mips LA25 Thunk is an example of an inline ThunkSection.
173
  llvm::DenseMap<InputSection *, ThunkSection *> ThunkedSections;
174
};
175
176
// Return a int64_t to make sure we get the sign extension out of the way as
177
// early as possible.
178
template <class ELFT>
179
7
static inline int64_t getAddend(const typename ELFT::Rel &Rel) {
180
7
  return 0;
181
7
}
GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rel const&)
Line
Count
Source
179
2
static inline int64_t getAddend(const typename ELFT::Rel &Rel) {
180
2
  return 0;
181
2
}
Unexecuted instantiation: GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rel const&)
Unexecuted instantiation: GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rel const&)
Unexecuted instantiation: GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rel const&)
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rel const&)
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rel const&)
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rel const&)
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rel const&)
InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rel const&)
Line
Count
Source
179
2
static inline int64_t getAddend(const typename ELFT::Rel &Rel) {
180
2
  return 0;
181
2
}
InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rel const&)
Line
Count
Source
179
3
static inline int64_t getAddend(const typename ELFT::Rel &Rel) {
180
3
  return 0;
181
3
}
Unexecuted instantiation: InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rel const&)
Unexecuted instantiation: InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rel const&)
Unexecuted instantiation: Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rel const&)
Unexecuted instantiation: Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rel const&)
Unexecuted instantiation: Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rel const&)
Unexecuted instantiation: Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rel const&)
182
template <class ELFT>
183
11.7k
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
11.7k
  return Rel.r_addend;
185
11.7k
}
Unexecuted instantiation: GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rela const&)
Unexecuted instantiation: GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rela const&)
GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rela const&)
Line
Count
Source
183
33
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
33
  return Rel.r_addend;
185
33
}
Unexecuted instantiation: GdbIndex.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rela const&)
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rela const&)
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rela const&)
ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rela const&)
Line
Count
Source
183
14
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
14
  return Rel.r_addend;
185
14
}
Unexecuted instantiation: ICF.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rela const&)
Unexecuted instantiation: InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rela const&)
Unexecuted instantiation: InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rela const&)
InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rela const&)
Line
Count
Source
183
188
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
188
  return Rel.r_addend;
185
188
}
Unexecuted instantiation: InputSection.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rela const&)
Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::object::ELFType<(llvm::support::endianness)1, false>::Rela const&)
Line
Count
Source
183
1
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
1
  return Rel.r_addend;
185
1
}
Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, false> >(llvm::object::ELFType<(llvm::support::endianness)0, false>::Rela const&)
Line
Count
Source
183
10
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
10
  return Rel.r_addend;
185
10
}
Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::object::ELFType<(llvm::support::endianness)1, true>::Rela const&)
Line
Count
Source
183
1.39k
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
1.39k
  return Rel.r_addend;
185
1.39k
}
Relocations.cpp:long long lld::elf::getAddend<llvm::object::ELFType<(llvm::support::endianness)0, true> >(llvm::object::ELFType<(llvm::support::endianness)0, true>::Rela const&)
Line
Count
Source
183
10.1k
static inline int64_t getAddend(const typename ELFT::Rela &Rel) {
184
10.1k
  return Rel.r_addend;
185
10.1k
}
186
} // namespace elf
187
} // namespace lld
188
189
#endif