abidiff - Bulutta Çevrimiçi

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen komut abidiff'tir.

Program:

ADI


abidiff - ELF dosyalarının ABI'lerini karşılaştırın

abidiff, iki paylaşılan kitaplığın Uygulama İkili Arayüzlerini (ABI) karşılaştırır. ELF
biçim. İki ABI arasındaki farkları açıklayan anlamlı bir rapor yayar.

İşlev ve değişkenle ilgili değişiklikleri içeren kapsamlı bir ABI değişiklik raporu için
alt türler, iki girdi paylaşımlı kütüphaneye hata ayıklama bilgileri eşlik etmelidir
in CÜCE biçim. Aksi takdirde, yalnızca ELF eklenen veya çıkarılan semboller raporlanır.

ÇAĞRI


abidiff [seçenekler]

SEÇENEKLER


· --yardım et | -h

Komutla ilgili kısa bir yardım görüntüleyin ve çıkın.

· --versiyon | -v

Programın sürümünü görüntüleyin ve çıkın.

· --debug-bilgi-dir1 | --d1 <iki yol1>

Hata ayıklama bilgilerinin olduğu durumlar için ilk paylaşılan kitaplık a'ya bölünür
ayrı dosya, söyler Abidiff bu ayrı hata ayıklama bilgi dosyasını nerede bulabilirim.

Bunu not et iki yol hata ayıklama bilgilerinin altında yer aldığı kök dizini göstermelidir.
ağaç şeklinde düzenlenmiştir. Red Hat tabanlı sistemlerde bu dizin
genellikle /usr/lib/debug.

Ayrıca bu seçeneğin, tarafından yüklenen bölünmüş hata ayıklama bilgileri için zorunlu olmadığını unutmayın.
sisteminizin paket yöneticisi çünkü o zaman Abidiff nerede bulacağını bilir.

· --debug-bilgi-dir2 | --d2 <iki yol2>

Facebok sayfasını beğenin : --debug-bilgi-dir1, bu seçenekler söyler Abidiff bölünmüş hata ayıklama nerede bulunur
için bilgi ikinci paylaşımlı kitaplık dosyası.

· --stat

arasındaki ayrıntılı ABI farklılıklarını göstermek yerine ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, bu farklılıklarla ilgili bazı özet istatistikleri görüntülemeniz yeterlidir.

· --semtablar

yalnızca sembol tablolarını görüntüleyin. ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık.

· --silinmiş-fns

Aradaki farklar hakkında ortaya çıkan raporda ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, yalnızca silinen genel olarak tanımlanmış işlevleri görüntüleyin
itibaren ilk paylaşılan kitaplık.

· --değişen-fns

Aradaki farklar hakkında ortaya çıkan raporda ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, yalnızca genel işlevlerin alt türlerindeki değişiklikleri görüntüleyin
tanımlanmış ilk paylaşılan kitaplık.

· --eklenen-fns

Aradaki farklar hakkında ortaya çıkan raporda ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, yalnızca genel olarak tanımlanmış işlevleri görüntüle
ikinci paylaşımlı kitaplık.

· --silinmiş-vars

Aradaki farklar hakkında ortaya çıkan raporda ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, yalnızca silinen genel olarak tanımlanmış değişkenleri göster
itibaren ilk paylaşılan kitaplık.

· --değişen değişkenler

Aradaki farklar hakkında ortaya çıkan raporda ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, yalnızca global alt türlerindeki değişiklikleri görüntüleyin.
içinde tanımlanan değişkenler ilk paylaşılan kitaplık

· --eklenen-vars

Aradaki farklar hakkında ortaya çıkan raporda ilk paylaşılan kitaplık ve
ikinci paylaşımlı kitaplık, yalnızca eklenen (tanımlanan) global değişkenleri görüntüleyin
ikinci paylaşımlı kitaplık.

· --no-bağlantı-adı

Sonuç raporunda, eklenen, kaldırılan veya eklenenlerin bağlantı adlarını görüntülemeyin.
Değişen işlevler veya değişkenler.

· --yerleri göstermeme
içinde nerede olduğu hakkında bilgi göstermeyin. ikinci Paylaşılan kütüphane ilgili
tipi değiştirildi.

· --no-referanssız-semboller

Ortaya çıkan raporda, işlevle ilgili değişiklik bilgilerini görüntülemeyin ve
herhangi bir hata ayıklama bilgisi tarafından başvurulmayan değişken semboller. Şunun için not edin:
herhangi bir hata ayıklama bilgisi tarafından referans alınmayan bu semboller, değişiklik bilgileri
görüntülenen, eklenen veya kaldırılan simgelerdir.

· --bastırmalar | --destek <bastırmaya giden yol>

adresinde bulunan bir bastırma belirtim dosyası kullanın. bastırmaya giden yol. Bunu unutmayın
seçenek, komut satırında birden çok kez görünebilir; tüm bastırma
Spesifikasyon dosyaları daha sonra dikkate alınır.

· --düşürmek <regex>

Okurken ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık ELF giriş dosyaları, bırak
adı normal ifadeyle eşleşen genel olarak tanımlanmış işlevler ve değişkenler
regex. Sonuç olarak, bu işlevleri veya değişkenleri içeren hiçbir değişiklik yayınlanmayacaktır.
fark raporunda.

· --bırak-fn <regex>

Okurken ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık ELF giriş dosyaları, bırak
adı normal ifadeyle eşleşen genel olarak tanımlanmış işlevler regex. Olarak
sonuç olarak, fark raporunda bu işlevleri içeren hiçbir değişiklik yayınlanmayacaktır.

· --drop-var <regex>

Okurken ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık ELF giriş dosyaları, bırak
a normal ifadeyle eşleşen global olarak tanımlanmış değişkenler regex.

· --Tut <regex>

Okurken ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık ELF giriş dosyaları, sakla
adları normal ifadeyle eşleşen genel olarak tanımlanmış işlevler ve değişkenler
regex. Diğer tüm işlevler ve değişkenler yere bırakılır ve bu nedenle
ortaya çıkan fark raporunda görünür.

· --keep-fn <regex>

Okurken ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık ELF giriş dosyaları, sakla
adı normal ifadeyle eşleşen genel olarak tanımlanmış işlevler regex. Herşey
diğer işlevler yere düşürülür ve bu nedenle sonuçta görünmeyecektir.
fark raporu.

· --keep-var <regex>

Okurken ilk paylaşılan kitaplık ve ikinci paylaşımlı kitaplık ELF giriş dosyaları, sakla
genel olarak tanımlanmış hangi adların normal ifadeyle eşleştiği regex. Diğer tüm
değişkenler yere bırakılır ve bu nedenle ortaya çıkan farkta görünmez
rapor.

· --zararsız

Fark raporunda, yalnızca zararsız değişiklikleri görüntüleyin. Varsayılan olarak, zararsız
değişiklikler fark raporundan filtrelenir, dağınıklığı minimumda tutar ve
gerçek ABI sorunlarını tespit etmek için daha fazla değişiklik.

· --zararsız

Fark raporunda zararlı değişiklikleri gösterme. Varsayılan olarak, yalnızca zararlı
değişiklikler fark raporunda görüntülenir.

· --gereksiz

Fark raporunda, gereksiz değişiklikleri görüntüleyin. Gereksiz bir değişiklik bir değişikliktir
bu raporun başka bir yerinde görüntülendi.

· -- gereksiz

Fark raporunda, DEĞİL gereksiz değişiklikleri görüntüler. Gereksiz bir değişiklik bir değişikliktir
bu raporun başka bir yerinde görüntülendi. Bu seçenek tarafından açılır
Varsayılan.

· --no-mimari

ABI'leri karşılaştırırken mimariyi dikkate almayın.

· --dump-diff-ağacı
fark raporundan sonra, tarafından kullanılan fark düğümleri ağacının metinsel bir temsilini yayınlayın.
değişen işlevleri ve değişkenleri temsil eden karşılaştırma motoru. o
hata ayıklama amacıyla hata çıktısına temsili gönderilir. Bunu not et
bu fark ağacı yalnızca bazı alt türleri olan işlevler ve değişkenlerle ilgilidir.
değişir. Eklenen veya kaldırılan işlevler ve değişkenler, herhangi bir fark düğümü ağacına sahip değil
onlarla ilişkili.

· --istatistikler

Çeşitli dahili şeyler hakkında istatistikler yayar.

· --ayrıntılı

Çeşitli dahili şeylerin ilerlemesi hakkında ayrıntılı günlükler yayınlayın.

DÖNÜŞ DEĞERLER


çıkış kodu Abidiff karşılaştırılan ikili dosyaların ABI'si ise komut ya 0'dır
eşittir veya farklıysa veya araç bir hatayla karşılaşırsa sıfır değildir.

Daha sonraki durumda, çıkış kodu, her bitin bir
özel anlam.

1 değerindeki ilk bit olarak adlandırılan ABIDIFF_ERROR bir hata olduğu anlamına gelir.

2 değerindeki ikinci bit olarak adlandırılan ABIDIFF_USAGE_ERROR yani yolda bir hata var
kullanıcı aracı çağırdı. Örneğin, kullanıcı aracı çalıştırdıysa ayarlanabilir.
bilinmeyen bir komut satırı anahtarıyla, yanlış bir sayı veya argümanla vb. Bu bit ise
ayarlayın, ardından ABIDIFF_ERROR bit de ayarlanmalıdır.

4 değerindeki üçüncü bit olarak adlandırılan ABIDIFF_ABI_CHANGE ikili dosyaların ABI'si anlamına gelir
karşılaştırıldığında farklıdır.

8 değerindeki dördüncü bit ABIDIFF_ABI_INCOMPATIBLE_CHANGE ABI anlamına gelir
karşılaştırılan ikili dosyalar uyumsuz bir şekilde farklıdır. Bu bit ayarlanırsa, o zaman
ABIDIFF_ABI_CHANGE bit de ayarlanmalıdır. Eğer ABIDIFF_ABI_CHANGE ayarlanır ve
ABIDIFF_INCOMPATIBLE_CHANGE is DEĞİL ayarlandıysa, bu, karşılaştırılan ABI'lerin
veya uyumlu olmayabilir. Bu durumda, bir insanın ABI değişikliklerini gözden geçirmesi gerekir.
uyumlu olup olmadığına karar vermek için.

Kalan bitler şu an için kullanılmamaktadır.

KULLANIM ÖRNEKLER


1. Bir işlevin alt türünde bir değişikliğin algılanması:

$ cat -n testi-v0.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-v0.so test-v0.cc
3
4 yapı S0
5 {
6 int m0;
7};
8
9 boşluk
10 foo(S0* /*parametre_adı*/)
11 {
12 // parametre_adı ile bir şeyler yapın.
13}
$
$ cat -n testi-v1.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-v1.so test-v1.cc
3
4 yapı type_base
5 {
6 int eklendi;
7};
8
9 yapı S0 : genel tip_taban
10 {
11 int m0;
12};
13
14 boşluk
15 foo(S0* /*parametre_adı*/)
16 {
17 // parametre_adı ile bir şeyler yapın.
18}
$
$ g++ -g -Duvar -paylaşılan -o libtest-v0.so test-v0.cc
$ g++ -g -Duvar -paylaşılan -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Fonksiyon değişiklikleri özeti: 0 Kaldırıldı, 1 Değiştirildi, 0 Fonksiyon eklendi
Değişken değişiklikleri özeti: 0 Kaldırıldı, 0 Değiştirildi, 0 Değişken eklendi

Bazı dolaylı alt tür değişikliği ile 1 işlev:

[C]'function void foo(S0*)'' bazı dolaylı alt tür değişiklikleri içeriyor:
'S0*' türündeki 0 parametresinin alt türü değişiklikleri var:
'struct S0' yazmayı işaret etti:
boyut 32'den 64 bit'e değiştirildi
1 temel sınıf ekleme:
yapı türü_tabanı
1 veri üyesi değişikliği:
'int S0::m0' ofseti 0'dan 32'ye değiştirildi
$

2. Bir fonksiyonun alt tipinde başka bir değişikliğin tespit edilmesi:

$ cat -n testi-v0.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-v0.so test-v0.cc
3
4 yapı S0
5 {
6 int m0;
7};
8
9 boşluk
10 foo(S0& /*parametre_adı*/)
11 {
12 // parametre_adı ile bir şeyler yapın.
13}
$
$ cat -n testi-v1.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-v1.so test-v1.cc
3
4 yapı S0
5 {
6 karakter eklenmiş_üye;
7 int m0;
8};
9
10 boşluk
11 foo(S0& /*parametre_adı*/)
12 {
13 // parametre_adı ile bir şeyler yapın.
14}
$
$ g++ -g -Duvar -paylaşılan -o libtest-v0.so test-v0.cc
$ g++ -g -Duvar -paylaşılan -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Fonksiyon değişiklikleri özeti: 0 Kaldırıldı, 1 Değiştirildi, 0 Fonksiyon eklendi
Değişken değişiklikleri özeti: 0 Kaldırıldı, 0 Değiştirildi, 0 Değişken eklendi

Bazı dolaylı alt tür değişikliği ile 1 işlev:

[C]'function void foo(S0&)'' bazı dolaylı alt tür değişiklikleri içeriyor:
'S0&' türündeki 0 parametresinin alt türü değişiklikleri var:
başvurulan tipte 'struct S0':
boyut 32'den 64 bit'e değiştirildi
1 veri üyesi ekleme:
'char S0::inserted_member', ofset 0'da (bit olarak)
1 veri üyesi değişikliği:
'int S0::m0' ofseti 0'dan 32'ye değiştirildi

$

3. İşlevlerin kaldırıldığını veya bir kitaplığa eklendiğini algılama:

$ cat -n testi-v0.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-v0.so test-v0.cc
3
4 yapı S0
5 {
6 int m0;
7};
8
9 boşluk
10 foo(S0& /*parametre_adı*/)
11 {
12 // parametre_adı ile bir şeyler yapın.
13}
$
$ cat -n testi-v1.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-v1.so test-v1.cc
3
4 yapı S0
5 {
6 karakter eklenmiş_üye;
7 int m0;
8};
9
10 boşluk
11 bar(S0& /*parametre_adı*/)
12 {
13 // parametre_adı ile bir şeyler yapın.
14}
$
$ g++ -g -Duvar -paylaşılan -o libtest-v0.so test-v0.cc
$ g++ -g -Duvar -paylaşılan -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
İşlev değişiklikleri özeti: 1 Kaldırıldı, 0 Değiştirildi, 1 Eklenen işlevler
Değişken değişiklikleri özeti: 0 Kaldırıldı, 0 Değiştirildi, 0 Değişken eklendi

1 Kaldırılan işlev:
'fonksiyon geçersiz foo(S0&)' {_Z3fooR2S0}

1 Eklenen işlev:
'işlev geçersiz çubuğu(S0&)' {_Z3barR2S0}

$

onworks.net hizmetlerini kullanarak abidiff'i çevrimiçi kullanın



En yeni Linux ve Windows çevrimiçi programları