<div dir="ltr">I was actually proposing something like where you write a fully working executable (identical to what the linker writes today), but you *additionally* write an extra section that contained information about the type and location of all applied relocations.  This way you could re-write relocations on a subsequent link where the executable was used as an input.  I don't know if any linkers currently have a mode where you can do this though, and it sounds like OP might want to use only functionality that is currently available in an existing linker today.</div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 23, 2018 at 3:10 AM Pavel Labath <<a href="mailto:labath@google.com">labath@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, 23 Jul 2018 at 05:31, Zachary Turner via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
><br>
> Couldn’t you write the relocations to the ELF executable?  I don’t know if current linkers have support for this, but it seems possible in theory to make a relinkable executable.  If you want to do this with an already linked executable though, then yea this won’t be possible.<br>
<br>
You can do a "ld --relocatable" to create an elf file that can be used<br>
as further input to the linker (so relocations will be preserved,<br>
etc.). However, that file will not be a fully functional executable<br>
until you do a final non-relocatable link on it.<br>
</blockquote></div>