InglesPransesEspanyol

Ad


OnWorks favicon

abidiff - Online sa Cloud

Patakbuhin ang abidiff sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command abidiff na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


abidiff - ihambing ang mga ABI ng ELF file

Inihahambing ng abidiff ang Application Binary Interfaces (ABI) ng dalawang shared library sa ELF
pormat. Naglalabas ito ng makabuluhang ulat na naglalarawan sa mga pagkakaiba sa pagitan ng dalawang ABI.

Para sa isang komprehensibong ulat sa pagbabago ng ABI na kinabibilangan ng mga pagbabago tungkol sa function at variable
mga sub-type, ang dalawang input shared library ay dapat na sinamahan ng kanilang impormasyon sa pag-debug
in DWARF pormat. Kung hindi, lamang ELF iniuulat ang mga simbolo na idinagdag o inalis.

INVOKASYON


abidiff [mga opsyon]

Opsyon


· - Tumulong | -h

Magpakita ng maikling tulong tungkol sa command at exit.

· --bersyon | -v

Ipakita ang bersyon ng programa at lumabas.

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

Para sa mga kaso kung saan ang impormasyon sa pag-debug para sa first-shared-library ay nahahati sa a
hiwalay na file, nagsasabi abidiff kung saan mahahanap ang hiwalay na file ng impormasyon sa pag-debug.

Tandaan na ang di-path dapat tumuro sa root directory kung saan ang impormasyon sa pag-debug
ay nakaayos sa paraang parang puno. Sa ilalim ng mga sistemang nakabatay sa Red Hat, ang direktoryo na iyon ay
karaniwan /usr/lib/debug.

Tandaan din na ang opsyong ito ay hindi sapilitan para sa split debug na impormasyon na na-install ni
package manager ng iyong system dahil noon abidiff alam kung saan hahanapin.

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

katulad --debug-info-dir1, sinasabi ng mga opsyong ito abidiff kung saan mahahanap ang split debug
impormasyon para sa second-shared-library file.

· --stat

Sa halip na ipakita ang mga detalyadong pagkakaiba sa pagitan ng ABI first-shared-library at
second-shared-library, magpakita lang ng ilang buod na istatistika tungkol sa mga pagkakaibang ito.

· --symtabs

Ipakita lamang ang mga talahanayan ng simbolo ng first-shared-library at second-shared-library.

· --deleted-fns

Sa resultang ulat tungkol sa mga pagkakaiba sa pagitan first-shared-library at
second-shared-library, ipakita lamang ang mga function na na-delete sa buong mundo
mula first-shared-library.

· --nagbago-fns

Sa resultang ulat tungkol sa mga pagkakaiba sa pagitan first-shared-library at
second-shared-library, ipakita lamang ang mga pagbabago sa mga sub-uri ng mga pandaigdigang function
tinukoy sa first-shared-library.

· --idinagdag-fns

Sa resultang ulat tungkol sa mga pagkakaiba sa pagitan first-shared-library at
second-shared-library, ipakita lamang ang mga function na tinukoy sa buong mundo na idinagdag sa
second-shared-library.

· --deleted-vars

Sa resultang ulat tungkol sa mga pagkakaiba sa pagitan first-shared-library at
second-shared-library, ipakita lamang ang mga variable na tinukoy sa buong mundo na tinanggal
mula first-shared-library.

· --nagpalit-vars

Sa resultang ulat tungkol sa mga pagkakaiba sa pagitan first-shared-library at
second-shared-library, ipakita lamang ang mga pagbabago sa mga sub-uri ng global
mga variable na tinukoy sa first-shared-library

· --idinagdag-vars

Sa resultang ulat tungkol sa mga pagkakaiba sa pagitan first-shared-library at
second-shared-library, ipakita lamang ang mga pandaigdigang variable na idinagdag (tinukoy) sa
second-shared-library.

· --no-linkage-name

Sa resultang ulat, huwag ipakita ang mga pangalan ng linkage ng idinagdag, inalis, o
binago ang mga function o variable.

· --no-show-locs
Huwag magpakita ng impormasyon tungkol sa kung saan sa pangalawa Nagbahagi aklatan ang kani-kanilang
binago ang uri.

· --no-unreferenced-symbols

Sa resultang ulat, huwag ipakita ang pagbabago ng impormasyon tungkol sa function at
mga variable na simbolo na hindi nire-reference ng anumang impormasyon sa pag-debug. Tandaan na para sa
ang mga simbolo na ito ay hindi isinangguni ng anumang impormasyon sa pag-debug, ang impormasyon ng pagbabago
ipinapakita ay maaaring idinagdag o inalis na mga simbolo.

· --pagpigil | --suppr <path-to-suppressions>

Gumamit ng file ng detalye ng pagsugpo na matatagpuan sa path-to-suppressions. Tandaan na ito
ang opsyon ay maaaring lumitaw nang maraming beses sa command line; lahat ng pagsupil
ang mga file ng detalye ay isinasaalang-alang.

· --drop <regex>

Kapag nagbabasa ng first-shared-library at second-shared-library ELF input file, i-drop
ang mga function at variable na tinukoy sa buong mundo na tumutugma sa pangalan sa regular na expression
regex. Bilang resulta, walang pagbabagong kinasasangkutan ng mga function o variable na ito ang ilalabas
sa diff report.

· --drop-fn <regex>

Kapag nagbabasa ng first-shared-library at second-shared-library ELF input file, i-drop
ang mga function na tinukoy sa buong mundo na tumutugma sa pangalan sa regular na expression regex. Bilang isang
resulta, walang pagbabagong kinasasangkutan ng mga function na ito ang ilalabas sa diff report.

· --drop-var <regex>

Kapag nagbabasa ng first-shared-library at second-shared-library ELF input file, i-drop
ang mga variable na tinukoy sa buong mundo na tumutugma sa isang regular na expression regex.

· --panatilihin <regex>

Kapag nagbabasa ng first-shared-library at second-shared-library ELF input file, panatilihin
ang mga function at variable na tinukoy sa buong mundo kung saan ang mga pangalan ay tumutugma sa regular na expression
regex. Ang lahat ng iba pang mga function at variable ay ibinabagsak sa sahig at sa gayon ay hindi
lalabas sa resultang diff report.

· --panatilihin-fn <regex>

Kapag nagbabasa ng first-shared-library at second-shared-library ELF input file, panatilihin
ang mga function na tinukoy sa buong mundo na tumutugma sa pangalan sa regular na expression regex. Lahat
iba pang mga function ay bumaba sa sahig at sa gayon ay hindi lilitaw sa resulta
diff ulat.

· --keep-var <regex>

Kapag nagbabasa ng first-shared-library at second-shared-library ELF input file, panatilihin
ang pandaigdigang tinukoy kung aling mga pangalan ang tumutugma sa regular na expression regex. Lahat ng iba pa
ang mga variable ay ibinabagsak sa sahig at sa gayon ay hindi lilitaw sa resultang diff
ulat.

· --hindi nakakapinsala

Sa diff report, ipakita lang ang mga hindi nakakapinsalang pagbabago. Bilang default, ang hindi nakakapinsala
ang mga pagbabago ay sinasala mula sa diff na ulat panatilihin ang kalat sa pinakamababa at magkaroon ng a
mas malaking pagbabago para makita ang mga totoong isyu sa ABI.

· --hindi-nakakapinsala

Sa diff report, huwag ipakita ang mga mapaminsalang pagbabago. Bilang default, ang nakakapinsala lamang
ang mga pagbabago ay ipinapakita sa diff report.

· --kalabisan

Sa diff report, magpakita ng mga kalabisan na pagbabago. Ang isang kalabisan na pagbabago ay isang pagbabago
na ipinakita sa ibang lugar sa ulat.

· --no-redundant

Sa diff report, gawin HINDI ipakita ang mga kalabisan na pagbabago. Ang isang kalabisan na pagbabago ay isang pagbabago
na ipinakita sa ibang lugar sa ulat. Ang opsyong ito ay naka-on sa pamamagitan ng
default.

· --walang-arkitektura

Huwag isaalang-alang ang arkitektura kapag naghahambing ng mga ABI.

· --dump-diff-tree
Pagkatapos ng diff report, maglabas ng textual na representasyon ng diff nodes tree na ginagamit ni
ang makina ng paghahambing upang kumatawan sa mga binagong function at variable. yun
representasyon ay ibinubuga sa error na output para sa mga layunin ng pag-debug. Tandaan na
ang diff tree na ito ay may kaugnayan lamang sa mga function at variable na may ilang sub-type
mga pagbabago. Ang mga idinagdag o inalis na function at variable ay walang anumang diff node tree
nauugnay sa kanila.

· --stats

Maglabas ng mga istatistika tungkol sa iba't ibang panloob na bagay.

· --verbose

Maglabas ng mga verbose log tungkol sa pag-usad ng iba't ibang panloob na bagay.

RETURN Mga halaga


Ang exit code ng abidiff Ang command ay alinman sa 0 kung ang ABI ng mga binary ay inihahambing
ay pantay, o non-zero kung magkaiba ang mga ito o kung nagkaroon ng error ang tool.

Sa susunod na kaso, ang exit code ay isang 8-bits-wide bit field kung saan ang bawat bit ay may a
tiyak na kahulugan.

Ang unang bit, ng halaga 1, ay pinangalanan ABIDIFF_ERROR ibig sabihin nagkaroon ng error.

Ang pangalawang bit, ng halaga 2, ay pinangalanan ABIDIFF_USAGE_ERROR ibig sabihin may error sa daan
tinawag ng user ang tool. Maaaring itakda ito, halimbawa, kung ginamit ng user ang tool
na may hindi kilalang command line switch, na may maling numero o argumento, atbp. Kung ang bit na ito ay
itakda, pagkatapos ay ang ABIDIFF_ERROR bit ay dapat na itakda rin.

Ang ikatlong bit, ng halaga 4, pinangalanan ABIDIFF_ABI_CHANGE ibig sabihin ang ABI ng binary being
magkaiba ang pinaghahambing.

Ang ikaapat na bit, na may halagang 8, ay pinangalanan ABIDIFF_ABI_INCOMPATIBLE_CHANGE ibig sabihin ang ABI ng
Ang mga binary na inihambing ay naiiba sa isang hindi tugmang paraan. Kung nakatakda ang bit na ito, ang
ABIDIFF_ABI_CHANGE bit ay dapat na itakda rin. Kung ang ABIDIFF_ABI_CHANGE ay nakatakda at ang
ABIDIFF_INCOMPATIBLE_CHANGE is HINDI set, ibig sabihin, ang mga ABI na inihahambing ay maaaring
o maaaring hindi tugma. Sa kasong iyon, kailangang suriin ng isang tao ang mga pagbabago sa ABI
upang magpasya kung sila ay magkatugma o hindi.

Ang natitirang mga piraso ay hindi ginagamit para sa sandaling ito.

PAGGAMIT HALIMBAWA


1. Pagtukoy ng pagbabago sa isang sub-uri ng isang function:

$ cat -n test-v0.cc
1 // I-compile ito gamit ang:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 na istraktura S0
5 {
6 int m0;
7 };
8
9 walang bisa
10 foo(S0* /*parameter_name*/)
11 {
12 // gumawa ng isang bagay na may parameter_name.
13}
$
$ cat -n test-v1.cc
1 // I-compile ito gamit ang:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 struct type_base
5 {
6 int ipinasok;
7 };
8
9 struct S0 : pampublikong type_base
10 {
11 int m0;
12 };
13
14 walang bisa
15 foo(S0* /*parameter_name*/)
16 {
17 // gumawa ng isang bagay na may 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
Buod ng pagbabago ng mga function: 0 Inalis, 1 Binago, 0 Idinagdag na function
Buod ng pagbabago ng mga variable: 0 Inalis, 0 Binago, 0 Idinagdag na variable

1 function na may ilang hindi direktang sub-type na pagbabago:

[C]'function void foo(S0*)' ay may ilang hindi direktang sub-type na pagbabago:
Ang parameter 0 ng uri na 'S0*' ay may mga sub-type na pagbabago:
sa itinuro sa uri ng 'struct S0':
nagbago ang laki mula 32 hanggang 64 bits
1 base class insertion:
struct type_base
1 pagbabago sa miyembro ng data:
Binago ang offset ng 'int S0::m0' mula 0 hanggang 32
$

2. Pagtukoy ng isa pang pagbabago sa isang sub-uri ng isang function:

$ cat -n test-v0.cc
1 // I-compile ito gamit ang:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 na istraktura S0
5 {
6 int m0;
7 };
8
9 walang bisa
10 foo(S0& /*parameter_name*/)
11 {
12 // gumawa ng isang bagay na may parameter_name.
13}
$
$ cat -n test-v1.cc
1 // I-compile ito gamit ang:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 na istraktura S0
5 {
6 char inserted_member;
7 int m0;
8 };
9
10 walang bisa
11 foo(S0& /*parameter_name*/)
12 {
13 // gumawa ng isang bagay na may 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
Buod ng pagbabago ng mga function: 0 Inalis, 1 Binago, 0 Idinagdag na function
Buod ng pagbabago ng mga variable: 0 Inalis, 0 Binago, 0 Idinagdag na variable

1 function na may ilang hindi direktang sub-type na pagbabago:

[C]'function void foo(S0&)' ay may ilang hindi direktang sub-type na pagbabago:
Ang parameter 0 ng uri na 'S0&' ay may mga sub-type na pagbabago:
sa reference na uri na 'struct S0':
nagbago ang laki mula 32 hanggang 64 bits
1 paglalagay ng miyembro ng data:
'char S0::inserted_member', sa offset 0 (sa bits)
1 pagbabago sa miyembro ng data:
Binago ang offset ng 'int S0::m0' mula 0 hanggang 32

$

3. Pag-detect na ang mga function ay tinanggal o naidagdag sa isang library:

$ cat -n test-v0.cc
1 // I-compile ito gamit ang:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 na istraktura S0
5 {
6 int m0;
7 };
8
9 walang bisa
10 foo(S0& /*parameter_name*/)
11 {
12 // gumawa ng isang bagay na may parameter_name.
13}
$
$ cat -n test-v1.cc
1 // I-compile ito gamit ang:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 na istraktura S0
5 {
6 char inserted_member;
7 int m0;
8 };
9
10 walang bisa
11 bar(S0& /*parameter_name*/)
12 {
13 // gumawa ng isang bagay na may 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
Buod ng mga pagbabago sa mga function: 1 Inalis, 0 Binago, 1 Idinagdag na mga function
Buod ng pagbabago ng mga variable: 0 Inalis, 0 Binago, 0 Idinagdag na variable

1 Inalis na function:
'function void foo(S0&)' {_Z3fooR2S0}

1 Idinagdag na function:
'function void bar(S0&)' {_Z3barR2S0}

$

Gumamit ng abidiff online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

  • 1
    facetracknoir
    facetracknoir
    Modular headtracking program na
    sumusuporta sa maramihang mga tagasubaybay ng mukha, mga filter
    at laro-protocol. Kabilang sa mga tagasubaybay
    ay ang SM FaceAPI, AIC Inertial Head
    Tagasubaybay...
    I-download ang facetracknoir
  • 2
    PHP QR Code
    PHP QR Code
    Ang PHP QR Code ay open source (LGPL)
    library para sa pagbuo ng QR Code,
    2-dimensional na barcode. Batay sa
    libqrencode C library, nagbibigay ng API para sa
    paggawa ng QR Code barc...
    I-download ang PHP QR Code
  • 3
    freeciv
    freeciv
    Ang Freeciv ay isang libreng turn-based
    Multiplayer diskarte laro, kung saan ang bawat isa
    ang manlalaro ay nagiging pinuno ng a
    kabihasnan, pakikipaglaban upang makuha ang
    pangwakas na layunin: maging...
    I-download ang Freeciv
  • 4
    Cuckoo Sandbox
    Cuckoo Sandbox
    Gumagamit ang Cuckoo Sandbox ng mga bahagi upang
    subaybayan ang gawi ng malware sa a
    Sandbox na kapaligiran; nakahiwalay sa
    natitirang bahagi ng sistema. Nag-aalok ito ng awtomatiko
    pagsusuri o...
    I-download ang Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Mag-play ng video sa YouTube sa LMS (pag-port ng
    Triode's to YouTbe API v3) Ito ay
    isang application na maaari ding makuha
    mula
    https://sourceforge.net/projects/lms-y...
    I-download ang LMS-YouTube
  • 6
    Windows Presentation Foundation
    Windows Presentation Foundation
    Windows Presentation Foundation (WPF)
    ay isang UI framework para sa pagbuo ng Windows
    mga desktop application. Sinusuportahan ng WPF ang a
    malawak na hanay ng pagbuo ng application
    mga tampok...
    I-download ang Windows Presentation Foundation
  • Marami pa »

Linux command

Ad