mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 00:21:03 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76667 91177308-0d34-0410-b5e6-96231b3b80d8
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";
|
|
}
|
|
|