mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Fix an asan use-after-free bug introduced by the asm printer
changes to remove non-Function based subtargets out of the asm printer. For module level emission we'll need to construct up an MCSubtargetInfo so that we can encode instructions for emission. llvm-svn: 230050
This commit is contained in:
parent
10e2fab7a3
commit
dc11957da0
@ -1303,7 +1303,17 @@ static MCSymbol *GetAnonSym(MCSymbol *Sym, MCContext &Ctx) {
|
||||
void PPCDarwinAsmPrinter::
|
||||
EmitFunctionStubs(const MachineModuleInfoMachO::SymbolListTy &Stubs) {
|
||||
bool isPPC64 = TM.getDataLayout()->getPointerSizeInBits() == 64;
|
||||
|
||||
|
||||
// Construct a local MCSubtargetInfo and shadow EmitToStreamer here.
|
||||
// This is because the MachineFunction won't exist (but have not yet been
|
||||
// freed) and since we're at the global level we can use the default
|
||||
// constructed subtarget.
|
||||
std::unique_ptr<MCSubtargetInfo> STI(TM.getTarget().createMCSubtargetInfo(
|
||||
TM.getTargetTriple(), TM.getTargetCPU(), TM.getTargetFeatureString()));
|
||||
auto EmitToStreamer = [&STI] (MCStreamer &S, const MCInst &Inst) {
|
||||
S.EmitInstruction(Inst, *STI);
|
||||
};
|
||||
|
||||
const TargetLoweringObjectFileMachO &TLOFMacho =
|
||||
static_cast<const TargetLoweringObjectFileMachO &>(getObjFileLowering());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user