Hi LLVM developers,
Does it need to implement RetpolineThunksPass,
EmitLoweredRetpoline, etc. for other Targets?
Or does it also need to implement
RetpolinePicto inherit from
for LLD’s Backends? Alex is my mentor, he is leading me to
maintain RISCV target, so I have such question, please give me
suggestions, thanks for your teaching!
What you need will highly depend on the architecture. We’ve worked to ensure this is effective on x86, but other architectures may need different approaches or may desire different approaches for performance.
If you read the support article linked in the commit log that describes retpoline’s strategy in much more detail, you can see the criteria that determine whether it would be effective for a particular architecture.
That said, about the only thing that I suspect would be usefully shared in terms of code will be the feature flags. The implementation is pretty much 100% target-specific anyways. We could factor a few minor things if it proves useful.
That said – I would also only use the term
retpoline if you in fact build a return-based trampoline as the mitigation. Other potential mitigation code sequences would (IMO) be better named something else.