CellSPU:
[oota-llvm.git] / lib / Target / CellSPU / SPUTargetAsmInfo.cpp
1 //===-- SPUTargetAsmInfo.cpp - Cell SPU 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 declarations of the SPUTargetAsmInfo properties.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #include "SPUTargetAsmInfo.h"
15 #include "SPUTargetMachine.h"
16 #include "llvm/Function.h"
17 #include "llvm/Support/Compiler.h"
18 #include "llvm/Support/Dwarf.h"
19
20 using namespace llvm;
21 using namespace llvm::dwarf;
22
23 SPULinuxTargetAsmInfo::SPULinuxTargetAsmInfo(const SPUTargetMachine &TM) :
24     SPUTargetAsmInfo<ELFTargetAsmInfo>(TM) {
25   PCSymbol = ".";
26   CommentString = "#";
27   GlobalPrefix = "";
28   PrivateGlobalPrefix = ".L";
29   // This corresponds to what the gcc SPU compiler emits, for consistency.
30   CStringSection = ".rodata.str";
31
32   // Has leb128, .loc and .file
33   HasLEB128 = true;
34   HasDotLocAndDotFile = true;
35
36   // BSS section needs to be emitted as ".section"
37   BSSSection = "\t.section\t.bss";
38   BSSSection_ = getUnnamedSection("\t.section\t.bss",
39                                   SectionFlags::Writeable | SectionFlags::BSS,
40                                   true);
41
42   SupportsDebugInformation = true;
43   NeedsSet = true;
44   SupportsMacInfoSection = false;
45   DwarfAbbrevSection =  "\t.section        .debug_abbrev,\"\",@progbits";
46   DwarfInfoSection =    "\t.section        .debug_info,\"\",@progbits";
47   DwarfLineSection =    "\t.section        .debug_line,\"\",@progbits";
48   DwarfFrameSection =   "\t.section        .debug_frame,\"\",@progbits";
49   DwarfPubNamesSection = "\t.section        .debug_pubnames,\"\",@progbits";
50   DwarfPubTypesSection = "\t.section        .debug_pubtypes,\"\",progbits";
51   DwarfStrSection =     "\t.section        .debug_str,\"MS\",@progbits,1";
52   DwarfLocSection =     "\t.section        .debug_loc,\"\",@progbits";
53   DwarfARangesSection = "\t.section        .debug_aranges,\"\",@progbits";
54   DwarfRangesSection =  "\t.section        .debug_ranges,\"\",@progbits";
55   DwarfMacInfoSection = "\t.section        .debug_macinfo,\"\",progbits";
56
57   // Exception handling is not supported on CellSPU (think about it: you only
58   // have 256K for code+data. Would you support exception handling?)
59   SupportsExceptionHandling = false;
60 }
61
62 /// PreferredEHDataFormat - This hook allows the target to select data
63 /// format used for encoding pointers in exception handling data. Reason is
64 /// 0 for data, 1 for code labels, 2 for function pointers. Global is true
65 /// if the symbol can be relocated.
66 unsigned
67 SPULinuxTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
68                                              bool Global) const {
69   // We really need to write something here.
70   return TargetAsmInfo::PreferredEHDataFormat(Reason, Global);
71 }
72
73 // Instantiate default implementation.
74 TEMPLATE_INSTANTIATION(class SPUTargetAsmInfo<TargetAsmInfo>);