2008-11-07 10:59:00 +00:00
|
|
|
//===-- XCoreTargetAsmInfo.cpp - XCore asm properties -----------*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
|
|
|
// This file contains the declarations of the XCoreTargetAsmInfo properties.
|
|
|
|
// We use the small section flag for the CP relative and DP relative
|
|
|
|
// flags. If a section is small and writable then it is DP relative. If a
|
|
|
|
// section is small and not writable then it is CP relative.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#include "XCoreTargetAsmInfo.h"
|
|
|
|
#include "XCoreTargetMachine.h"
|
|
|
|
#include "llvm/GlobalVariable.h"
|
|
|
|
#include "llvm/ADT/StringExtras.h"
|
|
|
|
|
|
|
|
using namespace llvm;
|
|
|
|
|
|
|
|
XCoreTargetAsmInfo::XCoreTargetAsmInfo(const XCoreTargetMachine &TM)
|
2009-07-21 22:42:37 +00:00
|
|
|
: ELFTargetAsmInfo(TM) {
|
2009-06-19 21:54:26 +00:00
|
|
|
SupportsDebugInformation = true;
|
2008-11-07 10:59:00 +00:00
|
|
|
TextSection = getUnnamedSection("\t.text", SectionFlags::Code);
|
2009-07-25 18:57:34 +00:00
|
|
|
DataSection = getNamedSection("\t.dp.data", SectionFlags::Writable);
|
|
|
|
BSSSection_ = getNamedSection("\t.dp.bss", SectionFlags::Writable |
|
2009-07-22 23:27:22 +00:00
|
|
|
SectionFlags::BSS);
|
2009-07-22 11:01:00 +00:00
|
|
|
|
|
|
|
// TLS globals are lowered in the backend to arrays indexed by the current
|
|
|
|
// thread id. After lowering they require no special handling by the linker
|
|
|
|
// and can be placed in the standard data / bss sections.
|
|
|
|
TLSDataSection = DataSection;
|
|
|
|
TLSBSSSection = BSSSection_;
|
|
|
|
|
2009-07-22 23:27:22 +00:00
|
|
|
if (TM.getSubtargetImpl()->isXS1A())
|
2009-07-25 18:57:34 +00:00
|
|
|
ReadOnlySection = getNamedSection("\t.dp.rodata", SectionFlags::Writable);
|
2009-07-22 23:27:22 +00:00
|
|
|
else
|
|
|
|
ReadOnlySection = getNamedSection("\t.cp.rodata", SectionFlags::None);
|
2008-11-07 10:59:00 +00:00
|
|
|
Data16bitsDirective = "\t.short\t";
|
|
|
|
Data32bitsDirective = "\t.long\t";
|
|
|
|
Data64bitsDirective = 0;
|
|
|
|
ZeroDirective = "\t.space\t";
|
|
|
|
CommentString = "#";
|
|
|
|
ConstantPoolSection = "\t.section\t.cp.rodata,\"ac\",@progbits";
|
|
|
|
JumpTableDataSection = "\t.section\t.dp.data,\"awd\",@progbits";
|
|
|
|
PrivateGlobalPrefix = ".L";
|
|
|
|
AscizDirective = ".asciiz";
|
|
|
|
WeakDefDirective = "\t.weak\t";
|
|
|
|
WeakRefDirective = "\t.weak\t";
|
|
|
|
SetDirective = "\t.set\t";
|
|
|
|
|
|
|
|
// Debug
|
|
|
|
HasLEB128 = true;
|
|
|
|
AbsoluteDebugSectionOffsets = true;
|
|
|
|
|
|
|
|
DwarfAbbrevSection = "\t.section\t.debug_abbrev,\"\",@progbits";
|
|
|
|
DwarfInfoSection = "\t.section\t.debug_info,\"\",@progbits";
|
|
|
|
DwarfLineSection = "\t.section\t.debug_line,\"\",@progbits";
|
|
|
|
DwarfFrameSection = "\t.section\t.debug_frame,\"\",@progbits";
|
|
|
|
DwarfPubNamesSection = "\t.section\t.debug_pubnames,\"\",@progbits";
|
|
|
|
DwarfPubTypesSection = "\t.section\t.debug_pubtypes,\"\",@progbits";
|
|
|
|
DwarfStrSection = "\t.section\t.debug_str,\"\",@progbits";
|
|
|
|
DwarfLocSection = "\t.section\t.debug_loc,\"\",@progbits";
|
|
|
|
DwarfARangesSection = "\t.section\t.debug_aranges,\"\",@progbits";
|
|
|
|
DwarfRangesSection = "\t.section\t.debug_ranges,\"\",@progbits";
|
2009-06-18 23:31:37 +00:00
|
|
|
DwarfMacroInfoSection = "\t.section\t.debug_macinfo,\"\",@progbits";
|
2008-11-07 10:59:00 +00:00
|
|
|
}
|
|
|
|
|