Lines Matching full:symbol

72   void EmitLabel(MCSymbol *Symbol) override;
73 void EmitEHSymAttributes(const MCSymbol *Symbol, MCSymbol *EHSymbol) override;
80 bool EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override;
81 void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) override;
82 void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
84 void BeginCOFFSymbolDef(const MCSymbol *Symbol) override { in BeginCOFFSymbolDef() argument
96 void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
98 void EmitZerofill(MCSection *Section, MCSymbol *Symbol = nullptr,
100 void EmitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
160 // Output a linker-local symbol so we don't need section-relative local in ChangeSection()
170 void MCMachOStreamer::EmitEHSymAttributes(const MCSymbol *Symbol, in EmitEHSymAttributes() argument
172 getAssembler().registerSymbol(*Symbol); in EmitEHSymAttributes()
173 if (Symbol->isExternal()) in EmitEHSymAttributes()
175 if (cast<MCSymbolMachO>(Symbol)->isWeakDefinition()) in EmitEHSymAttributes()
177 if (Symbol->isPrivateExtern()) in EmitEHSymAttributes()
181 void MCMachOStreamer::EmitLabel(MCSymbol *Symbol) { in EmitLabel() argument
182 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); in EmitLabel()
184 // We have to create a new fragment if this is an atom defining symbol, in EmitLabel()
186 if (getAssembler().isSymbolLinkerVisible(*Symbol)) in EmitLabel()
189 MCObjectStreamer::EmitLabel(Symbol); in EmitLabel()
198 cast<MCSymbolMachO>(Symbol)->clearReferenceType(); in EmitLabel()
269 void MCMachOStreamer::EmitThumbFunc(MCSymbol *Symbol) { in EmitThumbFunc() argument
272 getAssembler().setIsThumbFunc(Symbol); in EmitThumbFunc()
273 cast<MCSymbolMachO>(Symbol)->setThumbFunc(); in EmitThumbFunc()
278 MCSymbolMachO *Symbol = cast<MCSymbolMachO>(Sym); in EmitSymbolAttribute() local
283 // Note that we intentionally cannot use the symbol data here; this is in EmitSymbolAttribute()
286 ISD.Symbol = Symbol; in EmitSymbolAttribute()
292 // Adding a symbol attribute always introduces the symbol, note that an in EmitSymbolAttribute()
294 // the symbol with the assembler. in EmitSymbolAttribute()
295 getAssembler().registerSymbol(*Symbol); in EmitSymbolAttribute()
297 // The implementation of symbol attributes is designed to match 'as', but it in EmitSymbolAttribute()
321 Symbol->setExternal(true); in EmitSymbolAttribute()
323 // it isn't very consistent because it implements this as part of symbol in EmitSymbolAttribute()
328 Symbol->setReferenceTypeUndefinedLazy(false); in EmitSymbolAttribute()
333 Symbol->setNoDeadStrip(); in EmitSymbolAttribute()
334 if (Symbol->isUndefined()) in EmitSymbolAttribute()
335 Symbol->setReferenceTypeUndefinedLazy(true); in EmitSymbolAttribute()
342 Symbol->setNoDeadStrip(); in EmitSymbolAttribute()
346 Symbol->setSymbolResolver(); in EmitSymbolAttribute()
350 Symbol->setExternal(true); in EmitSymbolAttribute()
351 Symbol->setPrivateExtern(true); in EmitSymbolAttribute()
356 if (Symbol->isUndefined()) in EmitSymbolAttribute()
357 Symbol->setWeakReference(); in EmitSymbolAttribute()
363 Symbol->setWeakDefinition(); in EmitSymbolAttribute()
367 Symbol->setWeakDefinition(); in EmitSymbolAttribute()
368 Symbol->setWeakReference(); in EmitSymbolAttribute()
375 void MCMachOStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) { in EmitSymbolDesc() argument
377 getAssembler().registerSymbol(*Symbol); in EmitSymbolDesc()
378 cast<MCSymbolMachO>(Symbol)->setDesc(DescValue); in EmitSymbolDesc()
381 void MCMachOStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, in EmitCommonSymbol() argument
384 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); in EmitCommonSymbol()
386 getAssembler().registerSymbol(*Symbol); in EmitCommonSymbol()
387 Symbol->setExternal(true); in EmitCommonSymbol()
388 Symbol->setCommon(Size, ByteAlignment); in EmitCommonSymbol()
391 void MCMachOStreamer::EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, in EmitLocalCommonSymbol() argument
395 Symbol, Size, ByteAlignment); in EmitLocalCommonSymbol()
398 void MCMachOStreamer::EmitZerofill(MCSection *Section, MCSymbol *Symbol, in EmitZerofill() argument
402 // The symbol may not be present, which only creates the section. in EmitZerofill()
403 if (!Symbol) in EmitZerofill()
409 assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); in EmitZerofill()
411 getAssembler().registerSymbol(*Symbol); in EmitZerofill()
418 Symbol->setFragment(F); in EmitZerofill()
427 void MCMachOStreamer::EmitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, in EmitTBSSSymbol() argument
429 EmitZerofill(Section, Symbol, Size, ByteAlignment); in EmitTBSSSymbol()
456 // First, scan the symbol table to build a lookup table from fragments to in FinishImpl()
459 for (const MCSymbol &Symbol : getAssembler().symbols()) { in FinishImpl() local
460 if (getAssembler().isSymbolLinkerVisible(Symbol) && Symbol.isInSection() && in FinishImpl()
461 !Symbol.isVariable()) { in FinishImpl()
462 // An atom defining symbol should never be internal to a fragment. in FinishImpl()
463 assert(Symbol.getOffset() == 0 && in FinishImpl()
464 "Invalid offset in atom defining symbol!"); in FinishImpl()
465 DefiningSymbolMap[Symbol.getFragment()] = &Symbol; in FinishImpl()
470 // symbol. in FinishImpl()
474 if (const MCSymbol *Symbol = DefiningSymbolMap.lookup(&Frag)) in FinishImpl() local
475 CurrentAtom = Symbol; in FinishImpl()