1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/include/llvm/MC/MCXCOFFObjectWriter.h
jasonliu f77176c4ec [XCOFF][AIX] Support basic relocation type on AIX
Summary:

This patch intends to support three most common relocation type
on AIX: R_POS, R_TOC, R_RBR.
These three relocation type will be needed for object file generation
on AIX for small code model.
We will have follow up patches to bring relocation support for
large code model on AIX.

Reviewers: hubert.reinterpretcast, daltenty, DiggerLin

Differential Revision: https://reviews.llvm.org/D72027
2020-01-30 15:59:09 +00:00

49 lines
1.4 KiB
C++

//===-- llvm/MC/MCXCOFFObjectWriter.h - XCOFF Object Writer ---------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_MC_MCXCOFFOBJECTWRITER_H
#define LLVM_MC_MCXCOFFOBJECTWRITER_H
#include "llvm/MC/MCObjectWriter.h"
namespace llvm {
class raw_pwrite_stream;
class MCXCOFFObjectTargetWriter : public MCObjectTargetWriter {
protected:
MCXCOFFObjectTargetWriter(bool Is64Bit);
public:
~MCXCOFFObjectTargetWriter() override;
Triple::ObjectFormatType getFormat() const override { return Triple::XCOFF; }
static bool classof(const MCObjectTargetWriter *W) {
return W->getFormat() == Triple::XCOFF;
}
bool is64Bit() const { return Is64Bit; }
// Returns relocation info such as type, sign and size.
// First element of the pair contains type,
// second element contains sign and size.
virtual std::pair<uint8_t, uint8_t>
getRelocTypeAndSignSize(const MCValue &Target, const MCFixup &Fixup,
bool IsPCRel) const = 0;
private:
bool Is64Bit;
};
std::unique_ptr<MCObjectWriter>
createXCOFFObjectWriter(std::unique_ptr<MCXCOFFObjectTargetWriter> MOTW,
raw_pwrite_stream &OS);
} // end namespace llvm
#endif // LLVM_MC_MCXCOFFOBJECTWRITER_H