InglésFrancésEspañol

Ad


icono de página de OnWorks

abicheck - Online en la nube

Ejecute abicheck en el proveedor de alojamiento gratuito OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando abicheck que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


abicheck: verifique los binarios de la aplicación para ver si hay llamadas a símbolos privados o en evolución en
bibliotecas y para la vinculación estática de algunas bibliotecas del sistema.

SINOPSIS


abicheck [-h] [-k] [-a] [-I] [-v] [-f archivo de lista] [-o archivo] [-pag patrón] [-mi patrón] [-j
ntrabajos] [-l Biblioteca] [-L ldpath] [(-s | -S) archivo db] [(-d | -D) archivo db] [-O archivo db] [-UN
archivo de lista] archivos

DESCRIPCIÓN


abicheck se ejecuta en binarios de la aplicación y emite advertencias siempre que alguno de los siguientes
se detectan tres condiciones:

· Privado símbolo uso. Los símbolos privados son funciones o variables de datos en una biblioteca
paquete que son internos a ese paquete. Son utilizados por las bibliotecas del paquete.
para la comunicación interna y no forman parte de la API / ABI que los desarrolladores de aplicaciones
debería usar.

· La evolución de símbolo uso. Los símbolos en evolución son funciones o variables de datos en una biblioteca
que están destinados al consumo de desarrolladores, pero que se han marcado como "en evolución" o
"inestables" en el sentido de que pueden volverse incompatibles o desaparecer en una versión posterior
del paquete de la biblioteca.

· Estático enlace. Enlace estático de bibliotecas del sistema (por ejemplo, libc.a) en un
La aplicación generalmente no es una buena idea porque el código de la biblioteca del sistema se "bloquea" en
el binario de la aplicación puede volverse incompatible con versiones posteriores del sistema. abicheck
intenta detectar enlaces estáticos de algunas bibliotecas del sistema.

El comportamiento predeterminado es, para cada objeto binario verificado, examinar las llamadas directas desde ese
solo objeto binario. los -l La opción permite que las bibliotecas que trae el objeto binario tengan
sus llamadas también revisadas.

CAMPUS


Se admiten las siguientes opciones:

-k Siga comprobando los binarios incluso si hay errores graves (informes del vinculador dinámico
símbolos sin resolver, ldd(1) fallas, no se detectaron símbolos).

-h Imprima un formulario de ayuda extenso.

-v Verboso. Imprime información adicional.

-f archivo de lista
El archivo de lista es un archivo que contiene una lista de objetos binarios para verificar, uno por línea.
Esta lista se adjunta a los archivos proporcionados como argumentos en la línea de comandos. Si
archivo de lista es "-", entonces se usa stdin.

-o archivar
Escribir salida en archivar en lugar de stdout.

-p patrón
Modifique los conjuntos de versiones privadas de etiquetado de coincidencia de patrón de nombre de versión. El valor predeterminado es
/privado/ utilizando una coincidencia que no distingue entre mayúsculas y minúsculas.

Si un componente de la expresión regular patrón contiene dos dos puntos seguidos: patt1 :: patt2,
entonces la coincidencia a nivel de símbolo se activará comprobando si versión :: símbolo or
biblioteca :: símbolo cerillas patrón (donde el nombre del símbolo, la versión (si corresponde) y
el nombre base de la biblioteca se sustituye por símbolo, versióny bibliotecas). Por ejemplo,

-p 'FOO_VERS. * :: _ foopriv'
or
-p 'libfoo.so. * :: _ foopriv'

-e patrón
Igual que -p sino para interfaces "en evolución".

-L ldpath
Seleccione las LD_LIBRARY_PATH variable de entorno a ldpath antes de invocar la dinámica
enlazador. Usar -L "" para desarmar LD_LIBRARY_PATH.

Si uno de los componentes de ldpath es la cadena "buscar", luego todas las bibliotecas compartidas
in archivos se encuentran y sus rutas se insertan en la ubicación "buscar". Tenga en cuenta que
el orden será aleatorio.

-l bibliotecas
Agregue el nombre base o la ruta completa de la biblioteca compartida bibliotecas a la lista de
Objetos a comprobar para realizar llamadas privadas. Esta opción puede ocurrir más de
una vez en la línea de comando y es aditivo. De forma predeterminada, solo las llamadas directas de un
binario a las bibliotecas del sistema. los -l interruptor permite comprobar
llamadas indirectas, por ejemplo: app -> supportlib -> systemlib.

-a Recorra todos los binarios antes de verificar y recopilar la lista de todos los archivos compartidos.
objetos. Tome el nombre base de cada objeto compartido encontrado y actúe como si fuera
especificado con el -l option option y luego ejecute las comprobaciones abicheck. De esta manera,
se comprueban las llamadas de todos los objetos "internos de la aplicación" en lugar de solo los
llamadas directas. (Útil cuando los objetos compartidos no tienen sus dependencias
grabado.)

-I Ignore las bibliotecas compartidas en la verificación, solo verifique los ejecutables. Compatible con -a
Las bibliotecas se buscarán primero, pero luego no se comprobarán.

-d archivo db, -D archivo db
Especificar la base de datos de símbolos de archivo plano de respaldo para la dinámica (pública frente a privada)
prueba. Estas clasificaciones se utilizarán si la biblioteca no está versionada (p. Ej.
clasificación no existe en la propia biblioteca). Usar -D para indicar que solo
información de archivo db debería ser usado. Líneas en archivo db puede ser uno de estos
formas:

biblioteca | símbolo
biblioteca | clase | símbolo
biblioteca | ARCHIVO = ruta

bibliotecas debe ser la ruta completa a la biblioteca que se especificará (no puede ser una
nombre base).

Las primeras marcas de forma símbolo como privado.

La segunda forma marca símbolo clase donde clase puede ser público, privado o
evolucionando.

La tercera forma indica el archivo camino debe abrirse a pedido cuando bibliotecas is
encontrado por primera vez. Expediente camino contiene líneas de las dos primeras formas excepto por el
bibliotecas campo. La tercera forma es una aceleración para evitar procesar muchas clasificaciones
líneas para bibliotecas nunca encontradas en la ejecución.

-O archivo db
Especifique un archivo de anulación para modificar la clasificación de símbolos para la dinámica
prueba (pública frente a privada). El formato para el archivo de anulación es como:

biblioteca | símbolo | clase

La biblioteca puede ser la ruta completa o el nombre base. Si la biblioteca es "__SKIP__", el símbolo
se ignorará para cualquier biblioteca en la que se encuentre. La clase puede ser "pública",
"privado", "en evolución" o "eliminado". La clase "eliminada" tiene una mayúscula especial, significa
el símbolo fue eliminado de la biblioteca en algún lanzamiento. El símbolo "__ALL__" para
la clase "eliminado" significa que se eliminó toda la biblioteca o es inestable
usar.

Ejemplos:

libfoo.so.1 | __bar | privado
/lib/libxyz.so.1|baz|público
__SKIP__ | __fputwc_xpg5

Esta configuración anula cualquier clasificación dentro de la biblioteca (de la biblioteca
versionado, obtenible de pvs(1), etc.).

-A archivo de lista
Configure las bibliotecas ABI de interés para las bibliotecas enumeradas en archivo de lista (completa
nombres de ruta, uno por línea). Solo se comprobarán las llamadas a estas bibliotecas; todos
otras llamadas a la biblioteca serán ignoradas.

-s archivo db, -S archivo db
Especifique bases de datos de símbolos más extensas para la prueba de vinculación estática. archivo db puede ser
una lista de archivos separados por comas. Si un archivo es un archivo estático (lib * .a) es
procesado para extraer los símbolos. De lo contrario, es un archivo de base de datos que consta de
líneas del símbolo de formulario | biblioteca: módulo por ejemplo:

shmat | /usr/lib/libc.a: shmsys.o
shmctl | /usr/lib/libc.a: shmsys.o
shmdt | /usr/lib/libc.a: shmsys.o
shmget | /usr/lib/libc.a: shmsys.o
...

Cuando todos los símbolos de un módulo. O están definidos en la aplicación, la vinculación estática de
se asume ese módulo (y el archivo de biblioteca correspondiente). Usar -S para indicar
que solo se debe realizar la prueba de enlace estático.

Uso -S int para hacer solo la verificación del enlace estático y usar la base de datos interna.

Uso -s ninguna or -S ninguna para omitir la verificación de enlace estático por completo.

-j ntrabajos
Ejecutar ntrabajos en paralelo como procesos separados. Implica -k. Destinado principalmente a
múltiples máquinas con CPU donde ntrabajos debe estar cerca del número de procesadores.
La salida se recopila en archivos tmp y se imprime de una vez cerca del final de la ejecución como
cada trabajo termina.

If ntrabajos es "-", "detectar" o "n", entonces ntrabajos se establecerá en un número dependiendo de
el número de procesadores en la máquina actual (si se puede determinar).

OPERANDOS


Se admiten los siguientes operandos:

archivos Una lista de objetos binarios de la aplicación para verificar.

SALIDA


Hay una línea por problema (puede haber varios problemas por binario verificado) que
parecerse a lo siguiente:

Si no se encontraron problemas:
nombre de archivo: OKAY

Si se usa un símbolo privado:
Nombre del archivo: PRIVADO (bibliotecas:versión_privada) privado_sim

Si está evolucionando el uso de símbolos:
nombre de archivo: EVOLUCIÓN (bibliotecas:evolucionando_vers) evolución_sym

Si el archivo está vinculado estáticamente en una biblioteca de archivos del sistema:
nombre de archivo: STATIC_LINK (Archivo)

Si se omitió la verificación del archivo:
nombre de archivo: SALTAR (razón)

En uso de la clase eliminada en el -O anular la opción de archivo, estos problemas pueden ser
encontró:

Si se ha eliminado un símbolo de la biblioteca en alguna versión:
nombre de archivo: ELIMINADO_SYM: símbolo/bibliotecas

(bibliotecas será "sin consolidar" si el símbolo estaba sin consolidar)

Si una biblioteca entera ha sido eliminada en alguna versión o es inestable para
utilizar:
nombre de archivo: UNSTABLE_LIB: biblioteca-soname = ruta-biblioteca

(ruta-biblioteca puede ser "archivo no encontrado" si no se pudo encontrar la biblioteca)

Los siguientes problemas causarán un error fatal a menos que el -k se utiliza la opción:

Si el vinculador dinámico no se pudo resolver N símbolos cuando ldd -r fue corrido:
nombre de archivo: SIN LÍMITES_SÍMBOLOS: N

Si el enlazador dinámico no encontró enlaces dinámicos:
nombre de archivo: SIN_ENLACE

If ldd -r LD_DEBUG = archivos, enlaces ha fallado:
nombre de archivo:LDD_ERROR

En estos últimos tres casos se ejecutan ldd -r en el archivo binario para obtener más información sobre lo que
salió mal (tenga en cuenta que abicheck corre ldd -r LD_DEBUG = archivos, enlaces colocar). En algunos
sistemas el enlazador dinámico no procesará programas SUID con LD_DEBUG establecer (esto generalmente
resultados en SIN_ENLACES existentes abicheck producción).

Tenga en cuenta que si está ejecutando abicheck en una biblioteca compartida (por ejemplo, libfoo.so)
tiene no ha sido construido con -l lib banderas para registrar las dependencias de su biblioteca, luego el "unbound
"Símbolos" es muy probable. No hay mucho que se pueda hacer además de reconstruir el
biblioteca o verificando un binario de aplicación que usa la biblioteca y usando el -l opción de
abicheck

SALIR ESTADO


Se devuelven los siguientes valores de salida:

0 No se encontraron errores ni problemas.

1 Ocurrió un error fatal.

2 No se produjeron errores fatales, pero se detectaron problemas en algunos binarios.

NOTAS


Solo se comprueban los objetos ELF.

En -s -S -d y -O dbfiles el carácter '#' inicia una línea de comentario de la forma habitual.

A menos que uno esté usando las coincidencias personalizadas "::" proporcionadas a través del -p or -e banderas, abicheck puede
solo verifique las bibliotecas del sistema a las que se les haya aplicado el control de versiones de símbolos (es decir,
la información privada y / o en evolución registrada para cada símbolo en la propia biblioteca).
Para obtener más información sobre el control de versiones de símbolos, consulte la "Guía de bibliotecas y vinculadores de Solaris"
answerbook en la URL http://docs.sun.com/ab2/coll.45.13 y los comandos / versión-script
sección de la página de información "ld" del enlazador GNU.

Los patrones de coincidencia de nombre de versión de símbolo predeterminados son coincidencias que no distinguen entre mayúsculas y minúsculas
cadenas "privado" y "en evolución" para los casos privados y en evolución, respectivamente.

Se omitirán los nombres de archivo impares que contengan el carácter de comillas simples o una nueva línea; tal
los caracteres interfieren con los comandos de llamada a través del shell.

Para utilizar directorios recurrentes encontrar(1) y recopile la salida en un archivo para usar con
las -f opción, o en una tubería a través de:

encontrar ... | abicheck -f - ...

Utilice abicheck en línea utilizando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad