@@ -78,9 +78,12 @@ class MCMachOStreamer : public MCObjectStreamer {
7878 MCObjectStreamer::reset ();
7979 }
8080
81- MachObjectWriter &getWriter () {
82- return static_cast <MachObjectWriter &>(getAssembler ().getWriter ());
83- }
81+ // This function is commented out downstream because it is unsafe to use a
82+ // MachObjectWriter in the McMachOStreamer which may hold a MachOCASWriter
83+ // instead.
84+ // MachObjectWriter &getWriter() {
85+ // return static_cast<MachObjectWriter &>(getAssembler().getWriter());
86+ // }
8487
8588 MCObjectWriter &getMCObjectWriter () {
8689 return static_cast <MCObjectWriter &>(getAssembler ().getWriter ());
@@ -124,12 +127,12 @@ class MCMachOStreamer : public MCObjectStreamer {
124127 }
125128
126129 void emitLOHDirective (MCLOHType Kind, const MCLOHArgs &Args) override {
127- getWriter ().getLOHContainer ().addDirective (Kind, Args);
130+ getMCObjectWriter ().getLOHContainer ().addDirective (Kind, Args);
128131 }
129132 void emitCGProfileEntry (const MCSymbolRefExpr *From,
130133 const MCSymbolRefExpr *To, uint64_t Count) override {
131134 if (!From->getSymbol ().isTemporary () && !To->getSymbol ().isTemporary ())
132- getWriter ().getCGProfile ().push_back ({From, To, Count});
135+ getMCObjectWriter ().getCGProfile ().push_back ({From, To, Count});
133136 }
134137
135138 void finishImpl () override ;
@@ -203,11 +206,11 @@ void MCMachOStreamer::emitDataRegion(MachO::DataRegionType Kind) {
203206 MCSymbol *Start = getContext ().createTempSymbol ();
204207 emitLabel (Start);
205208 // Record the region for the object writer to use.
206- getWriter ().getDataRegions ().push_back ({Kind, Start, nullptr });
209+ getMCObjectWriter ().getDataRegions ().push_back ({Kind, Start, nullptr });
207210}
208211
209212void MCMachOStreamer::emitDataRegionEnd () {
210- auto &Regions = getWriter ().getDataRegions ();
213+ auto &Regions = getMCObjectWriter ().getDataRegions ();
211214 assert (!Regions.empty () && " Mismatched .end_data_region!" );
212215 auto &Data = Regions.back ();
213216 assert (!Data.End && " Mismatched .end_data_region!" );
@@ -232,7 +235,7 @@ void MCMachOStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
232235}
233236
234237void MCMachOStreamer::emitLinkerOptions (ArrayRef<std::string> Options) {
235- getWriter ().getLinkerOptions ().push_back (Options);
238+ getMCObjectWriter ().getLinkerOptions ().push_back (Options);
236239}
237240
238241void MCMachOStreamer::emitDataRegion (MCDataRegionType Kind) {
@@ -277,8 +280,8 @@ void MCMachOStreamer::emitDarwinTargetVariantBuildVersion(
277280
278281void MCMachOStreamer::EmitPtrAuthABIVersion (unsigned PtrAuthABIVersion,
279282 bool PtrAuthKernelABIVersion) {
280- getWriter ().setPtrAuthABIVersion (PtrAuthABIVersion);
281- getWriter ().setPtrAuthKernelABIVersion (PtrAuthKernelABIVersion);
283+ getMCObjectWriter ().setPtrAuthABIVersion (PtrAuthABIVersion);
284+ getMCObjectWriter ().setPtrAuthKernelABIVersion (PtrAuthKernelABIVersion);
282285}
283286
284287void MCMachOStreamer::emitThumbFunc (MCSymbol *Symbol) {
@@ -297,7 +300,7 @@ bool MCMachOStreamer::emitSymbolAttribute(MCSymbol *Sym,
297300 if (Attribute == MCSA_IndirectSymbol) {
298301 // Note that we intentionally cannot use the symbol data here; this is
299302 // important for matching the string table that 'as' generates.
300- getWriter ().getIndirectSymbols ().push_back (
303+ getMCObjectWriter ().getIndirectSymbols ().push_back (
301304 {Symbol, getCurrentSectionOnly ()});
302305 return true ;
303306 }
@@ -518,7 +521,7 @@ void MCMachOStreamer::finalizeCGProfileEntry(const MCSymbolRefExpr *&SRE) {
518521
519522void MCMachOStreamer::finalizeCGProfile () {
520523 MCAssembler &Asm = getAssembler ();
521- MCObjectWriter &W = getWriter ();
524+ MCObjectWriter &W = getMCObjectWriter ();
522525 if (W.getCGProfile ().empty ())
523526 return ;
524527 for (auto &E : W.getCGProfile ()) {
0 commit comments