mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-22 23:31:32 +00:00
5d4918dbd1
foo = a - b .long foo instead of just .long a - b First, on darwin9 64 bits the assembler produces the wrong result. Second, if "a" is the end of the section all darwin assemblers (9, 10 and mc) will not consider a - b to be a constant but will if the dummy foo is created. Split how we handle these cases. The first one is something MC should take care of. The second one has to be handled by the caller. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120889 91177308-0d34-0410-b5e6-96231b3b80d8
62 lines
1.7 KiB
C++
62 lines
1.7 KiB
C++
//===-- PPCMCAsmInfo.cpp - PPC 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 MCAsmInfoDarwin properties.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "PPCMCAsmInfo.h"
|
|
using namespace llvm;
|
|
|
|
PPCMCAsmInfoDarwin::PPCMCAsmInfoDarwin(bool is64Bit) {
|
|
PCSymbol = ".";
|
|
CommentString = ";";
|
|
ExceptionsType = ExceptionHandling::Dwarf;
|
|
|
|
if (!is64Bit)
|
|
Data64bitsDirective = 0; // We can't emit a 64-bit unit in PPC32 mode.
|
|
|
|
if (is64Bit)
|
|
NeedsSetToChangeDiffSize = true;
|
|
|
|
AssemblerDialect = 1; // New-Style mnemonics.
|
|
SupportsDebugInformation= true; // Debug information.
|
|
}
|
|
|
|
PPCLinuxMCAsmInfo::PPCLinuxMCAsmInfo(bool is64Bit) {
|
|
// ".comm align is in bytes but .align is pow-2."
|
|
AlignmentIsInBytes = false;
|
|
|
|
CommentString = "#";
|
|
GlobalPrefix = "";
|
|
PrivateGlobalPrefix = ".L";
|
|
WeakRefDirective = "\t.weak\t";
|
|
|
|
// Uses '.section' before '.bss' directive
|
|
UsesELFSectionDirectiveForBSS = true;
|
|
|
|
// Debug Information
|
|
SupportsDebugInformation = true;
|
|
|
|
PCSymbol = ".";
|
|
|
|
// Set up DWARF directives
|
|
HasLEB128 = true; // Target asm supports leb128 directives (little-endian)
|
|
|
|
// Exceptions handling
|
|
if (!is64Bit)
|
|
ExceptionsType = ExceptionHandling::Dwarf;
|
|
|
|
ZeroDirective = "\t.space\t";
|
|
Data64bitsDirective = is64Bit ? "\t.quad\t" : 0;
|
|
HasLCOMMDirective = true;
|
|
AssemblerDialect = 0; // Old-Style mnemonics.
|
|
}
|
|
|