InglêsFrancêsEspanhol

Ad


favicon do OnWorks

abicheck - Online na nuvem

Execute abicheck no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Este é o comando abicheck que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


abicheck - verifica os binários do aplicativo para chamadas para símbolos privados ou em evolução em
bibliotecas e para vinculação estática de algumas bibliotecas do sistema.

SINOPSE


Abicheck [-h] [-k] [-a] [-I] [-v] [-f arquivo de lista] [-ou arquivo de saída] [-p padronizar] [-e padronizar] [-j
nempregos] [-eu biblioteca] [-EU ldpath] [(-s | -S) arquivodb] [(-d | -D) arquivodb] [-O arquivodb] [-UMA
arquivo de lista] arquivos

DESCRIÇÃO


Abicheck é executado nos binários do aplicativo e emite avisos sempre que qualquer um dos seguintes
três condições são detectadas:

· Privado símbolo uso. Os símbolos privados são funções ou variáveis ​​de dados em uma biblioteca
pacote que são internos a esse pacote. Eles são usados ​​pelas bibliotecas do pacote
para comunicação interna e não fazem parte da API / ABI que os desenvolvedores de aplicativos
Deveria usar.

· Evoluindo símbolo uso. Os símbolos em evolução são funções ou variáveis ​​de dados em uma biblioteca
pacote que se destina ao consumo do desenvolvedor, mas foram marcados como "em evolução" ou
"instáveis" no sentido de que podem se tornar incompatíveis ou desaparecer em uma versão posterior
do pacote da biblioteca.

· Estático vinculando. Vinculação estática de bibliotecas do sistema (por exemplo, libc.a) em um
aplicativo geralmente não é uma boa ideia porque o código da biblioteca do sistema é "travado" em
o binário do aplicativo pode se tornar incompatível com versões posteriores do sistema. Abicheck
tenta detectar links estáticos de algumas bibliotecas do sistema.

O comportamento padrão é, para cada objeto binário verificado, examinar as chamadas diretas daquele
objeto binário apenas. o -l opção permite que as bibliotecas que o objeto binário traz para ter
suas chamadas também foram verificadas.

OPÇÕES


As seguintes opções são suportadas:

-k Continue verificando os binários mesmo se houver erros graves (relatórios do linker dinâmico
símbolos não resolvidos, ldd(1) falhas, nenhum símbolo detectado).

-h Imprima um longo formulário de ajuda.

-v Detalhado. Imprima informações adicionais.

-f arquivo de listagem
A arquivo de listagem é um arquivo que contém uma lista de objetos binários a serem verificados, um por linha.
Esta lista é anexada a todos os arquivos fornecidos como argumentos na linha de comando. Se
arquivo de listagem é "-", então stdin é usado.

-o arquivo de saída
Grave a saída para arquivo de saída em vez de stdout.

-p de cinto de segurança
Modifique o padrão de nome de versão que corresponde aos conjuntos de versões privadas de rotulagem. O padrão é
/privado/ usando uma correspondência que não diferencia maiúsculas de minúsculas.

Se um componente do regex de cinto de segurança contém dois pontos em uma linha: patt1 :: patt2,
então a correspondência em nível de símbolo será ativada verificando se versão :: símbolo or
biblioteca :: símbolo fósforos de cinto de segurança (onde o nome do símbolo, versão (se houver) e
o nome de base da biblioteca é substituído por símbolo, versão e biblioteca). Por exemplo,

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

-e de cinto de segurança
Igual a -p mas para interfaces "em evolução".

-L ldpath
Colocou o LD_LIBRARY_PATH variável de ambiente para ldpath antes de invocar dinâmico
vinculador. Usar -L "" para desarmar LD_LIBRARY_PATH.

Se um dos componentes de ldpath é a string "find", então todas as bibliotecas compartilhadas
in arquivos são encontrados e seus caminhos inseridos no local "encontrar". Observe que
a ordem será aleatória.

-l biblioteca
Adicione o nome de base ou o caminho completo da biblioteca compartilhada biblioteca para a lista de
objetos a serem verificados para fazer chamadas privadas. Esta opção pode ocorrer mais de
uma vez na linha de comando e é aditivo. Por padrão, apenas chamadas diretas de um
binários para as bibliotecas do sistema são verificados. o -l interruptor permite a verificação de
chamadas indiretas, por exemplo: app -> supportlib -> systemlib.

-a Faça um loop por todos os binários antes de verificar e coletar a lista de todos os binários compartilhados
objetos. Pegue o nome de base de cada objeto compartilhado encontrado e aja como se fosse
especificado com o -l opção de opção e, em seguida, execute as verificações de abicheck. Por aqui,
chamadas de todos os objetos "internos do aplicativo" são verificados em vez de apenas o
ligações diretas. (Útil quando os objetos compartilhados não têm suas dependências
gravado.)

-I Ignore as bibliotecas compartilhadas na verificação, verifique apenas os executáveis. Compatível com -uma,
as bibliotecas serão pesquisadas primeiro, mas não verificadas.

-d arquivo db, -D arquivo db
Especifique banco de dados de símbolo de arquivo simples substituto para o dinâmico (público vs. privado)
teste. Essas classificações serão usadas se a biblioteca não tiver controle de versão (ou seja,
classificação não existe na própria biblioteca). Usar -D para indicar que apenas
informação de arquivo db deve ser usado. Linhas em arquivo db pode ser de um destes
formulários:

biblioteca | símbolo
biblioteca | classe | símbolo
biblioteca | FILE = caminho

biblioteca deve ser o caminho completo para a biblioteca a ser especificada (não pode ser um
nome de base).

A primeira marca de forma símbolo como privado.

A segunda forma marca símbolo com classe onde classe pode ser público, privado ou
evoluindo.

A terceira forma indica o arquivo caminho deve ser aberto sob demanda quando biblioteca is
encontrado pela primeira vez. Arquivo caminho contém linhas das duas primeiras formas, exceto para o
biblioteca campo. A terceira forma é uma aceleração para evitar o processamento de muitas classificações
linhas para bibliotecas nunca encontradas na execução.

-O arquivo db
Especifique um arquivo de substituição para modificar a classificação do símbolo para o dinâmico
(público vs. privado) teste. O formato do arquivo de substituição é o seguinte:

biblioteca | símbolo | classe

A biblioteca pode ser o caminho completo ou o nome de base. Se a biblioteca for "__SKIP__" o símbolo
será ignorado por qualquer biblioteca em que for encontrada. A classe pode ser "pública",
"privado", "em evolução" ou "excluído". A classe "excluída" é especial, significa
o símbolo foi excluído da biblioteca em algum lançamento. O símbolo "__ALL__" para
a classe "deletada" significa que toda a biblioteca foi deletada ou está instável
para usar.

Exemplos:

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

Estas configurações substituem qualquer classificação dentro da biblioteca (da biblioteca
controle de versão, obtido de pvs(1), etc.).

-A arquivo de listagem
Defina as bibliotecas ABI de interesse para as bibliotecas listadas em arquivo de listagem (full
nomes de caminho, um por linha). Apenas as chamadas para essas bibliotecas serão verificadas; tudo
outras chamadas de biblioteca serão ignoradas.

-s arquivo db, -S arquivo db
Especifique bancos de dados de símbolos mais extensos para o teste de vinculação estática. arquivo db pode ser
uma lista de arquivos separados por vírgulas. Se um arquivo for um arquivo estático (lib * .a), é
processado para extrair os símbolos. Caso contrário, é um arquivo de banco de dados que consiste em
linhas do formulário símbolo | biblioteca: módulo por exemplo:

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
...

Quando todos os símbolos em um módulo.o são definidos no aplicativo, a vinculação estática de
esse módulo (e o arquivo da biblioteca correspondente) é assumido. Usar -S indicar
que apenas o teste de link estático deve ser executado.

Use -S int para fazer apenas a verificação do link estático e usando o banco de dados interno.

Use -s Nenhum or -S Nenhum para ignorar completamente a verificação de links estáticos.

-j nempregos
Execute nempregos em paralelo como processos separados. Implica -k. Destinado principalmente a
várias máquinas de CPU onde nempregos deve ser próximo ao número de processadores.
A saída é coletada em arquivos tmp e impressa de uma vez perto do final da execução como
cada trabalho termina.

If nempregos é "-", "detectar" ou "n", então nempregos será definido como um número dependendo de
o número de processadores na máquina atual (se isso puder ser determinado).

OPERANDOS


Os seguintes operandos são suportados:

arquivos Uma lista de objetos binários do aplicativo a serem verificados.

SAÍDA


Há uma linha por problema (pode haver vários problemas por binário verificado) que
parecido com o seguinte:

Se nenhum problema for encontrado:
nome do arquivo: ESTÁ BEM

Se o uso de símbolo privado:
nome do arquivo: PRIVADO (biblioteca:versão_privada) privado_sym

Se houver evolução no uso do símbolo:
nome do arquivo: EVOLUÇÃO (biblioteca:evolução_vers) evoluindo_sym

Se o arquivo estiver estaticamente vinculado a uma biblioteca de arquivos do sistema:
nome do arquivo:STATIC_LINK(arquivo)

Se a verificação do arquivo foi ignorada:
nome do arquivo: PULAR (razão)

Em uso da classe excluída no -O opção de substituir arquivo, esses problemas podem ser
encontrado:

Se um símbolo foi excluído da biblioteca em alguma versão:
nome do arquivo: DELETED_SYM: símbolo/biblioteca

(biblioteca será "desassociado" se o símbolo estiver desassociado)

Se uma biblioteca inteira foi excluída em alguma versão ou está instável para
usar:
nome do arquivo: INSTÁVEL_LIB: biblioteca-soname = caminho da biblioteca

(caminho da biblioteca pode ser "arquivo não encontrado" se a biblioteca não puder ser encontrada)

Os problemas a seguir causarão um erro fatal, a menos que o -k opção é usada:

Se o vinculador dinâmico não puder resolver N símbolos quando ldd -r foi executado:
nome do arquivo: UNBOUND_SYMBOLS: N

Se o vinculador dinâmico não encontrou vínculos dinâmicos:
nome do arquivo: SEM_BINDINGS

If ldd -r com LD_DEBUG = arquivos, ligações falhou:
nome do arquivo: LDD_ERRO

Nestes últimos três casos, execute ldd -r no arquivo binário para obter mais informações sobre o que
deu errado (observe que Abicheck é executado ldd -r com LD_DEBUG = arquivos, ligações definir). Em alguns
sistemas com os quais o vinculador dinâmico não processará programas SUID LD_DEBUG definido (isso geralmente
resulta em NO_BINDINGS no Abicheck resultado).

Observe que se você estiver executando abicheck em uma biblioteca compartilhada (por exemplo, libfoo.so) que
tem não foi construído com -l lib sinalizadores para registrar suas dependências de biblioteca, então o "
símbolos "é muito provável. Não há muito a fazer além de reconstruir o
biblioteca ou verificando um binário de aplicativo que usa a biblioteca e usando o -l opção de
abicheck.

SAIR STATUS


Os seguintes valores de saída são retornados:

0 Sem erros e sem problemas encontrados.

1 Ocorreu um erro fatal.

2 Nenhum erro fatal ocorreu, mas alguns binários tiveram problemas detectados.

NOTAS


Apenas objetos ELF são verificados.

No -s -S -d e -O dbfiles o caractere '#' inicia uma linha de comentário da maneira usual.

A menos que um esteja usando as correspondências personalizadas "::" fornecidas por meio do -p or -e bandeiras, abicheck pode
apenas verifique as bibliotecas do sistema que tiveram o controle de versão de símbolo aplicado a elas (ou seja,
as informações privadas e / ou evolutivas registradas para cada símbolo na própria biblioteca).
Para obter mais informações sobre controle de versão de símbolo, consulte o "Solaris Linker and Libraries Guide"
livro de respostas no URL http://docs.sun.com/ab2/coll.45.13 e os Comandos / Versão-Script
seção da página de informações "ld" do vinculador GNU.

Os padrões de correspondência de nome de versão de símbolo padrão são correspondências insensíveis ao
cadeias de caracteres "privado" e "evoluindo" para os casos privado e evolutivo, respectivamente.

Nomes de arquivo ímpares contendo o caractere de aspas simples ou nova linha serão ignorados; tal
os caracteres interferem na chamada de comandos por meio do shell.

Para recursar diretórios, use find(1) e coletar a saída para um arquivo para uso com
que o -f opção, ou em um tubo em via:

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

Use abicheck online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

Comandos Linux

Ad