¿Una forma elegante de establecer la dirección base de la imagen ELF con Linux binutils?

Para un proyecto personal, necesito escribir un archivo ejecutable que se cargue en una dirección de memoria no predeterminada. Desdeesta pregunta tanSé que puedo establecer la dirección de entrada para un ELF y modificar las direcciones de sección manualmente para que el ejecutable se base efectivamente en alguna dirección que elijo. Sin embargo, la respuesta sugiere que esto solo funciona si no hago una inicialización glibc (que necesito para este proyecto), y establecer las direcciones de memoria de la sección cada vez que compile sería difícil (por no mencionar tedioso).

Parece que debería haber una mejor manera de establecer una dirección base para un ELF al compilar, aunque recurriré a hacerlo manualmente con un script posterior a la compilación si es necesario. Esta opción parald Sería perfecto si no fuera específico del puerto PE:

--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]

Todavía no he encontrado un ELF equivalente. ¿No existe ninguno? Analizar el archivo ELF yo mismo no sería el fin del mundo, pero parece que esta característica debería existir en algún lugar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta