1894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//===-- MCAsmInfoCOFF.cpp - COFF asm properties -----------------*- C++ -*-===//
2894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//
3894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//                     The LLVM Compiler Infrastructure
4894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//
5894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// This file is distributed under the University of Illinois Open Source
6894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// License. See LICENSE.TXT for details.
7894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//
8894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//===----------------------------------------------------------------------===//
9894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//
10894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// This file defines target asm properties related what form asm statements
11894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// should take in general on COFF-based targets
12894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//
13894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//===----------------------------------------------------------------------===//
14894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman
15894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#include "llvm/MC/MCAsmInfoCOFF.h"
16894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#include "llvm/ADT/SmallVector.h"
17894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Baumanusing namespace llvm;
18894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman
19894018228b0e0bdbd7aa7e8f47d4a9458789ca82John BaumanMCAsmInfoCOFF::MCAsmInfoCOFF() {
20894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  GlobalPrefix = "_";
21894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  COMMDirectiveAlignmentIsInBytes = false;
2219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman  LCOMMDirectiveType = LCOMM::ByteAlignment;
23894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  HasDotTypeDotSizeDirective = false;
24894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  HasSingleParameterDotFile = false;
25894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  PrivateGlobalPrefix = "L";  // Prefix for private global symbols
26894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  WeakRefDirective = "\t.weak\t";
27894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  LinkOnceDirective = "\t.linkonce discard\n";
28894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman
29894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  // Doesn't support visibility:
3019bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman  HiddenVisibilityAttr = HiddenDeclarationVisibilityAttr = MCSA_Invalid;
3119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman  ProtectedVisibilityAttr = MCSA_Invalid;
32894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman
33894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  // Set up DWARF directives
34894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  HasLEB128 = true;  // Target asm supports leb128 directives (little-endian)
35894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  SupportsDebugInformation = true;
36894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  DwarfSectionOffsetDirective = "\t.secrel32\t";
37894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman  HasMicrosoftFastStdCallMangling = true;
3819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman
3919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman  SupportsDataRegions = false;
40894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman}
41