1//===-- MCAsmBackend.cpp - Target MC Assembly Backend ----------------------==//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "llvm/MC/MCAsmBackend.h"
11#include "llvm/ADT/STLExtras.h"
12#include "llvm/MC/MCFixupKindInfo.h"
13using namespace llvm;
14
15MCAsmBackend::MCAsmBackend() {}
16
17MCAsmBackend::~MCAsmBackend() {}
18
19Optional<MCFixupKind> MCAsmBackend::getFixupKind(StringRef Name) const {
20  return None;
21}
22
23const MCFixupKindInfo &MCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
24  static const MCFixupKindInfo Builtins[] = {
25      {"FK_Data_1", 0, 8, 0},
26      {"FK_Data_2", 0, 16, 0},
27      {"FK_Data_4", 0, 32, 0},
28      {"FK_Data_8", 0, 64, 0},
29      {"FK_PCRel_1", 0, 8, MCFixupKindInfo::FKF_IsPCRel},
30      {"FK_PCRel_2", 0, 16, MCFixupKindInfo::FKF_IsPCRel},
31      {"FK_PCRel_4", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
32      {"FK_PCRel_8", 0, 64, MCFixupKindInfo::FKF_IsPCRel},
33      {"FK_GPRel_1", 0, 8, 0},
34      {"FK_GPRel_2", 0, 16, 0},
35      {"FK_GPRel_4", 0, 32, 0},
36      {"FK_GPRel_8", 0, 64, 0},
37      {"FK_SecRel_1", 0, 8, 0},
38      {"FK_SecRel_2", 0, 16, 0},
39      {"FK_SecRel_4", 0, 32, 0},
40      {"FK_SecRel_8", 0, 64, 0}};
41
42  assert((size_t)Kind <= array_lengthof(Builtins) && "Unknown fixup kind");
43  return Builtins[Kind];
44}
45
46bool MCAsmBackend::fixupNeedsRelaxationAdvanced(
47    const MCFixup &Fixup, bool Resolved, uint64_t Value,
48    const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const {
49  if (!Resolved)
50    return true;
51  return fixupNeedsRelaxation(Fixup, Value, DF, Layout);
52}
53