mylib.so tiene reubicaciones de texto. Esto está desperdiciando memoria y es un riesgo de seguridad. Por favor, arregla

Mi aplicación Android (usando una biblioteca nativa) imprime esta advertencia en Android 4.4:

linker mylib.so tiene reubicaciones de texto. Esto está desperdiciando memoria y es un riesgo de seguridad. Por favor, arregla.

¿Tienes una idea de qué es y cómo solucionarlo? Gracias,

Esto parece ser el resultado de dos errores ndk-gcc mencionados en https://code.google.com/p/android/issues/detail?id=23203

y declaró allí haber sido arreglado a partir de ndk-r8c.

Parece que el control de las bibliotecas con el problema se ha agregado recientemente.

Nota: no edite esta publicación para ocultar la URL del enlace. Es explícito porque el destino es lo que lo hace autoritativo.

Nota adicional Cambiar las versiones de NDK es solo una solución cuando la advertencia se debe al código de su aplicación. No tendrá ningún efecto si la advertencia se refiere a un componente del sistema, como libdvm, que solo puede solucionarse mediante una actualización del sistema.

Necesita hacer que el código en la posición de su biblioteca sea independiente … agregue -fpic o -fPIC a su LOCALC_FLAGS en su Android.mk y también debe asegurarse de no vincularse con ninguna biblioteca estática o compartida que contenga reubicaciones de texto. sí mismos. Si lo hacen y puedes volver a comstackrlos, utiliza uno de los indicadores mencionados anteriormente.

En resumen, debe comstackr su biblioteca con uno de los -fpic o -fPIC , donde PIC es una abreviatura de código independiente de posición .

La respuesta más larga es que su yourlib.so ha sido comstackdo de una manera que no cumple con el estándar de Google Android para un archivo ELF, donde esta entrada de Dynamic Array Tag es inesperada. En el mejor de los casos, la biblioteca seguirá ejecutándose, pero sigue siendo un error y es probable que la futura versión de AOS no permita su ejecución.

DT_TEXTREL 0x16 (22)

Para verificar lo que está en su biblioteca, use algo en la línea de:

 # readelf --wide -S yourlib.so There are 37 section headers, starting at offset 0x40: Section Headers: [Nr] Name Type Address Off Size ES Flg Lk Inf Al [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 0000000000000000 002400 068f80 00 AX 0 0 16 [ 2] .rodata PROGBITS 0000000000000000 06b380 05ad00 00 WA 0 0 32 ... [16] .rela.text RELA 0000000000000000 26b8e8 023040 18 14 1 8 ... [36] .rela.debug_frame RELA 0000000000000000 25a608 0112e0 18 14 27 8 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) 

Por favor, consulte mi amplia respuesta sobre el tema, para más detalles de DT entry . Para obtener más información sobre cómo escribir bibliotecas dinámicas adecuadas, esta es una lectura obligada .

    Intereting Posts