¿Hay alguna manera de verificar si un archivo de objeto (archivo .o) está habilitado para PIC?PIC (código independiente de posición)
8
A
Respuesta
7
No estoy seguro de qué tan portátil es esto, pero para x86 y x86_64, formato ELF, puede usar readelf -r
y ver los tipos de reubicación.
Para el código de 32 bits PIC, usted debe tener una sección de reubicación R_386_GOTPC:
Relocation section '.rel.text' at offset 0x38c contains 3 entries:
Offset Info Type Sym.Value Sym. Name
00000004 00000902 R_386_PC32 00000000 __i686.get_pc_thunk.cx
0000000a 00000a0a R_386_GOTPC 00000000 _GLOBAL_OFFSET_TABLE_
00000010 00000803 R_386_GOT32 00000000 f
No existe tal sección sección debe existe para los no-PIC .o
s. (También verá una tabla de compensación global en la salida readelf -s
).
Para 64 bits, lo mismo pero con un tipo de reubicación R_X86_64_GOTPCREL
. Estoy bastante seguro de que todos los nombres de tipo de reubicación son directamente indicativos de si el código es PIC o no, pero no puedo encontrar una referencia en este momento.
Cuestiones relacionadas
- 1. Código independiente de posición y tabla variable
- 2. ¿Qué hace el registro PIC (% ebx)?
- 3. Código de posición independiente, bibliotecas compartidas y carillas de código: hacer que funcionen juntas
- 4. ¿Hay una convención de código para el ensamblaje (principalmente PIC)?
- 5. Descompiladores hexagonales para PIC
- 6. compilador de PIC C gratuito
- 7. -fPIE ("ejecutable independiente de la posición) opción (gcc, ld)
- 8. ¿Por qué no todo el código compilado es independiente de la posición?
- 9. Diferencia en código independiente de la posición: 86 vs x86-64
- 10. ¿El código de 32 bits x86 debe compilarse especialmente en PIC para los archivos de bibliotecas compartidas?
- 11. Pila Modbus para Microchip PIC
- 12. Código de descompilación (independiente del idioma)
- 13. Mezcla de objetos PIC y no PIC en una biblioteca compartida
- 14. PIC Función de ensamblaje llamando al
- 15. Generar un CAPTCHA de 3D [pic]
- 16. ¿Hay alguna forma de determinar si una biblioteca .a o .so se compiló como código de posición independiente?
- 17. Desarrollo de código incrustado (especialmente para PIC con C18) en Visual Studio
- 18. ¿Qué hace que este código sea "endian independiente"?
- 19. ¿Por qué gcc fuerza PIC para x64 libs compartidas?
- 20. Macro independiente de Excel
- 21. base de datos independiente
- 22. Dispositivo independiente de píxeles
- 23. aplicación de php independiente
- 24. NIB de orientación independiente
- 25. Método jQuery independiente "táctil"?
- 26. Mueva último niño en la primera posición
- 27. ¿Cliente independiente de webGL/Javascript?
- 28. socket.io independiente sin Node.js
- 29. Scala SBT: jar independiente
- 30. Uso de Grails GORM independiente
¿es 'readlef' o 'readelf'? – Raj
error tipográfico, es 'readelf'. – Mat