178c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5cEvan Cheng//===-- MCAsmBackend.cpp - Target MC Assembly Backend ----------------------==//
2e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar//
3e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar//                     The LLVM Compiler Infrastructure
4e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar//
5e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar// This file is distributed under the University of Illinois Open Source
6e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar// License. See LICENSE.TXT for details.
7e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar//
8e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar//===----------------------------------------------------------------------===//
9e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar
1078c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5cEvan Cheng#include "llvm/MC/MCAsmBackend.h"
11b9df53a40b22c74ce3f3a7b4a7c0676a38cf5e73Craig Topper#include "llvm/ADT/STLExtras.h"
12f1d0f7781e766df878bec4e7977fa3204374f394Craig Topper#include "llvm/MC/MCFixupKindInfo.h"
13e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbarusing namespace llvm;
14e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesMCAsmBackend::MCAsmBackend() : HasDataInCodeSupport(false) {}
16e7bd886cb8b69b8f787e7aadd097663632153436Daniel Dunbar
17b4316028b3978e65cc2b97042292637857dfad49Jim GrosbachMCAsmBackend::~MCAsmBackend() {}
182761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbar
192761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbarconst MCFixupKindInfo &
2078c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5cEvan ChengMCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
212761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbar  static const MCFixupKindInfo Builtins[] = {
2284bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_Data_1",  0,  8, 0 },
2384bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_Data_2",  0, 16, 0 },
2484bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_Data_4",  0, 32, 0 },
2584bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_Data_8",  0, 64, 0 },
2684bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_PCRel_1", 0,  8, MCFixupKindInfo::FKF_IsPCRel },
272761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbar    { "FK_PCRel_2", 0, 16, MCFixupKindInfo::FKF_IsPCRel },
283a83c40ab61d5ca624f2bbadd70237c6adbdb304Rafael Espindola    { "FK_PCRel_4", 0, 32, MCFixupKindInfo::FKF_IsPCRel },
2984bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_PCRel_8", 0, 64, MCFixupKindInfo::FKF_IsPCRel },
3084bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_GPRel_1", 0,  8, 0 },
3184bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_GPRel_2", 0, 16, 0 },
3284bfc2f090639f933df06cc675c4385511516befAkira Hatanaka    { "FK_GPRel_4", 0, 32, 0 },
33ce618af3e880ae0ec0ddd81aca8ed5bbd4096ae4Rafael Espindola    { "FK_GPRel_8", 0, 64, 0 },
34ce618af3e880ae0ec0ddd81aca8ed5bbd4096ae4Rafael Espindola    { "FK_SecRel_1", 0,  8, 0 },
35ce618af3e880ae0ec0ddd81aca8ed5bbd4096ae4Rafael Espindola    { "FK_SecRel_2", 0, 16, 0 },
36ce618af3e880ae0ec0ddd81aca8ed5bbd4096ae4Rafael Espindola    { "FK_SecRel_4", 0, 32, 0 },
37ce618af3e880ae0ec0ddd81aca8ed5bbd4096ae4Rafael Espindola    { "FK_SecRel_8", 0, 64, 0 }
382761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbar  };
392684d9e3c702b2ef9fd430155d94671d12fa994fJim Grosbach
40b9df53a40b22c74ce3f3a7b4a7c0676a38cf5e73Craig Topper  assert((size_t)Kind <= array_lengthof(Builtins) && "Unknown fixup kind");
412761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbar  return Builtins[Kind];
422761fc427082215c2affcc9d8db8491400bc9e5dDaniel Dunbar}
43