diff options
| author | Colin LeMahieu <colinl@codeaurora.org> | 2015-06-17 03:06:16 +0000 |
|---|---|---|
| committer | Colin LeMahieu <colinl@codeaurora.org> | 2015-06-17 03:06:16 +0000 |
| commit | be99a02b1b8134283a23bd4b04ba428089b69b31 (patch) | |
| tree | 0a10ef9267be4fba382b56f00353c6a8f0aa4955 /llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.h | |
| parent | eb32eac6121a4beaf40d5acf52ad71421f5eb03e (diff) | |
| download | bcm5719-llvm-be99a02b1b8134283a23bd4b04ba428089b69b31.tar.gz bcm5719-llvm-be99a02b1b8134283a23bd4b04ba428089b69b31.zip | |
[Hexagon] Adding MC ELF streamer and updating addend relocation test which shows correct ELF symbol.
llvm-svn: 239876
Diffstat (limited to 'llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.h')
| -rw-r--r-- | llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.h b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.h new file mode 100644 index 00000000000..d77c0cd16b3 --- /dev/null +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCELFStreamer.h @@ -0,0 +1,45 @@ +//===- HexagonMCELFStreamer.h - Hexagon subclass of MCElfStreamer ---------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef HEXAGONMCELFSTREAMER_H +#define HEXAGONMCELFSTREAMER_H + +#include "MCTargetDesc/HexagonMCCodeEmitter.h" +#include "MCTargetDesc/HexagonMCInstrInfo.h" +#include "MCTargetDesc/HexagonMCTargetDesc.h" +#include "llvm/MC/MCELFStreamer.h" +#include "HexagonTargetStreamer.h" + +namespace llvm { + +class HexagonMCELFStreamer : public MCELFStreamer { + std::unique_ptr<MCInstrInfo> MCII; + +public: + HexagonMCELFStreamer(MCContext &Context, MCAsmBackend &TAB, + raw_pwrite_stream &OS, MCCodeEmitter *Emitter) + : MCELFStreamer(Context, TAB, OS, Emitter), + MCII(createHexagonMCInstrInfo()) {} + + virtual void EmitInstruction(const MCInst &Inst, + const MCSubtargetInfo &STI) override; + void EmitSymbol(const MCInst &Inst); + void HexagonMCEmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, + unsigned ByteAlignment, + unsigned AccessSize); + void HexagonMCEmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, + unsigned ByteAlignment, unsigned AccessSize); +}; + +MCStreamer *createHexagonELFStreamer(MCContext &Context, MCAsmBackend &MAB, + raw_pwrite_stream &OS, MCCodeEmitter *CE); + +} // namespace llvm + +#endif |

