Ito ang command abi-compliance-checker 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
abi-compliance-checker - tool upang ihambing ang ABI compatibility ng shared C/C++ library
mga bersyon
DESCRIPTION
PANGALAN:
ABI Compliance Checker (abi-compliance-checker) Suriin ang pabalik na compatibility ng a
C/C++ library API
DESCRIPTION:
Ang ABI Compliance Checker (ABICC) ay isang tool para sa pagsuri ng backward binary at
source-level compatibility ng isang shared C/C++ library. Sinusuri ng tool ang mga file ng header
at mga nakabahaging aklatan (*.so) ng luma at bagong mga bersyon at sinusuri ang mga pagbabago sa API at
ABI (ABI=API+compiler ABI) na maaaring masira ang binary at/o source-level compatibility:
mga pagbabago sa calling stack, mga pagbabago sa v-table, inalis na mga simbolo, pinalitan ang pangalan ng mga field, atbp.
Ang hindi pagkakatugma ng binary ay maaaring magresulta sa pag-crash o hindi tamang pag-uugali ng mga application
binuo gamit ang isang lumang bersyon ng isang library kung tumatakbo ang mga ito sa isang bago. Pinagmulan
ang hindi pagkakatugma ay maaaring magresulta sa mga error sa recompilation sa isang bagong bersyon ng library.
Ang tool ay inilaan para sa mga developer ng software library at maintainers ng
mga operating system na interesado sa pagtiyak ng backward compatibility, ibig sabihin, payagan
mga lumang application na tatakbo o muling isasama sa mga mas bagong bersyon ng library.
Gayundin ang tool ay maaaring gamitin ng mga ISV para sa pagsuri ng mga application na maaaring dalhin sa bago
mga bersyon ng aklatan. Ang mga nahanap na isyu ay maaaring isaalang-alang kapag iniangkop ang
application sa isang bagong bersyon ng library.
Ang tool na ito ay libreng software: maaari mo itong muling ipamahagi at/o baguhin ito sa ilalim ng
mga tuntunin ng GNU LGPL o GNU GPL.
PAGGAMIT:
abi-compliance-checker [mga opsyon]
HALIMBAWA:
abi-compliance-checker -lib NAME -matanda OLD.xml -bago NEW.xml
Ang OLD.xml at NEW.xml ay mga XML-descriptor:
1.0
/path1/to/header(s)/ /path2/to/header(s)/
...
/path1/to/library(ies)/ /path2/to/library(ies)/
...
IMPORMASYON OPSYON:
-h|-tulong
I-print ang tulong na ito.
-i|-impormasyon
I-print ang kumpletong impormasyon.
-v|-bersyon
Impormasyon sa bersyon ng pag-print.
-dumpversion
I-print ang bersyon ng tool (1.99.14) at huwag gumawa ng anumang bagay.
PANGKALAHATAN OPSYON:
-l|-lib|-library NAME
Pangalan ng library (walang bersyon).
-d1|-luma|-o PATH
Descriptor ng 1st (lumang) bersyon ng library. Maaaring isa ito sa mga sumusunod:
1. XML-descriptor (VERSION.xml file):
1.0
/path1/to/header(s)/ /path2/to/header(s)/
...
/path1/to/library(ies)/ /path2/to/library(ies)/
...
...
2. ABI dump na nabuo ng -tapon opsyon 3. Direktoryo na may mga header at/o nakabahagi
mga aklatan 4. Single header file
Kung gumagamit ka ng 2-4 na uri ng deskriptor, dapat mong tukuyin ang mga numero ng bersyon
sa -v1 at -v2 pagpipilian din.
Para sa karagdagang impormasyon, mangyaring tingnan ang:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-bago|-n PATH
Descriptor ng ika-2 (bagong) bersyon ng library.
-tapon|-dump-abi PATH
Gumawa ng library ABI dump para sa input XML descriptor. Maaari mo itong ilipat kahit saan
at pumasa sa halip na ang descriptor. Maaari rin itong magamit para sa pag-debug ng tool.
Mga sinusuportahang bersyon ng ABI dump: 2.0<=V<=3.2
EXTRA OPSYON:
App|-application PATH
Ang pagpipiliang ito ay nagpapahintulot sa isa na tukuyin ang application na dapat suriin
portability sa bagong bersyon ng library.
-static-libs
Suriin ang mga static na aklatan sa halip na ang mga nakabahaging aklatan. Ang seksyon ng
Dapat tumuro ang XML-descriptor sa static na lokasyon ng mga library.
-gcc-path PATH
Path sa cross GCC compiler na gagamitin sa halip na ang karaniwang (host) GCC.
-gcc-prefix PREFIX
GCC toolchain prefix.
-gcc-options OPTS
Mga karagdagang opsyon sa compiler.
-sysroot DIR
Tukuyin ang alternatibong root directory. Ang tool ay maghahanap para sa isama ang mga landas sa
ang DIR/usr/include at DIR/usr/lib na mga direktoryo.
-v1|-bersyon1 NUM
Tukuyin ang unang bersyon ng library sa labas ng descriptor. Ang pagpipiliang ito ay kailangan kung ikaw
mas gusto ang isang alternatibong uri ng deskriptor (tingnan -d1 pagpipilian).
Sa pangkalahatan, dapat mong tukuyin ito sa XML-descriptor:
VERSION
-v2|-bersyon2 NUM
Tukuyin ang ika-2 bersyon ng library sa labas ng descriptor.
-vnum NUM
Tukuyin ang bersyon ng library sa nabuong ABI dump. Ang seksyon ng
Ang input na XML descriptor ay mapapatungan sa kasong ito.
-s|-mahigpit
Tratuhin ang lahat ng babala sa compatibility bilang mga problema. Magdagdag ng bilang ng "Mababang" kalubhaan
mga problema sa return value ng tool.
-header-lamang
Suriin ang mga file ng header nang walang mga nakabahaging aklatan. Madali itong patakbuhin, ngunit maaaring magbigay ng a
mababang kalidad na ulat sa pagiging tugma na may mga maling positibo at walang pagtukoy ng
idinagdag/tinanggal ang mga simbolo.
Bilang kahalili maaari mong isulat ang "wala" na salita sa seksyon sa
XML-descriptor:
wala
-show-retval
Ipakita ang uri ng pagbabalik ng simbolo sa ulat.
-listahan ng mga simbolo PATH
Ang pagpipiliang ito ay nagbibigay-daan sa isa na tukuyin ang isang file na may isang listahan ng mga simbolo (magled names in
C++) na dapat suriin. Ang iba pang mga simbolo ay hindi susuriin.
-listahan ng mga uri PATH
Ang pagpipiliang ito ay nagpapahintulot sa isa na tukuyin ang isang file na may listahan ng mga uri na dapat
sinuri. Ang iba pang mga uri ay hindi susuriin.
-laktawan-mga simbolo PATH
Ang listahan ng mga simbolo na hindi dapat suriin.
-skip-types PATH
Ang listahan ng mga uri na hindi dapat suriin.
-header-list PATH
Ang file na may listahan ng mga header, na dapat suriin/i-dumped.
-laktawan ang mga header PATH
Ang file na may listahan ng mga header file, na hindi dapat suriin.
-header NAME
Suriin/I-dump ang ABI ng header na ito lamang.
-gamit-mga tambakan
Gumawa ng mga dump para sa dalawang bersyon ng isang library at ihambing ang mga dump. Dapat itong tumaas
ang pagganap ng tool at bawasan ang paggamit ng memorya ng system.
-nostdinc
Huwag maghanap sa mga karaniwang direktoryo ng system ng GCC para sa mga file ng header.
-dump-system NAME -sysroot DIR
Hanapin ang lahat ng nakabahaging aklatan at mga file ng header sa direktoryo ng DIR, lumikha ng XML
descriptors at gumawa ng ABI dumps para sa bawat library. Ang resultang set ng ABI dumps ay maaaring
kumpara (--cmp-systems) kasama ang isa pang nilikha para sa ibang bersyon ng pagpapatakbo
system upang suriin ang mga ito para sa pagiging tugma. Huwag kalimutang tukuyin
-cross-gcc opsyon kung ang iyong target na system ay nangangailangan ng ilang partikular na bersyon ng GCC
compiler (iba sa host GCC). Ang system ABI dump ay bubuo sa:
sys_dumps/NAME/ARCH
-dump-system DESCRIPTOR.xml
Pareho sa nakaraang opsyon ngunit kumukuha ng XML descriptor ng target na sistema bilang
input, kung saan dapat mong ilarawan ito:
/* Mga pangunahing seksyon */
/* Pangalan ng system */
/* Ang listahan ng mga path patungo sa mga file ng header at/o
mga direktoryo na may mga file ng header, isa bawat linya */
/* Ang listahan ng mga path patungo sa mga shared library at/o
mga direktoryo na may mga nakabahaging aklatan, isa bawat linya */
/* Opsyonal na mga seksyon */
/* Listahan ng mga direktoryo na hahanapin
para sa mga file ng header na awtomatikong makabuo ng mga path, isa sa bawat linya */
/* Listahan ng mga direktoryo na hahanapin
para sa mga shared library upang malutas ang mga dependency, isa bawat linya */
/* Listahan ng mga direktoryo na may mga tool na ginamit
para sa pagsusuri (GCC toolchain), isa bawat linya */
/* GCC toolchain prefix.
Halimbawa:
arm-linux-gnueabi arm-none-symbianelf */
/* Karagdagang mga opsyon sa GCC, isa bawat linya */
-sysinfo DIR
Ang pagpipiliang ito ay dapat gamitin sa -dump-system opsyon na itapon ang ABI ng pagpapatakbo
system at i-configure ang proseso ng paglalaglag. Makakahanap ka ng sample sa package:
modules/Target/{unix, symbian, windows}
-cmp-systems -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Paghambingin ang dalawang system ABI dumps. Gumawa ng mga ulat sa pagiging tugma para sa bawat library at ang
karaniwang ulat sa HTML kasama ang buod ng mga resulta ng pagsubok para sa lahat ng mga naka-check na library.
Ang ulat ay bubuo sa:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-listahan PATH
Ang file na may listahan ng mga aklatan, na dapat itapon ng -dump-system opsyon
o dapat suriin ng -cmp-systems pagpipilian.
-ext|-pinahaba
Kung ang iyong library A ay dapat gamitin ng ibang library B at gusto mong kontrolin
ang ABI ng B, pagkatapos ay dapat mong paganahin ang opsyong ito. Susuriin ng tool ang mga pagbabago
sa lahat ng mga uri ng data, kahit na hindi sila ginagamit ng anumang function sa library A. Tulad
Ang mga uri ng data ay hindi bahagi ng A library ABI, ngunit maaaring bahagi ng ABI ng B
library.
Ang maikling scheme ay:
app C (sirang) -> lib B (sirang ABI) -> lib A (stable ABI)
-q|-tahimik
I-print ang lahat ng mensahe sa file sa halip na stdout at stderr. Default na landas (maaaring
binago ng -log-path opsyon):
logs/run.log
-stdout
I-print ang mga resulta ng pagsusuri (mga ulat sa pagiging tugma at ABI dump) sa stdout sa halip na
paggawa ng file. Ito ay magpapahintulot sa piping data sa iba pang mga programa.
-ulat-format FMT
Baguhin ang format ng ulat sa pagiging tugma. Mga format:
htm - HTML format (default) xml - XML format
-dump-format FMT
Baguhin ang format ng ABI dump. Mga format:
perl - Data::Dumper format (default) xml - XML format
-xml
Alias para sa: --ulat-format=xml or --dump-format=xml
-lang WIKA
Itakda ang wika ng library (C o C++). Magagamit mo ang opsyong ito kung hindi magawa ng tool
auto-detect ang isang wika. Maaaring maging kapaki-pakinabang ang opsyong ito para sa pagsuri sa mga header ng C-library
(--lang=C) sa --headers-lamang or --pinahaba mga mode.
-arko ARCH
Itakda ang arkitektura ng library (x86, x86_64, ia64, braso, ppc32, ppc64, s390, atbp.). Ang
Ang opsyon ay kapaki-pakinabang kung hindi matukoy ng tool ang tamang arkitektura ng input
mga bagay.
-binaryo|-bin|-abi
Ipakita lang ang mga problema sa compatibility na "Binary". Bumuo ng ulat sa:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-pinagmulan|-src|-api
Ipakita lamang ang mga problema sa compatibility ng "Pinagmulan". Bumuo ng ulat sa:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-limit-apektado LIMIT
Ang maximum na bilang ng mga apektadong simbolo na nakalista sa ilalim ng paglalarawan ng binago
i-type ang ulat.
OTHER OPSYON:
-pagsusulit
Magpatakbo ng mga panloob na pagsubok. Lumikha ng dalawang binary na hindi magkatugma na bersyon ng isang sample na library at
patakbuhin ang tool upang suriin ang mga ito para sa pagiging tugma. Ang pagpipiliang ito ay nagpapahintulot sa isa na suriin kung
gumagana nang tama ang tool sa kasalukuyang kapaligiran.
-test-dump
Subukan ang kakayahang gumawa, magbasa at maghambing ng mga ABI dump.
-debug
Mode ng pag-debug. I-print ang impormasyon sa pag-debug sa screen. I-save ang mga intermediate na yugto ng pagsusuri
sa direktoryo ng debug:
debug/LIB_NAME/VERSION/
Isaalang-alang din ang paggamit --tambakan opsyon para sa pag-debug ng tool.
-cpp-compatible
Kung ang iyong mga file ng header ay nakasulat sa wikang C at maaaring i-compile ng G++
compiler (ibig sabihin, huwag gumamit ng C++ na mga keyword), pagkatapos ay maaari mong sabihin sa tool ang tungkol dito at
pabilisin ang pagsusuri.
-cpp-incompatible
Itakda ang opsyong ito kung gumagamit ng C++ na mga keyword ang input C header file.
-p|-params PATH
Path sa file na may mga pangalan ng parameter ng function. Maaari itong magamit para sa pagpapabuti ng ulat
tingnan kung ang mga file ng header ng library ay walang mga pangalan ng parameter. Format ng file:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Palitan ang {RELPATH} macros sa PATH sa XML-descriptor na ginamit para sa pag-dumping sa library
ABI (tingnan -tapon pagpipilian).
-relpath1 PATH
Palitan ang {RELPATH} macros sa PATH sa 1st XML-descriptor (-d1).
-relpath2 PATH
Palitan ang {RELPATH} macros sa PATH sa 2nd XML-descriptor (-d2).
-dump-landas PATH
Tumukoy ng *.abi.tar.gz o *.abi file path kung saan bubuo ng ABI dump. Default:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-uri-uriin
Paganahin ang pag-uuri ng data sa mga ABI dump.
-ulat-landas PATH
Path sa ulat ng compatibility. Default:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-report-path PATH
Path sa ulat ng compatibility na "Binary". Default:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-report-path PATH
Path sa ulat ng compatibility na "Pinagmulan." Default:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-log-path PATH
Log path para sa lahat ng mensahe. Default:
logs/LIB_NAME/VERSION/log.txt
-log1-path PATH
Log path para sa unang bersyon ng isang library. Default:
logs/LIB_NAME/V1/log.txt
-log2-path PATH
Log path para sa ika-2 bersyon ng isang library. Default:
logs/LIB_NAME/V2/log.txt
-logging-mode MODE
Baguhin ang logging mode. Mga mode:
w - i-overwrite ang mga lumang log (default) a - idagdag ang mga lumang log n - huwag magsulat ng anumang log
-listang-apektado
Bumuo ng file na may listahan ng mga hindi tugmang simbolo sa tabi ng HTML compatibility
ulat. Gumamit ng command na 'c++filt @file' mula sa GNU binutils para i-unmangle ang mga simbolo ng C++
ang nabuong file. Mga default na pangalan:
abi_affected.txt src_affected.txt
-sangkap NAME
Ang pangalan ng bahagi sa pamagat at buod ng ulat ng HTML. Default:
aklatan
-pamagat NAME
Palitan ang pangalan ng library sa pamagat ng ulat ng NAME. Bilang default ay ipapakita ang a
pangalan na tinukoy ni -l pagpipilian.
-dagdag-impormasyon DIR
Magtapon ng karagdagang impormasyon sa DIR.
-extra-dump
Gumawa ng pinahabang ABI dump na naglalaman ng lahat ng simbolo mula sa unit ng pagsasalin.
-puwersa
Subukang gamitin ang opsyong ito kung hindi gumagana ang tool.
-pagtitiis ANTAS
Maglapat ng isang set ng heuristics upang matagumpay na mag-compile ng mga input header file. Kaya mo
paganahin ang ilang antas ng pagpapaubaya sa pamamagitan ng pagsasama sa kanila sa isang string (hal. 13, 124,
atbp.). Mga Antas:
1 - laktawan ang mga non-Linux header (hal. win32_*.h, atbp.) 2 - laktawan ang mga panloob na header (hal.
*_p.h, impl/*.h, atbp.) 3 - laktawan ang mga header na kinabibilangan ng mga hindi Linux na header 4 - laktawan
mga header na kasama ng iba
-magtiis
Paganahin ang pinakamataas na antas ng pagpapaubaya [1234].
-suriin
Suriin ang pagkakumpleto ng ABI dump.
-mabilis
Mabilis na pagsusuri. Huwag paganahin ang pagsusuri ng ilang mga halimbawa ng template.
-laktawan ang mga panloob na simbolo PATTERN
Huwag suriin ang mga simbolo na tumugma sa pattern.
-skip-internal-types PATTERN
Huwag suriin ang mga uri na tumugma sa pattern.
Iulat ang:
Ang ulat sa pagiging tugma ay bubuo sa:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Ang log ay bubuo sa:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT MGA CODE:
0 - Tugma. Ang tool ay tumatakbo nang walang anumang mga error. non-zero - Hindi tugma o
ang tool ay tumakbo na may mga error.
MORE IMPORMASYON:
http://lvc.github.io/abi-compliance-checker/
Gumamit ng abi-compliance-checker online gamit ang mga serbisyo ng onworks.net