Vinculación de símbolos a direcciones fijas en Linux

¿Cómo se podría vincular (algunos) símbolos a direcciones fijas específicas usando GNU ld para que el binario aún se pudiera ejecutar normalmente en Linux (x86)? No habrá ningún acceso a esos símbolos, pero sus direcciones son importantes.

Por ejemplo, tendría la siguiente estructura:

struct FooBar {
    Register32 field_1;
    Register32 field_2;
    //...
};

struct FooBar foobar;

Me gustaria enlazarfoobar para abordar 0x76543210, pero vincula las bibliotecas estándar y el resto de la aplicación normalmente. La aplicación hará uso de la dirección de foobar, pero no hará referencia a la memoria (posiblemente inexistente) detrás de ella.

La razón de esta solicitud es que esta misma fuente se puede usar en dos plataformas: en la plataforma nativa,Register32 simplemente puede ser unvolatile uint32_t, pero en LinuxRegister32 es un objeto C ++ con el mismo tamaño que unuint32_t que define p.operator=, que luego usará la dirección del objeto y enviará una solicitud a un marco de comunicación con esa dirección (y los datos) para realizar el acceso real en el hardware remoto. El enlazador aseguraría asíRegister32 Los campos de la estructura se refieren a las "direcciones" correctas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta