1 //===-- ARMWinCOFFStreamer.cpp - ARM Target WinCOFF Streamer ----*- C++ -*-===//
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-exception
7 //===----------------------------------------------------------------------===//
9 #include "ARMMCTargetDesc.h"
10 #include "llvm/MC/MCAsmBackend.h"
11 #include "llvm/MC/MCCodeEmitter.h"
12 #include "llvm/MC/MCObjectWriter.h"
13 #include "llvm/MC/MCWinCOFFStreamer.h"
18 class ARMWinCOFFStreamer
: public MCWinCOFFStreamer
{
20 ARMWinCOFFStreamer(MCContext
&C
, std::unique_ptr
<MCAsmBackend
> AB
,
21 std::unique_ptr
<MCCodeEmitter
> CE
,
22 std::unique_ptr
<MCObjectWriter
> OW
)
23 : MCWinCOFFStreamer(C
, std::move(AB
), std::move(CE
), std::move(OW
)) {}
25 void EmitThumbFunc(MCSymbol
*Symbol
) override
;
26 void FinishImpl() override
;
29 void ARMWinCOFFStreamer::EmitThumbFunc(MCSymbol
*Symbol
) {
30 getAssembler().setIsThumbFunc(Symbol
);
33 void ARMWinCOFFStreamer::FinishImpl() {
36 MCWinCOFFStreamer::FinishImpl();
40 MCStreamer
*llvm::createARMWinCOFFStreamer(
41 MCContext
&Context
, std::unique_ptr
<MCAsmBackend
> &&MAB
,
42 std::unique_ptr
<MCObjectWriter
> &&OW
,
43 std::unique_ptr
<MCCodeEmitter
> &&Emitter
, bool RelaxAll
,
44 bool IncrementalLinkerCompatible
) {
45 auto *S
= new ARMWinCOFFStreamer(Context
, std::move(MAB
), std::move(Emitter
),
47 S
->getAssembler().setIncrementalLinkerCompatible(IncrementalLinkerCompatible
);