depends on XS1A, but I think the ReadOnlySection is already set up for this and there is no testcase that this breaks. If this is really needed, we can add the appropriate parameterization to TargetAsmInfo in the future to support this. llvm-svn: 76667
70 lines
2.9 KiB
C++
70 lines
2.9 KiB
C++
//===-- 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)
|
|
: ELFTargetAsmInfo(TM) {
|
|
SupportsDebugInformation = true;
|
|
TextSection = getUnnamedSection("\t.text", SectionFlags::Code);
|
|
DataSection = getNamedSection("\t.dp.data", SectionFlags::Writeable |
|
|
SectionFlags::Small);
|
|
BSSSection_ = getNamedSection("\t.dp.bss", SectionFlags::Writeable |
|
|
SectionFlags::BSS | SectionFlags::Small);
|
|
if (TM.getSubtargetImpl()->isXS1A()) {
|
|
ReadOnlySection = getNamedSection("\t.dp.rodata", SectionFlags::None |
|
|
SectionFlags::Writeable |
|
|
SectionFlags::Small);
|
|
} else {
|
|
ReadOnlySection = getNamedSection("\t.cp.rodata", SectionFlags::None |
|
|
SectionFlags::Small);
|
|
}
|
|
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";
|
|
DwarfMacroInfoSection = "\t.section\t.debug_macinfo,\"\",@progbits";
|
|
}
|
|
|