<div dir="ltr">The specification of llvm.init.trampoline does not say whether the trampoline can safely be moved after code has been generated. Is there any contract about this?<div><br></div><div>My question is motivated by copying collectors, which may want to relocate procedure objects (in llvm-speak: trampolines). If the generated trampoline code uses a PC-relative call instruction, then either:</div><div><ol><li>The trampoline needs to be updated during relocation (in which case I need a way to recover the target procedure's address), or<br></li><li>Trampolines cannot be relocated</li></ol>I know that I can look at the LLVM implementation to see what it actually does, but if this question is not resolved by the specification of llvm.init.trampoline then the implementation is free to change in future.</div><div><br></div><div>Thank you.</div><div><br></div><div><br></div><div>Jonathan</div></div>