brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 72d9379 Raw
43 lines · cpp
1//===- ARMMachORelocationInfo.cpp -----------------------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#include "ARMMCAsmInfo.h"10#include "MCTargetDesc/ARMMCTargetDesc.h"11#include "llvm-c/Disassembler.h"12#include "llvm/MC/MCDisassembler/MCRelocationInfo.h"13#include "llvm/MC/MCExpr.h"14 15using namespace llvm;16 17namespace {18 19class ARMMachORelocationInfo : public MCRelocationInfo {20public:21  ARMMachORelocationInfo(MCContext &Ctx) : MCRelocationInfo(Ctx) {}22 23  const MCExpr *createExprForCAPIVariantKind(const MCExpr *SubExpr,24                                             unsigned VariantKind) override {25    switch(VariantKind) {26    case LLVMDisassembler_VariantKind_ARM_HI16:27      return ARM::createUpper16(SubExpr, Ctx);28    case LLVMDisassembler_VariantKind_ARM_LO16:29      return ARM::createLower16(SubExpr, Ctx);30    default:31      return MCRelocationInfo::createExprForCAPIVariantKind(SubExpr,32                                                            VariantKind);33    }34  }35};36 37} // end anonymous namespace38 39/// createARMMachORelocationInfo - Construct an ARM Mach-O RelocationInfo.40MCRelocationInfo *llvm::createARMMachORelocationInfo(MCContext &Ctx) {41  return new ARMMachORelocationInfo(Ctx);42}43