InglêsFrancêsEspanhol

favicon do OnWorks

abicompat - Online na nuvem

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

Este é o comando abicompat 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 Windows online ou emulador MAC OS online

PROGRAMA:

NOME


abicompat - verificar compatibilidade ABI

O abicompat verifica se um aplicativo vinculado a uma determinada biblioteca compartilhada ainda está
ABI compatível com uma versão subsequente dessa biblioteca. Se a nova versão do
biblioteca apresenta uma incompatibilidade ABI, então abicompat sugere ao usuário o que exatamente
essa incompatibilidade é.

INVOCAÇÃO


abicompat [opções] [ ]

OPÇÕES


· --Socorro

Exibe uma breve ajuda sobre o comando e sai.

· --versão | -v

Exiba a versão do programa e saia.

· --list-indefinidos-símbolos | -u

Exiba a lista de símbolos indefinidos do aplicativo e saia.

· --show-base-nomes | -b

No relatório resultante emitido pela ferramenta, esta opção torna a aplicação e
as bibliotecas devem ser referenciadas apenas por seus nomes de base; não por um nome absoluto completo. Esse
pode ser útil para uso em scripts que desejam comparar nomes do aplicativo e
bibliotecas independentemente de quais são seus nomes de diretório.

· --app-debug-info-dir

Defina o caminho para o diretório no qual as informações de depuração do aplicativo estão
deveria ser colocado para fora. Isso é útil para binários de aplicativos para os quais a depuração
as informações estão em um conjunto separado de arquivos.

· --lib-debug-info-dir1

Defina o caminho para o diretório sob o qual as informações de depuração da primeira versão
da biblioteca compartilhada deve ser definida. Isso é útil para a biblioteca compartilhada
binários para os quais as informações de depuração estão em um conjunto separado de arquivos.

· --lib-debug-info-dir2

Defina o caminho para o diretório em que as informações de depuração da segunda versão
da biblioteca compartilhada deve ser definida. Isso é útil para a biblioteca compartilhada
binários para os quais as informações de depuração estão em um conjunto separado de arquivos.

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

· - modo fraco

Isso aciona o modo fraco de abicompat. Neste modo, apenas uma versão do
biblioteca é necessária. Ou seja, abicompat é invocado assim:

abicompat --weak-mode

Observe que o - modo fraco opção pode até ser omitida se apenas uma versão do
a biblioteca é fornecida, junto com o aplicativo; nesse caso, abicompat automaticamente
muda para operar em modo fraco:

abicompat

Neste modo fraco, os tipos de funções e variáveis ​​exportadas pela biblioteca e
consumido pelo aplicativo (como nos símbolos dessas funções e variáveis
são indefinidos no aplicativo e são definidos e exportados pela biblioteca) são
em comparação com a versão desses tipos conforme esperado pelo aplicativo. E se estes
duas versões de tipos são diferentes, abicompat diz ao usuário quais são as diferenças
são.

Em outras palavras, neste modo, abicompat verifica se os tipos de funções e
variáveis ​​exportadas pela biblioteca significam a mesma coisa que o que o aplicativo
espera, no que diz respeito à ABI.

Observe que, neste modo, abicompat não detecta funções ou variáveis ​​exportadas
(símbolos) que são esperados pelo aplicativo, mas que são removidos da biblioteca.
É por isso que é chamado fraco modo.

RETORNO VALORES


O código de saída do abicompat comando é 0 se a ABI dos binários sendo
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


· Detectar uma possível incompatibilidade ABI em uma nova versão da biblioteca compartilhada:

$ cat -n teste0.h
1 estrutura foo
2 {
3int m0;
4
5 foo ()
6: m0 ()
7{}
8};
9
10 foo *
11 first_func ();
12
13 vazio
14 second_func (foo &);
15
16 vazio
17 third_func ();
$

$ gato -n teste-app.cc
1 // Compilar com:
2 // g ++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #include "test0.h"
5
6 int
7 principais ()
8 {
9 foo * f = first_func ();
10 second_func (* f);
11 retorna 0;
12}
$

$ cat -n teste0.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 #include "test0.h"
5
6 foo *
7 first_func ()
8 {
9 foo * f = novo foo ();
10 retorno f;
11}
12
13 vazio
14 second_func (foo &)
15 {
16}
17
18 vazio
19 third_func ()
20 {
21}
$

$ cat -n teste1.h
1 estrutura foo
2 {
3int m0;
4 char m1; / * <- um novo membro foi adicionado aqui! * /
5
6 foo ()
7: m0 (),
8 m1 ()
9{}
10};
11
12 foo *
13 first_func ();
14
15 vazio
16 second_func (foo &);
17
18 vazio
19 third_func ();
$

$ cat -n teste1.cc
1 // Compile isso com:
2 // g ++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #include "test1.h"
5
6 foo *
7 first_func ()
8 {
9 foo * f = novo foo ();
10 retorno f;
11}
12
13 vazio
14 second_func (foo &)
15 {
16}
17
18 / * Vamos comentar a definição de third_func ()
19 vazio
20 third_func ()
21 {
22}
23 * /
$

· Compilar a primeira e a segunda versões das bibliotecas: libtest-0.so e
libtest-1.so:

$ g ++ -g -Wall -shared -o libtest-0.so test0.cc
$ g ++ -g -Wall -shared -o libtest-1.so test1.cc

· Compilar o aplicativo e vinculá-lo à primeira versão da biblioteca,
criando o aplicativo de teste binário:

$ g ++ -g -Wall -o test-app -L. -ltest-0.so test-app.cc

· Agora usa abicompat para ver se libtest-1.so é compatível com ABI com o app, com respeito
para a ABI de libtest-0.so:

$ abicompat test-app libtest-0.so libtest-1.so
O arquivo ELF 'test-app' pode não ser compatível com ABI 'libtest-1.so' devido a diferenças com 'libtest-0.so' abaixo:
Resumo das alterações de funções: 0 removidas, 2 alteradas, 0 funções adicionadas
Resumo das alterações das variáveis: 0 removida, 0 alterada, 0 variável adicionada

2 funções com alguma mudança indireta de subtipo:

[C] 'function foo * first_func ()' tem algumas mudanças indiretas de subtipo:
tipo de retorno alterado:
em apontado para o tipo 'struct foo':
tamanho alterado de 32 para 64 bits
1 inserção de membro de dados:
'char foo :: m1', no deslocamento 32 (em bits)
[C] 'function void second_func (foo &)' tem algumas alterações indiretas de subtipo:
o parâmetro 0 do tipo 'foo &' tem alterações de subtipo:
tipo referenciado 'struct foo' alterado, conforme relatado anteriormente

$

· Agora utilize o modo fraco da abicompat, ou seja, disponibilizando apenas o aplicativo e o
nova versão da biblioteca:

$ abicompat --modo fraco test-app libtest-1.so
funções definidas na biblioteca
'libtest-1.so'
têm subtipos que são diferentes de quais aplicativos
'test-app'
espera:

função foo * first_func ():
tipo de retorno alterado:
em apontado para o tipo 'struct foo':
tamanho alterado de 32 para 64 bits
1 inserção de membro de dados:
'char foo :: m1', no deslocamento 32 (em bits)

$

Use abicompat online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

  • 1
    Gerente PAC
    Gerente PAC
    PAC é um substituto Perl/GTK para
    SecureCRT/Putty/etc (linux
    ssh/telnet/... gui)... Fornece uma GUI
    para configurar conexões: usuários,
    senhas, ESPERA regulamentação...
    Baixar PAC Manager
  • 2
    GeoServer
    GeoServer
    GeoServer é um software de código aberto
    servidor escrito em Java que permite aos usuários
    para compartilhar e editar dados geoespaciais.
    Projetado para interoperabilidade,
    publica da ...
    Baixar GeoServer
  • 3
    Vagalume III
    Vagalume III
    Um programa de finanças pessoais gratuito e de código aberto
    Gerente. Firefly III apresenta um
    sistema de escrituração por partidas dobradas. Você pode
    insira e organize rapidamente o seu
    transações eu ...
    Baixar Firefly III
  • 4
    Extensões Apache OpenOffice
    Extensões Apache OpenOffice
    O catálogo oficial da Apache
    Extensões do OpenOffice. Você encontrará
    extensões que variam de dicionários a
    ferramentas para importar arquivos PDF e conectar
    com ext ...
    Baixe as extensões do Apache OpenOffice
  • 5
    Louva-a-deusBT
    Louva-a-deusBT
    O Mantis é um aplicativo web de fácil implantação
    bugtracker baseado para auxiliar o bug do produto
    monitorando. Requer PHP, MySQL e um
    servidor web. Confira nossa demonstração e hospedado
    oferecendo ...
    Baixar MantisBT
  • 6
    LAN Messenger
    LAN Messenger
    LAN Messenger é um aplicativo de bate-papo p2p
    para comunicação intranet e não
    requerem um servidor. Uma variedade de acessível
    recursos são suportados, incluindo
    notificat ...
    Baixar LAN Messenger
  • Mais "

Comandos Linux

  • 1
    abidw
    abidw
    abidw - serializar o ABI de um ELF
    arquivo abidw lê uma biblioteca compartilhada em ELF
    formato e emite uma representação XML
    de seu ABI para a saída padrão. O
    emitido ...
    Execute abidw
  • 2
    habilidoso
    habilidoso
    abilint - valida uma ABI abigail
    representação abilint analisa o nativo
    Representação XML de uma ABI conforme emitida
    por abidw. Depois de analisar o XML
    represe ...
    Execute abilint
  • 3
    Coresendmsg
    Coresendmsg
    coresendmsg - envia uma mensagem da API CORE
    para o daemon core-daemon ...
    Execute coresendmsg
  • 4
    servidor_núcleo
    servidor_núcleo
    core_server - O servidor primário para
    SpamBayes. DESCRIÇÃO: Atende atualmente
    apenas a interface da web. Conectando
    ouvintes para vários protocolos é TBD.
    Este ...
    Executar core_server
  • 5
    fwflash
    fwflash
    fwflash - programa para flashar arquivo de imagem
    para um dispositivo NXT conectado...
    Executar fwflash
  • 6
    fwts-coletar
    fwts-coletar
    fwts-collect - coleta logs para fwts
    relatórios de bugs. ...
    Executar fwts-collect
  • Mais "

Ad