Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

126
Vistas
Resolver reubicaciones relativas en enlace parcial

Me di cuenta de que usar -r para hacer un enlace parcial en realidad no resuelve ninguna reubicación, al parecer, incluso si pudieran resolverse mediante el direccionamiento relativo. Por ejemplo, considere fo y go , con fo que contiene f() que llama a g() dentro de go . Antes de vincular, el desmontaje y las reubicaciones son las esperadas. Sin embargo, después de un enlace parcial a un nuevo archivo ho (a través de ld -r -o ho fo go ), todavía hay una reubicación para la llamada a g() , aunque en teoría podría haberse resuelto con una dirección relativa.

Aquí está el desmontaje de ho ( objdump -d ho ), que contiene f() y g() . Puede ver que la llamada a g() aún no está resuelta:

 ho: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 <f>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: e8 00 00 00 00 callq 9 <f+0x9> 9: 90 nop a: 5d pop %rbp b: c3 retq 000000000000000c <g>: c: 55 push %rbp d: 48 89 e5 mov %rsp,%rbp 10: 90 nop 11: 5d pop %rbp 12: c3 retq

Aquí está la tabla de reubicación de ho ( objdump -r ho ):

 ho: file format elf64-x86-64 RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 0000000000000005 R_X86_64_PC32 g-0x0000000000000004 RELOCATION RECORDS FOR [.eh_frame]: OFFSET TYPE VALUE 0000000000000020 R_X86_64_PC32 .text 0000000000000058 R_X86_64_PC32 .text+0x000000000000000c

Entonces, solo me preguntaba si había o no alguna forma de forzar que la reubicación se realizara a través de una dirección relativa durante un enlace parcial. Intenté compilar el código con -fpic , pero eso aún no provocó que se realizara la reubicación durante el enlace parcial.

Tenga en cuenta que no tengo ningún objetivo, aplicación o razón para esto. Simplemente explorando la funcionalidad y las capacidades de ld .

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Según esta referencia , parece que la razón por la que los símbolos relativos no se resuelven es para dar más flexibilidad al enlace. Si en su lugar quisiéramos resolver el símbolo g en una dirección diferente, necesitaríamos cambiar esos saltos en el código.

Sin embargo, si cambia su símbolo g para que sea estático, el enlazador resolverá los saltos. En ese caso, el símbolo ya no se exporta y, por lo tanto, no puede ser manipulado por futuras llamadas del enlazador.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda