Lines Matching full:symbol
73 void EmitLabel(MCSymbol *Symbol) override;
74 void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) override;
75 void EmitEHSymAttributes(const MCSymbol *Symbol, MCSymbol *EHSymbol) override;
82 bool EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override;
83 void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) override;
84 void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
86 void BeginCOFFSymbolDef(const MCSymbol *Symbol) override { in BeginCOFFSymbolDef() argument
98 void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
100 void EmitZerofill(MCSection *Section, MCSymbol *Symbol = nullptr,
102 void EmitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
162 // Output a linker-local symbol so we don't need section-relative local in ChangeSection()
172 void MCMachOStreamer::EmitEHSymAttributes(const MCSymbol *Symbol, in EmitEHSymAttributes() argument
174 getAssembler().registerSymbol(*Symbol); in EmitEHSymAttributes()
175 if (Symbol->isExternal()) in EmitEHSymAttributes()
177 if (cast<MCSymbolMachO>(Symbol)->isWeakDefinition()) in EmitEHSymAttributes()
179 if (Symbol->isPrivateExtern()) in EmitEHSymAttributes()
183 void MCMachOStreamer::EmitLabel(MCSymbol *Symbol) { in EmitLabel() argument
184 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); in EmitLabel()
186 // We have to create a new fragment if this is an atom defining symbol, in EmitLabel()
188 if (getAssembler().isSymbolLinkerVisible(*Symbol)) in EmitLabel()
191 MCObjectStreamer::EmitLabel(Symbol); in EmitLabel()
200 cast<MCSymbolMachO>(Symbol)->clearReferenceType(); in EmitLabel()
203 void MCMachOStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) { in EmitAssignment() argument
210 cast<MCSymbolMachO>(Symbol)->setAltEntry(); in EmitAssignment()
213 MCObjectStreamer::EmitAssignment(Symbol, Value); in EmitAssignment()
280 void MCMachOStreamer::EmitThumbFunc(MCSymbol *Symbol) { in EmitThumbFunc() argument
283 getAssembler().setIsThumbFunc(Symbol); in EmitThumbFunc()
284 cast<MCSymbolMachO>(Symbol)->setThumbFunc(); in EmitThumbFunc()
289 MCSymbolMachO *Symbol = cast<MCSymbolMachO>(Sym); in EmitSymbolAttribute() local
294 // Note that we intentionally cannot use the symbol data here; this is in EmitSymbolAttribute()
297 ISD.Symbol = Symbol; in EmitSymbolAttribute()
303 // Adding a symbol attribute always introduces the symbol, note that an in EmitSymbolAttribute()
305 // the symbol with the assembler. in EmitSymbolAttribute()
306 getAssembler().registerSymbol(*Symbol); in EmitSymbolAttribute()
308 // The implementation of symbol attributes is designed to match 'as', but it in EmitSymbolAttribute()
332 Symbol->setExternal(true); in EmitSymbolAttribute()
334 // it isn't very consistent because it implements this as part of symbol in EmitSymbolAttribute()
339 Symbol->setReferenceTypeUndefinedLazy(false); in EmitSymbolAttribute()
344 Symbol->setNoDeadStrip(); in EmitSymbolAttribute()
345 if (Symbol->isUndefined()) in EmitSymbolAttribute()
346 Symbol->setReferenceTypeUndefinedLazy(true); in EmitSymbolAttribute()
353 Symbol->setNoDeadStrip(); in EmitSymbolAttribute()
357 Symbol->setSymbolResolver(); in EmitSymbolAttribute()
361 Symbol->setAltEntry(); in EmitSymbolAttribute()
365 Symbol->setExternal(true); in EmitSymbolAttribute()
366 Symbol->setPrivateExtern(true); in EmitSymbolAttribute()
371 if (Symbol->isUndefined()) in EmitSymbolAttribute()
372 Symbol->setWeakReference(); in EmitSymbolAttribute()
378 Symbol->setWeakDefinition(); in EmitSymbolAttribute()
382 Symbol->setWeakDefinition(); in EmitSymbolAttribute()
383 Symbol->setWeakReference(); in EmitSymbolAttribute()
390 void MCMachOStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) { in EmitSymbolDesc() argument
392 getAssembler().registerSymbol(*Symbol); in EmitSymbolDesc()
393 cast<MCSymbolMachO>(Symbol)->setDesc(DescValue); in EmitSymbolDesc()
396 void MCMachOStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, in EmitCommonSymbol() argument
399 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); in EmitCommonSymbol()
401 getAssembler().registerSymbol(*Symbol); in EmitCommonSymbol()
402 Symbol->setExternal(true); in EmitCommonSymbol()
403 Symbol->setCommon(Size, ByteAlignment); in EmitCommonSymbol()
406 void MCMachOStreamer::EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, in EmitLocalCommonSymbol() argument
410 Symbol, Size, ByteAlignment); in EmitLocalCommonSymbol()
413 void MCMachOStreamer::EmitZerofill(MCSection *Section, MCSymbol *Symbol, in EmitZerofill() argument
417 // The symbol may not be present, which only creates the section. in EmitZerofill()
418 if (!Symbol) in EmitZerofill()
424 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); in EmitZerofill()
426 getAssembler().registerSymbol(*Symbol); in EmitZerofill()
433 Symbol->setFragment(F); in EmitZerofill()
442 void MCMachOStreamer::EmitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, in EmitTBSSSymbol() argument
444 EmitZerofill(Section, Symbol, Size, ByteAlignment); in EmitTBSSSymbol()
470 // First, scan the symbol table to build a lookup table from fragments to in FinishImpl()
473 for (const MCSymbol &Symbol : getAssembler().symbols()) { in FinishImpl() local
474 if (getAssembler().isSymbolLinkerVisible(Symbol) && Symbol.isInSection() && in FinishImpl()
475 !Symbol.isVariable()) { in FinishImpl()
476 // An atom defining symbol should never be internal to a fragment. in FinishImpl()
477 assert(Symbol.getOffset() == 0 && in FinishImpl()
478 "Invalid offset in atom defining symbol!"); in FinishImpl()
479 DefiningSymbolMap[Symbol.getFragment()] = &Symbol; in FinishImpl()
484 // symbol. in FinishImpl()
488 if (const MCSymbol *Symbol = DefiningSymbolMap.lookup(&Frag)) in FinishImpl() local
489 CurrentAtom = Symbol; in FinishImpl()