InglêsFrancêsEspanhol

Ad


favicon do OnWorks

abidiff - Online na nuvem

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

Este é o comando abidiff 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


abidiff - comparar ABIs de arquivos ELF

abidiff compara as interfaces binárias do aplicativo (ABI) de duas bibliotecas compartilhadas em ELF
formato. Ele emite um relatório significativo que descreve as diferenças entre os dois ABIs.

Para um relatório de mudança ABI abrangente que inclui mudanças sobre a função e variável
subtipos, as duas bibliotecas compartilhadas de entrada devem ser acompanhadas com suas informações de depuração
in ANÃO formato. Caso contrário, apenas ELF símbolos que foram adicionados ou removidos são relatados.

INVOCAÇÃO


abidiff [opções]

OPÇÕES


· --Socorro | -h

Exibe uma breve ajuda sobre o comando e sai.

· --versão | -v

Exiba a versão do programa e saia.

· --debug-info-dir1 | --d1 <di-caminho1>

Para casos em que as informações de depuração para primeira biblioteca compartilhada é dividido em um
arquivo separado, diz Abidiff onde encontrar esse arquivo de informações de depuração separado.

Observe que di-caminho deve apontar para o diretório raiz sob o qual as informações de depuração
está organizado em forma de árvore. Nos sistemas baseados em Red Hat, esse diretório é
geralmente / usr / lib / debug.

Observe também que esta opção não é obrigatória para dividir informações de depuração instaladas por
o gerenciador de pacotes do seu sistema porque então Abidiff sabe onde encontrar.

· --debug-info-dir2 | --d2 <di-caminho2>

Como --debug-info-dir1, esta opção diz Abidiff onde encontrar o debug dividido
informação para o segunda biblioteca compartilhada arquivo.

· --Estado

Em vez de exibir as diferenças ABI detalhadas entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, apenas exiba algumas estatísticas resumidas sobre essas diferenças.

· --symtabs

Exibir apenas as tabelas de símbolos do primeira biblioteca compartilhada e segunda biblioteca compartilhada.

· --deleted-fns

No relatório resultante sobre as diferenças entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, exibe apenas as funções definidas globalmente que foram excluídas
da primeira biblioteca compartilhada.

· --changed-fns

No relatório resultante sobre as diferenças entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, exibe apenas as mudanças nos subtipos das funções globais
definido em primeira biblioteca compartilhada.

· --adicionado-fns

No relatório resultante sobre as diferenças entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, exibe apenas as funções definidas globalmente que foram adicionadas ao
segunda biblioteca compartilhada.

· --deleted-vars

No relatório resultante sobre as diferenças entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, exibe apenas as variáveis ​​definidas globalmente que foram excluídas
da primeira biblioteca compartilhada.

· --changed-vars

No relatório resultante sobre as diferenças entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, exibe apenas as mudanças nos subtipos do global
variáveis ​​definidas em primeira biblioteca compartilhada

· --adicionado-vars

No relatório resultante sobre as diferenças entre primeira biblioteca compartilhada e
segunda biblioteca compartilhada, exibe apenas as variáveis ​​globais que foram adicionadas (definidas) para
segunda biblioteca compartilhada.

· --no-linkage-name

No relatório resultante, não exiba os nomes de ligação do adicionado, removido ou
funções ou variáveis ​​alteradas.

· --no-show-locs
Não mostre informações sobre onde no segundo compartilhado biblioteca o respectivo
tipo foi alterado.

· - sem símbolos não referenciados

No relatório resultante, não exiba informações de alteração sobre a função e
símbolos de variáveis ​​que não são referenciados por nenhuma informação de depuração. Observe que para
esses símbolos não são referenciados por nenhuma informação de depuração, a informação de mudança
exibidos são símbolos adicionados ou removidos.

· - supressões | --supr <caminho para supressões>

Use um arquivo de especificação de supressão localizado em caminho para supressões. Observe que este
a opção pode aparecer várias vezes na linha de comando; toda a supressão
os arquivos de especificação são então levados em consideração.

· --derrubar <regex>

Ao ler o primeira biblioteca compartilhada e segunda biblioteca compartilhada Arquivos de entrada ELF, solte
as funções e variáveis ​​definidas globalmente cujo nome corresponde à expressão regular
regex. Como resultado, nenhuma mudança envolvendo essas funções ou variáveis ​​será emitida
no relatório diff.

· --drop-fn <regex>

Ao ler o primeira biblioteca compartilhada e segunda biblioteca compartilhada Arquivos de entrada ELF, solte
as funções definidas globalmente cujo nome corresponde à expressão regular regex. Como
resultado, nenhuma mudança envolvendo essas funções será emitida no relatório diff.

· --drop-var <regex>

Ao ler o primeira biblioteca compartilhada e segunda biblioteca compartilhada Arquivos de entrada ELF, solte
as variáveis ​​definidas globalmente que correspondem a uma expressão regular regex.

· --guarda <regex>

Ao ler o primeira biblioteca compartilhada e segunda biblioteca compartilhada Arquivos de entrada ELF, mantenha
as funções e variáveis ​​definidas globalmente cujos nomes correspondem à expressão regular
regex. Todas as outras funções e variáveis ​​são descartadas e, portanto, não
aparecem no relatório diff resultante.

· --manter-fn <regex>

Ao ler o primeira biblioteca compartilhada e segunda biblioteca compartilhada Arquivos de entrada ELF, mantenha
as funções definidas globalmente cujo nome corresponde à expressão regular regex. Todos
outras funções são deixadas cair no chão e, portanto, não aparecerão no resultado
relatório diff.

· --keep-var <regex>

Ao ler o primeira biblioteca compartilhada e segunda biblioteca compartilhada Arquivos de entrada ELF, mantenha
os definidos globalmente quais nomes correspondem à expressão regular regex. Todos os outros
variáveis ​​são descartadas no chão e, portanto, não aparecerão no diff resultante
relatar.

· --inofensivo

No relatório diff, exiba apenas as alterações inofensivas. Por padrão, o inofensivo
as mudanças são filtradas do relatório diff para manter a desordem no mínimo e ter um
maior mudança para detectar problemas reais de ABI.

· --não-prejudicial

No relatório diff, não exiba as alterações prejudiciais. Por padrão, apenas o prejudicial
as mudanças são exibidas no relatório diff.

· --redundante

No relatório diff, exiba as alterações redundantes. Uma mudança redundante é uma mudança
que foi exibido em outra parte do relatório.

· --não redundante

No relatório diff, faça NÃO exibir alterações redundantes. Uma mudança redundante é uma mudança
que foi exibido em outra parte do relatório. Esta opção é ativada por
padrão.

· --sem arquitetura

Não leve em consideração a arquitetura ao comparar ABIs.

· --dump-diff-árvore
Após o relatório de diferenças, emita uma representação textual da árvore de nós de diferenças usada por
o mecanismo de comparação para representar as funções e variáveis ​​alteradas. Este
representação é emitida para a saída de erro para fins de depuração. Observe que
esta árvore de diferenças é relevante apenas para funções e variáveis ​​que têm algum subtipo
alterar. As funções e variáveis ​​adicionadas ou removidas não têm nenhuma árvore de nós de diferenças
associado a eles.

· --Estatísticas

Emita estatísticas sobre várias coisas internas.

· --verbose

Emita registros detalhados sobre o progresso de diversos itens internos.

RETORNO VALORES


O código de saída do Abidiff o comando é 0 se a ABI dos binários comparados
são iguais ou diferentes de zero se forem diferentes ou se a ferramenta tiver encontrado um erro.

No último caso, o código de saída é um campo de bits de 8 bits em que cada bit tem um
significado específico.

O primeiro bit, de valor 1, denominado ABIDIFF_ERROR significa que houve um erro.

O segundo bit, de valor 2, denominado ABIDIFF_USAGE_ERROR significa que houve um erro no caminho
o usuário invocou a ferramenta. Pode ser definido, por exemplo, se o usuário invocou a ferramenta
com uma chave de linha de comando desconhecida, com um número ou argumento errado, etc. Se este bit for
definido, então o ABIDIFF_ERROR bit deve ser definido também.

O terceiro bit, de valor 4, denominado ABIDIFF_ABI_CHANGE significa que a ABI dos binários sendo
comparados são diferentes.

O quarto bit, de valor 8, denominado ABIDIFF_ABI_INCOMPATIBLE_CHANGE significa o ABI do
binários comparados são diferentes de maneira incompatível. Se este bit estiver definido, então o
ABIDIFF_ABI_CHANGE bit deve ser definido também. Se o ABIDIFF_ABI_CHANGE está definido e o
ABIDIFF_INCOMPATIBLE_CHANGE is NÃO definido, então isso significa que os ABIs que estão sendo comparados podem
ou pode não ser compatível. Nesse caso, um ser humano precisa revisar as mudanças de ABI
para decidir se eles são compatíveis ou não.

Os bits restantes não são usados ​​no momento.

USO EXEMPLOS


1. Detectar uma mudança em um subtipo de uma função:

$ cat -n teste-v0.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 estrutura S0
5 {
6int m0;
7};
8
9 vazio
10 foo (S0 * / * nome_do_parâmetro * /)
11 {
12 // faça algo com parameter_name.
13}
$
$ cat -n teste-v1.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 estrutura tipo_base
5 {
6 int inserido;
7};
8
9 struct S0: public type_base
10 {
11int m0;
12};
13
14 vazio
15 foo (S0 * / * nome_do_parâmetro * /)
16 {
17 // faça algo com parameter_name.
18}
$
$ g ++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g ++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Resumo das alterações de funções: 0 removido, 1 alterado, 0 função adicionada
Resumo das alterações das variáveis: 0 removida, 0 alterada, 0 variável adicionada

1 função com alguma mudança indireta de subtipo:

[C] 'function void foo (S0 *)' tem algumas alterações indiretas de subtipo:
o parâmetro 0 do tipo 'S0 *' tem alterações de subtipo:
em apontado para o tipo 'struct S0':
tamanho alterado de 32 para 64 bits
1 inserção de classe base:
estrutura tipo_base
1 alteração de membro de dados:
deslocamento 'int S0 :: m0' alterado de 0 para 32
$

2. Detectar outra mudança em um subtipo de uma função:

$ cat -n teste-v0.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 estrutura S0
5 {
6int m0;
7};
8
9 vazio
10 foo (S0 & / * parameter_name * /)
11 {
12 // faça algo com parameter_name.
13}
$
$ cat -n teste-v1.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 estrutura S0
5 {
6 char inserido_member;
7int m0;
8};
9
10 vazio
11 foo (S0 & / * parameter_name * /)
12 {
13 // faça algo com parameter_name.
14}
$
$ g ++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g ++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Resumo das alterações de funções: 0 removido, 1 alterado, 0 função adicionada
Resumo das alterações das variáveis: 0 removida, 0 alterada, 0 variável adicionada

1 função com alguma mudança indireta de subtipo:

[C] 'function void foo (S0 &)' tem algumas alterações indiretas de subtipo:
o parâmetro 0 do tipo 'S0 &' tem alterações de subtipo:
no tipo referenciado 'struct S0':
tamanho alterado de 32 para 64 bits
1 inserção de membro de dados:
'char S0 :: insert_member', no deslocamento 0 (em bits)
1 alteração de membro de dados:
deslocamento 'int S0 :: m0' alterado de 0 para 32

$

3. Detectar que funções foram removidas ou adicionadas a uma biblioteca:

$ cat -n teste-v0.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 estrutura S0
5 {
6int m0;
7};
8
9 vazio
10 foo (S0 & / * parameter_name * /)
11 {
12 // faça algo com parameter_name.
13}
$
$ cat -n teste-v1.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 estrutura S0
5 {
6 char inserido_member;
7int m0;
8};
9
10 vazio
11 bar (S0 e / * nome_do_parâmetro * /)
12 {
13 // faça algo com parameter_name.
14}
$
$ g ++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g ++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Resumo das alterações de funções: 1 removidas, 0 alteradas, 1 funções adicionadas
Resumo das alterações das variáveis: 0 removida, 0 alterada, 0 variável adicionada

1 função removida:
'function void foo (S0 &)' {_Z3fooR2S0}

1 função adicionada:
'function void bar (S0 &)' {_Z3barR2S0}

$

Use abidiff online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

  • 1
    facetracknoir
    facetracknoir
    Programa de headtracking modular que
    suporta vários rastreadores de rosto, filtros
    e protocolos de jogo. Entre os rastreadores
    são o SM FaceAPI, AIC Inertial Head
    Rastreador ...
    Baixar facetracknoir
  • 2
    Código QR PHP
    Código QR PHP
    PHP QR Code é de código aberto (LGPL)
    biblioteca para gerar QR Code,
    Código de barras bidimensional. Baseado em
    Biblioteca C libqrencode, fornece API para
    criando código QR barc ...
    Baixe o código QR do PHP
  • 3
    freeciv
    freeciv
    Freeciv é um jogo gratuito baseado em turnos
    jogo de estratégia multijogador, em que cada
    jogador se torna o líder de um
    civilização, lutando para obter o
    objetivo final: ser ...
    Baixar Freeciv
  • 4
    Cuco Sandbox
    Cuco Sandbox
    Cuckoo Sandbox usa componentes para
    monitorar o comportamento do malware em um
    Ambiente sandbox; isolado do
    restante do sistema. Oferece automação
    análise o ...
    Baixar Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Reproduzir vídeo do YouTube em LMS (portagem de
    Triode's to YouTbe API v3) Este é
    um aplicativo que também pode ser obtido
    da
    https://sourceforge.net/projects/lms-y...
    Baixar LMS-YouTube
  • 6
    Windows Presentation Foundation
    Windows Presentation Foundation
    Windows Presentation Foundation (WPF)
    é uma estrutura de interface do usuário para a construção do Windows
    aplicativos de desktop. WPF suporta um
    amplo conjunto de desenvolvimento de aplicativos
    recursos...
    Baixe o Windows Presentation Foundation
  • Mais "

Comandos Linux

Ad