Elegante Möglichkeit, die Basisadresse eines ELF-Images mit Linux-Binutils festzulegen?

Für ein persönliches Projekt muss ich eine ausführbare Datei schreiben, die unter einer nicht standardmäßigen Speicheradresse geladen wird. Vondiese SO FrageIch weiß, dass ich die Eintragsadresse für eine ELF festlegen und die Abschnittsadressen manuell ändern kann, sodass die ausführbare Datei effektiv auf einer von mir ausgewählten Adresse basiert. Die Antwort legt jedoch nahe, dass dies nur funktioniert, wenn ich keine glibc-Initialisierung (die ich für dieses Projekt benötige) habe und das Festlegen von Abschnittsspeicheradressen bei jedem Kompilieren schwierig wäre (ganz zu schweigen von mühsam).

Es scheint, als gäbe es eine bessere Möglichkeit, eine Basisadresse für eine ELF beim Erstellen festzulegen, obwohl ich bei Bedarf manuell mit einem Skript nach dem Erstellen vorgehen werde. Diese Option fürld wäre perfekt, wenn es nicht spezifisch für den PE-Port wäre:

--image-base value
  Use value as the base address of your program or dll. This is the lowest 
  memory location that will be used when your program or dll is loaded. To 
  reduce the need to relocate and improve performance of your dlls, each should 
  have a unique base address and not overlap any other dlls. The default is 
  0x400000 for executables, and 0x10000000 for dlls. [This option is specific 
  to the i386 PE targeted port of the linker]

Ich habe noch kein ELF-Äquivalent gefunden. Existiert keiner? Das Parsen der ELF-Datei selbst wäre nicht das Ende der Welt, aber es scheint, als ob diese Funktion irgendwo existieren sollte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage