LLVM
8.0.1
|
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created and uniqued by the MCContext class. More...
#include "llvm/MC/MCSymbol.h"
Public Member Functions | |
MCSymbol (const MCSymbol &)=delete | |
MCSymbol & | operator= (const MCSymbol &)=delete |
StringRef | getName () const |
getName - Get the symbol name. More... | |
bool | isRegistered () const |
void | setIsRegistered (bool Value) const |
void | setUsedInReloc () const |
bool | isUsedInReloc () const |
uint32_t | getIndex () const |
Get the (implementation defined) index. More... | |
void | setIndex (uint32_t Value) const |
Set the (implementation defined) index. More... | |
bool | isUnset () const |
uint64_t | getOffset () const |
void | setOffset (uint64_t Value) |
uint64_t | getCommonSize () const |
Return the size of a 'common' symbol. More... | |
void | setCommon (uint64_t Size, unsigned Align) |
Mark this symbol as being 'common'. More... | |
unsigned | getCommonAlignment () const |
Return the alignment of a 'common' symbol. More... | |
bool | declareCommon (uint64_t Size, unsigned Align) |
Declare this symbol as being 'common'. More... | |
bool | isCommon () const |
Is this a 'common' symbol. More... | |
MCFragment * | getFragment (bool SetUsed=true) const |
bool | isExternal () const |
void | setExternal (bool Value) const |
bool | isPrivateExtern () const |
void | setPrivateExtern (bool Value) |
void | print (raw_ostream &OS, const MCAsmInfo *MAI) const |
print - Print the value to the stream OS . More... | |
void | dump () const |
dump - Print the value to stderr. More... | |
Accessors | |
bool | isTemporary () const |
isTemporary - Check if this is an assembler temporary symbol. More... | |
bool | isUsed () const |
isUsed - Check if this is used. More... | |
bool | isRedefinable () const |
Check if this symbol is redefinable. More... | |
void | setRedefinable (bool Value) |
Mark this symbol as redefinable. More... | |
void | redefineIfPossible () |
Prepare this symbol to be redefined. More... | |
Associated Sections | |
bool | isDefined () const |
isDefined - Check if this symbol is defined (i.e., it has an address). More... | |
bool | isInSection () const |
isInSection - Check if this symbol is defined in some section (i.e., it is defined but not absolute). More... | |
bool | isUndefined (bool SetUsed=true) const |
isUndefined - Check if this symbol undefined (i.e., implicitly defined). More... | |
bool | isAbsolute () const |
isAbsolute - Check if this is an absolute symbol. More... | |
MCSection & | getSection () const |
Get the section associated with a defined, non-absolute symbol. More... | |
void | setFragment (MCFragment *F) const |
Mark the symbol as defined in the fragment F . More... | |
void | setUndefined () |
Mark the symbol as undefined. More... | |
bool | isELF () const |
bool | isCOFF () const |
bool | isMachO () const |
bool | isWasm () const |
Variable Symbols | |
bool | isVariable () const |
isVariable - Check if this is a variable symbol. More... | |
const MCExpr * | getVariableValue (bool SetUsed=true) const |
getVariableValue - Get the value for variable symbols. More... | |
void | setVariableValue (const MCExpr *Value) |
Protected Types | |
enum | SymbolKind { SymbolKindUnset, SymbolKindCOFF, SymbolKindELF, SymbolKindMachO, SymbolKindWasm } |
The kind of the symbol. More... | |
enum | Contents : uint8_t { SymContentsUnset, SymContentsOffset, SymContentsVariable, SymContentsCommon } |
A symbol can contain an Offset, or Value, or be Common, but never more than one of these. More... | |
enum | : unsigned { NumCommonAlignmentBits = 5 } |
The alignment of the symbol, if it is 'common', or -1. More... | |
enum | : unsigned { NumFlagsBits = 16 } |
The Flags field is used by object file implementations to store additional per symbol information which is not easily classified. More... | |
using | NameEntryStorageTy = union { const StringMapEntry< bool > *NameEntry |
The name for a symbol. More... | |
Protected Member Functions | |
MCSymbol (SymbolKind Kind, const StringMapEntry< bool > *Name, bool isTemporary) | |
void * | operator new (size_t s, const StringMapEntry< bool > *Name, MCContext &Ctx) |
uint32_t | getFlags () const |
Get the (implementation defined) symbol flags. More... | |
void | setFlags (uint32_t Value) const |
Set the (implementation defined) symbol flags. More... | |
void | modifyFlags (uint32_t Value, uint32_t Mask) const |
Modify the flags via a mask. More... | |
Protected Attributes | |
PointerIntPair< MCFragment *, 1 > | FragmentAndHasName |
If a symbol has a Fragment, the section is implied, so we only need one pointer. More... | |
unsigned | IsTemporary: 1 |
IsTemporary - True if this is an assembler temporary label, which typically does not survive in the .o file's symbol table. More... | |
unsigned | IsRedefinable: 1 |
True if this symbol can be redefined. More... | |
unsigned | IsUsed: 1 |
IsUsed - True if this symbol has been used. More... | |
unsigned | IsRegistered: 1 |
unsigned | IsExternal: 1 |
This symbol is visible outside this translation unit. More... | |
unsigned | IsPrivateExtern: 1 |
This symbol is private extern. More... | |
unsigned | Kind: 3 |
LLVM RTTI discriminator. More... | |
unsigned | IsUsedInReloc: 1 |
True if we have created a relocation that uses this symbol. More... | |
unsigned | SymbolContents: 2 |
This is actually a Contents enumerator, but is unsigned to avoid sign extension and achieve better bitpacking with MSVC. More... | |
unsigned | CommonAlignLog2: NumCommonAlignmentBits |
uint32_t | Flags: NumFlagsBits |
uint32_t | Index = 0 |
Index field, for use by the object file implementation. More... | |
union { | |
uint64_t Offset | |
The offset to apply to the fragment address to form this symbol's value. More... | |
uint64_t CommonSize | |
The size of the symbol, if it is 'common'. More... | |
const MCExpr * Value | |
If non-null, the value for a variable symbol. More... | |
}; | |
uint64_t | AlignmentPadding |
Static Protected Attributes | |
static MCFragment * | AbsolutePseudoFragment = &SentinelFragment |
Friends | |
class | MCExpr |
class | MCContext |
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created and uniqued by the MCContext class.
MCSymbols should only be constructed with valid names for the object file.
If the symbol is defined/emitted into the current translation unit, the Section member is set to indicate what section it lives in. Otherwise, if it is a reference to an external entity, it has a null section.
Definition at line 42 of file MCSymbol.h.
|
protected |
The name for a symbol.
MCSymbol contains a uint64_t so is probably aligned to 8. On a 32-bit system, the name is a pointer so isn't going to satisfy the 8 byte alignment of uint64_t. Account for that here.
Definition at line 149 of file MCSymbol.h.
|
protected |
The alignment of the symbol, if it is 'common', or -1.
The alignment is stored as log2(align) + 1. This allows all values from 0 to 2^31 to be stored which is every power of 2 representable by an unsigned.
Enumerator | |
---|---|
NumCommonAlignmentBits |
Definition at line 118 of file MCSymbol.h.
|
protected |
The Flags field is used by object file implementations to store additional per symbol information which is not easily classified.
Enumerator | |
---|---|
NumFlagsBits |
Definition at line 123 of file MCSymbol.h.
|
protected |
A symbol can contain an Offset, or Value, or be Common, but never more than one of these.
Enumerator | |
---|---|
SymContentsUnset | |
SymContentsOffset | |
SymContentsVariable | |
SymContentsCommon |
Definition at line 56 of file MCSymbol.h.
|
protected |
The kind of the symbol.
If it is any value other than unset then this class is actually one of the appropriate subclasses of MCSymbol.
Enumerator | |
---|---|
SymbolKindUnset | |
SymbolKindCOFF | |
SymbolKindELF | |
SymbolKindMachO | |
SymbolKindWasm |
Definition at line 46 of file MCSymbol.h.
|
inlineprotected |
Definition at line 153 of file MCSymbol.h.
References assert(), F(), getFragment(), llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt(), llvm_unreachable, Name, Offset, operator=(), and llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::setInt().
Declare this symbol as being 'common'.
Size | - The size of the symbol. |
Align | - The alignment of the symbol. |
Definition at line 369 of file MCSymbol.h.
References assert(), CommonSize, getCommonAlignment(), getOffset(), isCommon(), and setCommon().
LLVM_DUMP_METHOD void MCSymbol::dump | ( | ) | const |
dump - Print the value to stderr.
Definition at line 86 of file MCSymbol.cpp.
References llvm::dbgs().
Referenced by setPrivateExtern().
|
inline |
Return the alignment of a 'common' symbol.
Definition at line 359 of file MCSymbol.h.
References assert(), CommonAlignLog2, and isCommon().
Referenced by declareCommon(), and llvm::MCSymbolMachO::getEncodedFlags().
|
inline |
Return the size of a 'common' symbol.
Definition at line 336 of file MCSymbol.h.
References assert(), CommonSize, and isCommon().
Referenced by getSymbolValue(), and llvm::MachObjectWriter::writeNlist().
|
inlineprotected |
Get the (implementation defined) symbol flags.
Definition at line 407 of file MCSymbol.h.
References Flags.
Referenced by llvm::MCSymbolELF::getBinding(), llvm::MCSymbolCOFF::getClass(), llvm::MCSymbolMachO::getEncodedFlags(), llvm::MCSymbolELF::getOther(), llvm::MCSymbolELF::getType(), llvm::MCSymbolELF::getVisibility(), llvm::MCSymbolMachO::isAltEntry(), llvm::MCSymbolELF::isBindingSet(), llvm::MCSymbolMachO::isNoDeadStrip(), llvm::MCSymbolCOFF::isSafeSEH(), llvm::MCSymbolELF::isSignature(), llvm::MCSymbolMachO::isSymbolResolver(), llvm::MCSymbolMachO::isWeakDefinition(), llvm::MCSymbolCOFF::isWeakExternal(), llvm::MCSymbolMachO::isWeakReference(), llvm::MCSymbolELF::isWeakrefUsedInReloc(), llvm::MCSymbolELF::setBinding(), llvm::MCSymbolELF::setIsSignature(), llvm::MCSymbolELF::setIsWeakrefUsedInReloc(), llvm::MCSymbolELF::setOther(), llvm::MCSymbolELF::setType(), and llvm::MCSymbolELF::setVisibility().
|
inline |
Definition at line 384 of file MCSymbol.h.
References llvm::MCExpr::findAssociatedFragment(), llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getPointer(), getVariableValue(), isVariable(), and llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::setPointer().
Referenced by absoluteSymbolDiff(), canUseLocalRelocation(), llvm::MCStreamer::EmitLabel(), encodeBase64StringEntry(), llvm::MCExpr::findAssociatedFragment(), getARMFixupKindMachOInfo(), llvm::MCAssembler::getAtom(), getFixupKindLog2Size(), getFixupOffset(), getLabelOffset(), llvm::MachObjectWriter::getSymbolAddress(), getSymbolValue(), isAbsolute(), llvm::MCObjectWriter::isSymbolRefDifferenceFullyResolved(), llvm::MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), isUndefined(), and MCSymbol().
|
inline |
Get the (implementation defined) index.
Definition at line 310 of file MCSymbol.h.
References Index.
Referenced by isAssociative(), and isWeak().
|
inline |
getName - Get the symbol name.
Definition at line 203 of file MCSymbol.h.
References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt().
Referenced by llvm::MachObjectWriter::bindIndirectSymbols(), canGoAfterDWARF(), canUseLocalRelocation(), createPPCMCAsmInfo(), llvm::RecordStreamer::EmitCommonSymbol(), llvm::MipsTargetAsmStreamer::emitDirectiveCpsetup(), llvm::MipsTargetAsmStreamer::emitDirectiveEnt(), emitDirectiveRelocJalr(), llvm::WebAssemblyTargetAsmStreamer::emitEventType(), llvm::EHStreamer::emitExceptionTable(), llvm::MipsAsmPrinter::EmitFunctionBodyEnd(), llvm::AsmPrinter::EmitFunctionEntryLabel(), llvm::WebAssemblyTargetAsmStreamer::emitFunctionType(), llvm::WebAssemblyTargetAsmStreamer::emitGlobalType(), llvm::AsmPrinter::EmitGlobalVariable(), llvm::MCELFStreamer::EmitIdent(), llvm::WebAssemblyTargetAsmStreamer::emitImportModule(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), encodeBase64StringEntry(), EvaluateCRExpr(), llvm::RecordStreamer::flushSymverDirectives(), GetAEABIUnwindPersonalityName(), getARMFixupKindMachOInfo(), llvm::MCContext::getAssociativeCOFFSection(), llvm::MCAsmLayout::getBaseSymbol(), llvm::TargetLoweringObjectFileELF::getCFIPersonalitySymbol(), llvm::MCContext::getCOFFSection(), llvm::MCContext::getELFSection(), llvm::MCSymbolMachO::getEncodedFlags(), llvm::TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(), getFixupKindLog2Size(), getFixupOffset(), llvm::MCSymbolWasm::getImportName(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), getLabelOffset(), llvm::TargetLoweringObjectFileCOFF::getSectionForJumpTable(), getStaticStructorSection(), llvm::MachObjectWriter::getSymbolAddress(), getSymbolOffsetImpl(), getSymbolValue(), llvm::MCContext::getWasmSection(), hasGOTReference(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), isAssociative(), isInSymtab(), isWeak(), llvm::MCGenDwarfLabelEntry::Make(), llvm::MCExpr::print(), llvm::X86Operand::print(), print(), printFPOReg(), llvm::MipsAsmPrinter::printOperand(), llvm::NVPTXInstPrinter::printProtoIdent(), printSImmOperand(), llvm::MCSectionELF::PrintSwitchToSection(), printSymbolOperand(), llvm::PPCInstPrinter::printTLSCall(), RefineErrorLoc(), llvm::FaultMaps::reset(), llvm::TargetLoweringObjectFileCOFF::SelectSectionForGlobal(), and StartsWithGlobalOffsetTable().
|
inline |
Definition at line 321 of file MCSymbol.h.
References assert(), Offset, SymbolContents, SymContentsOffset, and SymContentsUnset.
Referenced by absoluteSymbolDiff(), declareCommon(), llvm::MCObjectStreamer::EmitRelocDirective(), getLabelOffset(), llvm::RISCVMCExpr::getPCRelHiFixup(), and setCommon().
|
inline |
Get the section associated with a defined, non-absolute symbol.
Definition at line 267 of file MCSymbol.h.
References assert(), and isInSection().
Referenced by llvm::DwarfCompileUnit::addRange(), llvm::DwarfDebug::addSectionLabel(), llvm::BTFDebug::beginFunctionImpl(), canUseLocalRelocation(), llvm::AsmPrinter::emitDwarfSymbolReference(), llvm::MCELFStreamer::EmitIdent(), llvm::CodeViewContext::encodeInlineLineTable(), GetAEABIUnwindPersonalityName(), getARMFixupKindMachOInfo(), llvm::MCSectionELF::getAssociatedSection(), getFixupKindLog2Size(), getFixupOffset(), llvm::RISCVMCExpr::getPCRelHiFixup(), isAssociative(), llvm::MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), isWeak(), PrintCFIEscape(), and llvm::MCContext::renameELFSection().
getVariableValue - Get the value for variable symbols.
Definition at line 299 of file MCSymbol.h.
References assert(), IsUsed, isVariable(), setVariableValue(), and Value.
Referenced by canExpand(), llvm::MachObjectWriter::findAliasedSymbol(), getARMFixupKindMachOInfo(), llvm::MCAsmLayout::getBaseSymbol(), getFixupKindLog2Size(), getFixupOffset(), getFragment(), getSpecialRegForName(), llvm::MachObjectWriter::getSymbolAddress(), getSymbolOffsetImpl(), getSymbolValue(), llvm::MCParserUtils::isSymbolUsedInExpression(), llvm::MCAssembler::isThumbFunc(), isWeak(), llvm::MCParserUtils::parseAssignmentExpression(), RefineErrorLoc(), and ResolveSymbol().
|
inline |
isAbsolute - Check if this is an absolute symbol.
Definition at line 262 of file MCSymbol.h.
References AbsolutePseudoFragment, and getFragment().
Referenced by isInSection(), isWeak(), and llvm::MachObjectWriter::writeNlist().
|
inline |
Definition at line 283 of file MCSymbol.h.
References Kind, and SymbolKindCOFF.
Referenced by llvm::MCSymbolCOFF::classof().
|
inline |
Is this a 'common' symbol.
Definition at line 380 of file MCSymbol.h.
References SymbolContents, and SymContentsCommon.
Referenced by declareCommon(), llvm::MCAsmLayout::getBaseSymbol(), getCommonAlignment(), getCommonSize(), llvm::MCSymbolMachO::getEncodedFlags(), getSymbolValue(), isWeak(), and llvm::MachObjectWriter::writeNlist().
|
inline |
isDefined - Check if this symbol is defined (i.e., it has an address).
Defined symbols are either absolute or in some section.
Definition at line 248 of file MCSymbol.h.
References isUndefined().
Referenced by emitEncodingByte(), llvm::AsmPrinter::EmitFunctionBody(), llvm::AsmPrinter::EmitFunctionEntryLabel(), llvm::AsmPrinter::EmitGlobalVariable(), llvm::MCObjectStreamer::EmitRelocDirective(), GetAEABIUnwindPersonalityName(), llvm::MCAssembler::getAtom(), llvm::MCSymbolELF::getBinding(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), isInSection(), isInSymtab(), llvm::MCContext::renameELFSection(), ResolveSymbol(), llvm::MachineFunction::tidyLandingPads(), llvm::MMIAddrLabelMap::UpdateForDeletedBlock(), and llvm::MachObjectWriter::writeNlist().
|
inline |
Definition at line 281 of file MCSymbol.h.
References Kind, and SymbolKindELF.
Referenced by llvm::MCSymbolELF::classof(), countMCSymbolRefExpr(), isShiftedUIntAtAnyPosition(), and llvm::ARMAsmBackend::shouldForceRelocation().
|
inline |
Definition at line 393 of file MCSymbol.h.
References IsExternal.
Referenced by canGoAfterDWARF(), getFixupKindLog2Size(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), getSymbolValue(), isWeak(), llvm::ARMAsmBackend::shouldForceRelocation(), and llvm::MachObjectWriter::writeNlist().
|
inline |
isInSection - Check if this symbol is defined in some section (i.e., it is defined but not absolute).
Definition at line 252 of file MCSymbol.h.
References isAbsolute(), and isDefined().
Referenced by llvm::BTFDebug::beginFunctionImpl(), canExpand(), canUseLocalRelocation(), countMCSymbolRefExpr(), llvm::MCELFStreamer::EmitIdent(), llvm::MCStreamer::endSection(), llvm::MCAssembler::getAtom(), getFixupKindLog2Size(), llvm::RISCVMCExpr::getPCRelHiFixup(), getSection(), llvm::MCSection::hasEnded(), isAssociative(), isShiftedUIntAtAnyPosition(), llvm::MCAssembler::isSymbolLinkerVisible(), llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), isWeak(), parseSectionFlags(), and llvm::MCContext::renameELFSection().
|
inline |
Definition at line 285 of file MCSymbol.h.
References Kind, and SymbolKindMachO.
Referenced by llvm::MCSymbolMachO::classof().
|
inline |
Definition at line 396 of file MCSymbol.h.
References IsPrivateExtern.
Referenced by canGoAfterDWARF(), and llvm::MachObjectWriter::writeNlist().
|
inline |
Check if this symbol is redefinable.
Definition at line 226 of file MCSymbol.h.
References IsRedefinable.
|
inline |
Definition at line 210 of file MCSymbol.h.
References IsRegistered.
Referenced by llvm::MCAssembler::registerSymbol().
|
inline |
isTemporary - Check if this is an assembler temporary symbol.
Definition at line 220 of file MCSymbol.h.
References IsTemporary.
Referenced by canUseLocalRelocation(), countMCSymbolRefExpr(), llvm::MCELFStreamer::EmitIdent(), encodeBase64StringEntry(), getARMFixupKindMachOInfo(), getFixupKindLog2Size(), getFixupKindNumBytes(), isInSymtab(), isShiftedUIntAtAnyPosition(), llvm::MCAssembler::isSymbolLinkerVisible(), llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), isWeak(), and llvm::MCGenDwarfLabelEntry::Make().
isUndefined - Check if this symbol undefined (i.e., implicitly defined).
Definition at line 257 of file MCSymbol.h.
References getFragment().
Referenced by llvm::MachObjectWriter::doesSymbolRequireExternRelocation(), llvm::AsmPrinter::EmitConstantPool(), llvm::MCStreamer::EmitLabel(), getARMFixupKindMachOInfo(), llvm::MCAssembler::getAtom(), getFixupKindLog2Size(), getFixupOffset(), llvm::MachObjectWriter::getSymbolAddress(), getSymbolValue(), isDefined(), llvm::MCObjectWriter::isSymbolRefDifferenceFullyResolved(), isWeak(), makeCombineInst(), llvm::MCParserUtils::parseAssignmentExpression(), llvm::MCContext::renameELFSection(), smallData(), and llvm::MachObjectWriter::writeNlist().
|
inline |
Definition at line 319 of file MCSymbol.h.
References SymbolContents, and SymContentsUnset.
Referenced by RefineErrorLoc().
|
inline |
isUsed - Check if this is used.
Definition at line 223 of file MCSymbol.h.
References IsUsed.
Referenced by llvm::MCParserUtils::parseAssignmentExpression().
|
inline |
Definition at line 214 of file MCSymbol.h.
References IsUsedInReloc.
Referenced by llvm::MCSymbolELF::getBinding(), isInSymtab(), llvm::MCAssembler::isSymbolLinkerVisible(), and isWeak().
|
inline |
isVariable - Check if this is a variable symbol.
Definition at line 294 of file MCSymbol.h.
References SymbolContents, and SymContentsVariable.
Referenced by absoluteSymbolDiff(), canUseLocalRelocation(), llvm::AsmPrinter::EmitFunctionEntryLabel(), llvm::AsmPrinter::EmitGlobalVariable(), llvm::MCStreamer::EmitLabel(), llvm::MachObjectWriter::findAliasedSymbol(), getARMFixupKindMachOInfo(), llvm::MCAsmLayout::getBaseSymbol(), getFixupKindLog2Size(), getFixupOffset(), getFragment(), getSpecialRegForName(), llvm::MachObjectWriter::getSymbolAddress(), getSymbolOffsetImpl(), getSymbolValue(), getVariableValue(), llvm::MachObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(), llvm::MCParserUtils::isSymbolUsedInExpression(), llvm::MCAssembler::isThumbFunc(), isWeak(), llvm::MCParserUtils::parseAssignmentExpression(), RefineErrorLoc(), ResolveSymbol(), and setFragment().
|
inline |
Definition at line 287 of file MCSymbol.h.
References Kind, and SymbolKindWasm.
Referenced by llvm::MCSymbolWasm::classof().
Modify the flags via a mask.
Definition at line 416 of file MCSymbol.h.
References assert(), Flags, and NumFlagsBits.
Referenced by llvm::MCSymbolMachO::clearReferenceType(), llvm::MCSymbolMachO::setAltEntry(), llvm::MCSymbolCOFF::setClass(), llvm::MCSymbolCOFF::setIsSafeSEH(), llvm::MCSymbolCOFF::setIsWeakExternal(), llvm::MCSymbolMachO::setNoDeadStrip(), llvm::MCSymbolMachO::setReferenceTypeUndefinedLazy(), llvm::MCSymbolMachO::setSymbolResolver(), llvm::MCSymbolMachO::setThumbFunc(), llvm::MCSymbolMachO::setWeakDefinition(), and llvm::MCSymbolMachO::setWeakReference().
|
protected |
Definition at line 32 of file MCSymbol.cpp.
Referenced by MCSymbol().
void MCSymbol::print | ( | raw_ostream & | OS, |
const MCAsmInfo * | MAI | ||
) | const |
print - Print the value to the stream OS
.
Definition at line 60 of file MCSymbol.cpp.
References C, getName(), llvm::MCAsmInfo::isValidUnquotedName(), Name, llvm::report_fatal_error(), and llvm::MCAsmInfo::supportsNameQuoting().
Referenced by ConvertDoubleToBytes(), createPPCMCAsmInfo(), llvm::NVPTXAsmPrinter::doFinalization(), EmitGCCInlineAsmStr(), EmitHiLo(), GetAEABIUnwindPersonalityName(), getOpenCLAlignment(), getPlatformName(), llvm::NVPTXAsmPrinter::getVirtualRegisterName(), llvm::operator<<(), llvm::MCExpr::print(), llvm::WebAssemblyAsmPrinter::PrintAsmOperand(), PrintCFIEscape(), printDwarfFileDirective(), printExpr(), llvm::HexagonAsmPrinter::printOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::MCSectionCOFF::PrintSwitchToSection(), printSymbolOperand(), setPrivateExtern(), truncateToSize(), and VisitGlobalVariableForEmission().
|
inline |
Prepare this symbol to be redefined.
Definition at line 230 of file MCSymbol.h.
References IsRedefinable, setUndefined(), SymbolContents, SymContentsUnset, and SymContentsVariable.
Referenced by llvm::AsmPrinter::EmitFunctionEntryLabel(), llvm::AsmPrinter::EmitGlobalVariable(), and llvm::MCStreamer::EmitLabel().
|
inline |
Mark this symbol as being 'common'.
Size | - The size of the symbol. |
Align | - The alignment of the symbol. |
Definition at line 345 of file MCSymbol.h.
References assert(), CommonAlignLog2, CommonSize, getOffset(), llvm::isPowerOf2_32(), llvm::Log2_32(), NumCommonAlignmentBits, Size, SymbolContents, and SymContentsCommon.
Referenced by declareCommon().
|
inline |
Definition at line 394 of file MCSymbol.h.
References IsExternal, and Value.
Referenced by GetAEABIUnwindPersonalityName(), and getVariantKind().
|
inlineprotected |
Set the (implementation defined) symbol flags.
Definition at line 410 of file MCSymbol.h.
References assert(), Flags, NumFlagsBits, and Value.
Referenced by llvm::MCSymbolELF::isSignature(), llvm::MCSymbolELF::setBinding(), llvm::MCSymbolMachO::setDesc(), llvm::MCSymbolELF::setIsSignature(), llvm::MCSymbolELF::setIsWeakrefUsedInReloc(), llvm::MCSymbolELF::setOther(), llvm::MCSymbolELF::setType(), and llvm::MCSymbolELF::setVisibility().
|
inline |
Mark the symbol as defined in the fragment F
.
Definition at line 273 of file MCSymbol.h.
References assert(), isVariable(), and llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::setPointer().
Referenced by llvm::MCStreamer::AssignFragment(), llvm::MCObjectStreamer::EmitLabel(), llvm::MCStreamer::EmitLabel(), llvm::MCContext::getWasmSection(), and llvm::MCContext::renameELFSection().
|
inline |
Set the (implementation defined) index.
Definition at line 315 of file MCSymbol.h.
References Value.
Referenced by isAssociative(), and isInSymtab().
|
inline |
Definition at line 211 of file MCSymbol.h.
References IsRegistered, and Value.
Referenced by llvm::MCAssembler::registerSymbol().
|
inline |
Definition at line 327 of file MCSymbol.h.
References assert(), Offset, SymbolContents, SymContentsOffset, SymContentsUnset, and Value.
Referenced by llvm::MCObjectStreamer::EmitLabel(), and GetAEABIUnwindPersonalityName().
|
inline |
Definition at line 397 of file MCSymbol.h.
References dump(), IsPrivateExtern, print(), and Value.
|
inline |
Mark this symbol as redefinable.
Definition at line 228 of file MCSymbol.h.
References IsRedefinable, and Value.
Referenced by llvm::MCParserUtils::parseAssignmentExpression().
|
inline |
Mark the symbol as undefined.
Definition at line 279 of file MCSymbol.h.
References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::setPointer().
Referenced by redefineIfPossible(), and setVariableValue().
|
inline |
Definition at line 213 of file MCSymbol.h.
References IsUsedInReloc.
Referenced by canUseLocalRelocation(), llvm::MCELFStreamer::EmitIdent(), getFixupKindLog2Size(), and isWeak().
Definition at line 49 of file MCSymbol.cpp.
References assert(), IsUsed, setUndefined(), SymbolContents, SymContentsUnset, SymContentsVariable, and Value.
Referenced by llvm::MCStreamer::EmitAssignment(), llvm::MCELFStreamer::EmitWeakReference(), llvm::MCWasmStreamer::EmitWeakReference(), getSpecialRegForName(), getVariableValue(), and RefineErrorLoc().
|
friend |
Definition at line 142 of file MCSymbol.h.
|
friend |
Definition at line 141 of file MCSymbol.h.
union { ... } |
|
staticprotected |
Definition at line 64 of file MCSymbol.h.
Referenced by llvm::MCExpr::findAssociatedFragment(), and isAbsolute().
|
protected |
Definition at line 150 of file MCSymbol.h.
|
protected |
Definition at line 119 of file MCSymbol.h.
Referenced by getCommonAlignment(), and setCommon().
uint64_t llvm::MCSymbol::CommonSize |
The size of the symbol, if it is 'common'.
Definition at line 134 of file MCSymbol.h.
Referenced by declareCommon(), getCommonSize(), and setCommon().
|
mutableprotected |
Definition at line 124 of file MCSymbol.h.
Referenced by llvm::MCSymbolMachO::getEncodedFlags(), getFlags(), modifyFlags(), and setFlags().
|
mutableprotected |
If a symbol has a Fragment, the section is implied, so we only need one pointer.
The special AbsolutePseudoFragment value is for absolute symbols. If this is a variable symbol, this caches the variable value's fragment. FIXME: We might be able to simplify this by having the asm streamer create dummy fragments. If this is a section, then it gives the symbol is defined in. This is null for undefined symbols.
If this is a fragment, then it gives the fragment this symbol's value is relative to, if any.
For the 'HasName' integer, this is true if this symbol is named. A named symbol will have a pointer to the name allocated in the bytes immediately prior to the MCSymbol.
Definition at line 81 of file MCSymbol.h.
|
mutableprotected |
Index field, for use by the object file implementation.
Definition at line 127 of file MCSymbol.h.
Referenced by getIndex().
|
mutableprotected |
This symbol is visible outside this translation unit.
Definition at line 97 of file MCSymbol.h.
Referenced by isExternal(), and setExternal().
|
mutableprotected |
This symbol is private extern.
Definition at line 100 of file MCSymbol.h.
Referenced by isPrivateExtern(), and setPrivateExtern().
|
protected |
True if this symbol can be redefined.
Definition at line 89 of file MCSymbol.h.
Referenced by isRedefinable(), redefineIfPossible(), and setRedefinable().
|
mutableprotected |
Definition at line 94 of file MCSymbol.h.
Referenced by isRegistered(), and setIsRegistered().
|
protected |
IsTemporary - True if this is an assembler temporary label, which typically does not survive in the .o file's symbol table.
Usually "Lfoo" or ".foo".
Definition at line 86 of file MCSymbol.h.
Referenced by isTemporary().
|
mutableprotected |
IsUsed - True if this symbol has been used.
Definition at line 92 of file MCSymbol.h.
Referenced by getVariableValue(), isUsed(), and setVariableValue().
|
mutableprotected |
True if we have created a relocation that uses this symbol.
Definition at line 107 of file MCSymbol.h.
Referenced by isUsedInReloc(), and setUsedInReloc().
|
protected |
uint64_t llvm::MCSymbol::Offset |
The offset to apply to the fragment address to form this symbol's value.
Definition at line 131 of file MCSymbol.h.
Referenced by getOffset(), MCSymbol(), and setOffset().
|
protected |
This is actually a Contents enumerator, but is unsigned to avoid sign extension and achieve better bitpacking with MSVC.
Definition at line 111 of file MCSymbol.h.
Referenced by getOffset(), isCommon(), isUnset(), isVariable(), redefineIfPossible(), setCommon(), setOffset(), and setVariableValue().
If non-null, the value for a variable symbol.
Definition at line 137 of file MCSymbol.h.
Referenced by getVariableValue(), setExternal(), setFlags(), setIndex(), setIsRegistered(), setOffset(), setPrivateExtern(), setRedefinable(), and setVariableValue().