1//===-- X86MCAsmInfo.h - X86 asm properties --------------------*- C++ -*--===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains the declaration of the X86MCAsmInfo class.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef X86TARGETASMINFO_H
15#define X86TARGETASMINFO_H
16
17#include "llvm/MC/MCAsmInfo.h"
18#include "llvm/MC/MCAsmInfoCOFF.h"
19#include "llvm/MC/MCAsmInfoDarwin.h"
20#include "llvm/MC/MCAsmInfoELF.h"
21
22namespace llvm {
23  class Triple;
24
25  class X86MCAsmInfoDarwin : public MCAsmInfoDarwin {
26    void anchor() override;
27  public:
28    explicit X86MCAsmInfoDarwin(const Triple &Triple);
29  };
30
31  struct X86_64MCAsmInfoDarwin : public X86MCAsmInfoDarwin {
32    explicit X86_64MCAsmInfoDarwin(const Triple &Triple);
33    const MCExpr *
34    getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding,
35                                MCStreamer &Streamer) const override;
36  };
37
38  class X86ELFMCAsmInfo : public MCAsmInfoELF {
39    void anchor() override;
40  public:
41    explicit X86ELFMCAsmInfo(const Triple &Triple);
42    const MCSection *
43    getNonexecutableStackSection(MCContext &Ctx) const override;
44  };
45
46  class X86MCAsmInfoMicrosoft : public MCAsmInfoMicrosoft {
47    void anchor() override;
48  public:
49    explicit X86MCAsmInfoMicrosoft(const Triple &Triple);
50  };
51
52  class X86MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
53    void anchor() override;
54  public:
55    explicit X86MCAsmInfoGNUCOFF(const Triple &Triple);
56  };
57} // namespace llvm
58
59#endif
60