<div dir="ltr">What is the expected way of gaining access to llvm_gc_root_chain when using JIT?<div><br></div><div>The only way I could figure out was this:</div><div><br></div><div><div>        fpm->add(llvm::createShadowStackGCLoweringPass());</div><div>        fpm->doInitialization();</div><div>        fpm->run(*f);</div><div>        // EPIC KLUDGE</div><div>        auto wrong = _module->getNamedGlobal("llvm_gc_root_chain");</div><div>        auto right = new llvm::GlobalVariable(</div><div>            *_module.get(),</div><div>            wrong->getType()->getContainedType(0),</div><div>            false, // variable</div><div>            llvm::GlobalVariable::ExternalLinkage,</div><div>            nullptr,</div><div>            "my_gc_root_chain");</div><div>        wrong->replaceAllUsesWith(right);</div></div><div><br>...which works, has a bit of a smell about it.<br><br><div>I cannot use the LLVM's definition from my GC because this is running in JIT.</div><br>I gave up trying to give it external linkage before shadow-stack-gc-lowering-pass since it makes a unique struct type that I cannot match (or I'm misunderstanding something badly), causing Stores to fail when using my definition.</div><div><br></div><div>Cheers,</div><div><br></div><div> -- nikodemus</div><div><br></div></div>