This does work properly if the "constant" in question is a function address.
It may also be possible to reliably produce the relocation construct I want in LLVM IR (in the RL scenario I am in, there is code generation directly in IR, so I don't need to adhere to the behaviors/assumptions of a C compiler).
The situation in the original question seems to depend on what C/C++ compilers are allowed / not allowed to assume about just how "const" a const extern variable really is. Thanks everyone for the comments.