mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 12:50:00 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230050 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
16422b22bc
commit
d53224014d
@ -1304,6 +1304,16 @@ 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