mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-27 15:29:51 +00:00
As pr19627 points out, every use of AliasedSymbol is likely a bug. The main use was to avoid the oddity of a variable showing up as undefined. That was fixed in r233995, which made these calls nops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234169 91177308-0d34-0410-b5e6-96231b3b80d8
53 lines
1.8 KiB
C++
53 lines
1.8 KiB
C++
//===- lib/MC/MCObjectWriter.cpp - MCObjectWriter implementation ----------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/MC/MCAssembler.h"
|
|
#include "llvm/MC/MCExpr.h"
|
|
#include "llvm/MC/MCObjectWriter.h"
|
|
#include "llvm/MC/MCSymbol.h"
|
|
|
|
using namespace llvm;
|
|
|
|
MCObjectWriter::~MCObjectWriter() {
|
|
}
|
|
|
|
bool MCObjectWriter::IsSymbolRefDifferenceFullyResolved(
|
|
const MCAssembler &Asm, const MCSymbolRefExpr *A, const MCSymbolRefExpr *B,
|
|
bool InSet) const {
|
|
// Modified symbol references cannot be resolved.
|
|
if (A->getKind() != MCSymbolRefExpr::VK_None ||
|
|
B->getKind() != MCSymbolRefExpr::VK_None)
|
|
return false;
|
|
|
|
const MCSymbol &SA = A->getSymbol();
|
|
const MCSymbol &SB = B->getSymbol();
|
|
if (SA.isUndefined() || SB.isUndefined())
|
|
return false;
|
|
|
|
const MCSymbolData &DataA = Asm.getSymbolData(SA);
|
|
const MCSymbolData &DataB = Asm.getSymbolData(SB);
|
|
if(!DataA.getFragment() || !DataB.getFragment())
|
|
return false;
|
|
|
|
return IsSymbolRefDifferenceFullyResolvedImpl(
|
|
Asm, DataA, &DataB, *DataB.getFragment(), InSet, false);
|
|
}
|
|
|
|
bool MCObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(
|
|
const MCAssembler &Asm, const MCSymbolData &DataA,
|
|
const MCSymbolData *DataB, const MCFragment &FB, bool InSet,
|
|
bool IsPCRel) const {
|
|
const MCSection &SecA = DataA.getSymbol().getSection();
|
|
const MCSection &SecB = FB.getParent()->getSection();
|
|
// On ELF and COFF A - B is absolute if A and B are in the same section.
|
|
return &SecA == &SecB;
|
|
}
|
|
|
|
bool MCObjectWriter::isWeak(const MCSymbolData &SD) const { return false; }
|