Dit is de opdracht abi-compliance-checker die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
abi-compliance-checker - tool om ABI-compatibiliteit van gedeelde C/C++-bibliotheek te vergelijken
versies
PRODUCTBESCHRIJVING
NAAM:
ABI Compliance Checker (abi-compliance-checker) Controleer achterwaartse compatibiliteit van a
C/C++ bibliotheek-API
BESCHRIJVING:
ABI Compliance Checker (ABICC) is een hulpmiddel voor het controleren van achterwaartse binaire en
compatibiliteit op bronniveau van een gedeelde C/C++-bibliotheek. De tool controleert headerbestanden
en gedeelde bibliotheken (*.so) van oude en nieuwe versies en analyseert wijzigingen in API en
ABI (ABI=API+compiler ABI) die de compatibiliteit op binair en/of bronniveau kan verbreken:
wijzigingen in aanroepende stapel, v-tabelwijzigingen, verwijderde symbolen, hernoemde velden, enz.
Binaire incompatibiliteit kan leiden tot crashen of onjuist gedrag van applicaties
gebouwd met een oude versie van een bibliotheek als ze op een nieuwe draaien. Bron
incompatibiliteit kan resulteren in hercompilatiefouten met een nieuwe bibliotheekversie.
De tool is bedoeld voor ontwikkelaars van softwarebibliotheken en beheerders van:
besturingssystemen die geïnteresseerd zijn in achterwaartse compatibiliteit, dwz toestaan
oude applicaties uit te voeren of opnieuw te compileren met nieuwere bibliotheekversies.
De tool kan ook door ISV's worden gebruikt voor het controleren van de portabiliteit van applicaties naar nieuwe
bibliotheek versies. Gevonden problemen kunnen in aanmerking worden genomen bij het aanpassen van de
applicatie naar een nieuwe bibliotheekversie.
Deze tool is gratis software: u kunt deze herdistribueren en/of wijzigen onder de
voorwaarden van de GNU LGPL of GNU GPL.
GEBRUIK:
abi-compliance-checker [opties]
VOORBEELD:
abi-compliance-checker -lib NAAM -oud OUDE.xml -nieuw NIEUW.xml
OLD.xml en NEW.xml zijn XML-descriptors:
1.0
/pad1/naar/koptekst(en)/ /pad2/naar/koptekst(en)/
...
/pad1/naar/bibliotheek(en)/ /pad2/naar/bibliotheek(en)/
...
INFORMATIE OPTIES:
-h|-hulp
Druk deze hulp af.
-i|-info
Volledige informatie afdrukken.
-v|-versie
Informatie over de afdrukversie.
-dumpversie
Print de toolversie (1.99.14) en doe verder niets.
ALGEMEEN OPTIES:
-l|-lib|-bibliotheek NAAM
Bibliotheeknaam (zonder versie).
-d1|-oud|-o PATH
Descriptor van de 1e (oude) bibliotheekversie. Het kan een van de volgende zijn:
1. XML-descriptor (VERSION.xml-bestand):
1.0
/pad1/naar/koptekst(en)/ /pad2/naar/koptekst(en)/
...
/pad1/naar/bibliotheek(en)/ /pad2/naar/bibliotheek(en)/
...
...
2. ABI-dump gegenereerd door: -dumpen optie 3. Directory met headers en/of shared
bibliotheken 4. Single header-bestand
Als u 2-4 descriptortypes gebruikt, moet u versienummers opgeven
Met -v1 en -v2 opties ook.
Zie voor meer informatie:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-nieuw|-n PAD
Descriptor van de 2e (nieuwe) bibliotheekversie.
-dumpen|-dump-abi PAD
Maak een bibliotheek-ABI-dump voor de invoer-XML-descriptor. Je kunt het overal overzetten
en geef door in plaats van de descriptor. Het kan ook worden gebruikt voor het debuggen van de tool.
Ondersteunde versies van ABI-dump: 2.0<=V<=3.2
EXTRA OPTIES:
App|-toepassing PATH
Met deze optie kan men de applicatie specificeren waarop moet worden gecontroleerd
overdraagbaarheid naar de nieuwe bibliotheekversie.
-statische-libs
Controleer statische bibliotheken in plaats van de gedeelde. De gedeelte van de
XML-descriptor moet verwijzen naar de locatie van statische bibliotheken.
-gcc-pad PATH
Pad naar de cross-GCC-compiler die moet worden gebruikt in plaats van de gebruikelijke (host) GCC.
-gcc-voorvoegsel VOORVOEGSEL
Voorvoegsel van de GCC-toolchain.
-gcc-opties OPT
Extra compiler-opties.
-sysroot DIR
Geef de alternatieve hoofdmap op. De tool zoekt naar include-paden in
de mappen DIR/usr/include en DIR/usr/lib.
-v1|-versie1 NUM
Specificeer de 1e bibliotheekversie buiten de descriptor. Deze optie is nodig als u
hebben de voorkeur gegeven aan een alternatief type descriptor (zie -d1 keuze).
In het algemeen moet u het specificeren in de XML-descriptor:
VERSIE
-v2|-versie2 NUM
Specificeer de 2e bibliotheekversie buiten de descriptor.
-v num NUM
Geef de bibliotheekversie op in de gegenereerde ABI-dump. De gedeelte van de
input XML-descriptor wordt in dit geval overschreven.
-s|-streng
Behandel alle compatibiliteitswaarschuwingen als problemen. Voeg een aantal "Lage" ernst toe
problemen met de retourwaarde van het gereedschap.
-alleen-headers
Controleer header-bestanden zonder gedeelde bibliotheken. Het is gemakkelijk te gebruiken, maar kan een
compatibiliteitsrapport van lage kwaliteit met valse positieven en zonder detectie van
toegevoegde/verwijderde symbolen.
Als alternatief kunt u het woord "geen" schrijven naar de sectie in de
XML-descriptor:
geen
-show-retval
Toon het retourtype van het symbool in het rapport.
-symbolen-lijst PATH
Met deze optie kan men een bestand specificeren met een lijst van symbolen (verminkte namen in
C++) die moet worden gecontroleerd. Andere symbolen worden niet gecontroleerd.
-types-lijst PATH
Met deze optie kan men een bestand specificeren met een lijst van typen die moeten worden
gecontroleerd. Andere typen worden niet gecontroleerd.
-skip-symbolen PATH
De lijst met symbolen die niet moeten worden gecontroleerd.
-types overslaan PATH
De lijst met typen die niet moeten worden gecontroleerd.
-headers-lijst PATH
Het bestand met een lijst met headers, die moet worden gecontroleerd/gedumpt.
-kopteksten overslaan PATH
Het bestand met de lijst met header-bestanden, dat moet niet worden aangevinkt.
-koptekst NAAM
Controleer/Dump alleen ABI van deze header.
-gebruik-dumps
Maak dumps voor twee versies van een bibliotheek en vergelijk dumps. Dit zou moeten toenemen
de prestaties van de tool en het gebruik van het systeemgeheugen verminderen.
-nostdinc
Zoek niet in de GCC-standaardsysteemmappen naar headerbestanden.
-dump-systeem NAAM -sysroot DIR
Vind alle gedeelde bibliotheken en header-bestanden in de DIR-directory, maak XML
descriptors en maak ABI-dumps voor elke bibliotheek. De resultaatset van ABI-dumps kan zijn:
vergeleken (--cmp-systemen) met de andere gemaakt voor een andere versie van het besturingssysteem
systeem om ze op compatibiliteit te controleren. Vergeet niet te specificeren
-cross-gcc optie als uw doelsysteem een specifieke versie van GCC vereist
compiler (anders dan de host-GCC). De systeem-ABI-dump wordt gegenereerd om:
sys_dumps/NAME/ARCH
-dump-systeem BESCHRIJVING.xml
Hetzelfde als de vorige optie, maar neemt een XML-descriptor van het doelsysteem als:
invoer, waar u het moet beschrijven:
/* Primaire secties */
/* Naam van het systeem */
/* De lijst met paden naar header-bestanden en/of
mappen met header-bestanden, één per regel */
/* De lijst met paden naar gedeelde bibliotheken en/of
mappen met gedeelde bibliotheken, één per regel */
/* Optionele secties */
/* Lijst met te doorzoeken mappen
voor het automatisch genereren van header-bestanden, inclusief paden, één per regel */
/* Lijst met te doorzoeken mappen
voor gedeelde bibliotheken om afhankelijkheden op te lossen, één per regel */
/* Lijst met mappen met gebruikte tools
voor analyse (GCC toolchain), één per regel */
/* GCC-toolchain-voorvoegsel.
Voorbeelden:
arm-linux-gnueabi arm-none-symbianelf */
/* Extra GCC-opties, één per regel */
-sysinfo DIR
Deze optie moet worden gebruikt met: -dump-systeem optie om ABI van operating te dumpen
systemen en configureer het stortproces. Een voorbeeld vind je in het pakket:
modules/doelen/{unix, symbian, windows}
-cmp-systemen -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Vergelijk twee systeem-ABI-dumps. Maak compatibiliteitsrapporten voor elke bibliotheek en de
gemeenschappelijk HTML-rapport inclusief de samenvatting van testresultaten voor alle gecontroleerde bibliotheken.
Er wordt een rapport gegenereerd naar:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-lijst PATH
Het bestand met een lijst met bibliotheken, dat moet worden gedumpt door de -dump-systeem optie
of moet worden gecontroleerd door de -cmp-systemen optie.
-ext|-verlengd
Als uw bibliotheek A zou moeten worden gebruikt door andere bibliotheek B en u wilt de controle over
de ABI van B, dan moet u deze optie inschakelen. De tool controleert op wijzigingen
in alle gegevenstypen, zelfs als ze door geen enkele functie in bibliotheek A worden gebruikt
datatypes maken geen deel uit van de A-bibliotheek ABI, maar kunnen wel deel uitmaken van de ABI van de B
bibliotheek.
Het korte schema is:
app C (gebroken) -> lib B (gebroken ABI) -> lib A (stabiele ABI)
-q|-stil
Print alle berichten naar het bestand in plaats van stdout en stderr. Standaard pad (kan zijn
veranderd door -log-pad keuze):
logs/run.log
-standaard
Print analyseresultaten (compatibiliteitsrapporten en ABI-dumps) naar stdout in plaats van
het maken van een bestand. Dit zou het doorleiden van gegevens naar andere programma's mogelijk maken.
-rapport-formaat FMT
Wijzig het formaat van het compatibiliteitsrapport. formaten:
htm - HTML-indeling (standaard) xml - XML-indeling
-dump-formaat FMT
Wijzig het formaat van de ABI-dump. formaten:
perl - Data::Dumper-indeling (standaard) xml - XML-indeling
-xml
Alias voor: --rapport-formaat=xml or --dump-formaat=xml
-lang TAAL
Stel bibliotheektaal in (C of C++). U kunt deze optie gebruiken als de tool dat niet kan:
automatisch een taal detecteren. Deze optie kan handig zijn voor het controleren van C-library headers
(--lang=C) in --alleen kopteksten or --verlengd modi.
-boog BOOG
Stel bibliotheekarchitectuur in (x86, x86_64, ia64, arm, ppc32, ppc64, s390, enz.). De
optie is handig als de tool de juiste architectuur van de invoer niet kan detecteren
voorwerpen.
-binair|-bin|-abi
Toon alleen "Binaire" compatibiliteitsproblemen. Rapport genereren naar:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-source|-src|-api
Alleen compatibiliteitsproblemen met "Bron" weergeven. Rapport genereren naar:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-limiet-beïnvloed LIMIT
Het maximum aantal getroffen symbolen vermeld onder de beschrijving van de gewijzigde
typ het rapport in.
ANDERE OPTIES:
-test
Voer interne tests uit. Maak twee binair incompatibele versies van een voorbeeldbibliotheek en
voer het hulpprogramma uit om ze op compatibiliteit te controleren. Met deze optie kan men controleren of:
de tool werkt correct in de huidige omgeving.
-test-dump
Test de mogelijkheid om ABI-dumps te maken, lezen en vergelijken.
-debuggen
Debug modus. Print debug-informatie op het scherm. Tussenliggende analysestadia opslaan
in de debug-map:
foutopsporing/LIB_NAME/VERSION/
Overweeg ook het gebruik van --dumpen optie voor het debuggen van de tool.
-cpp-compatibel
Als uw headerbestanden zijn geschreven in C-taal en kunnen worden gecompileerd door de G++
compiler (dwz gebruik geen C++-sleutelwoorden), dan kunt u de tool hierover vertellen en
de analyse versnellen.
-cpp-incompatibel
Stel deze optie in als C-headerbestanden voor invoer C++-trefwoorden gebruiken.
-p|-parameter PAD
Pad naar bestand met de functieparameternamen. Het kan worden gebruikt voor het verbeteren van het rapport
bekijken of de headerbestanden van de bibliotheek geen parameternamen hebben. Bestandsformaat:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relatie PATH
Vervang {RELPATH} macro's door PATH in de XML-descriptor die wordt gebruikt voor het dumpen van de bibliotheek
ABI (zie -dumpen keuze).
-relpad1 PATH
Vervang {RELPATH} macro's door PATH in de 1e XML-descriptor (-d1).
-relpad2 PATH
Vervang {RELPATH} macro's door PATH in de 2e XML-descriptor (-d2).
-dump-pad PATH
Geef een *.abi.tar.gz- of *.abi-bestandspad op waar een ABI-dump moet worden gegenereerd. Standaard:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-soort
Schakel het sorteren van gegevens in ABI-dumps in.
-rapport-pad PATH
Pad naar compatibiliteitsrapport. Standaard:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-rapport-pad PATH
Pad naar compatibiliteitsrapport "Binair". Standaard:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-rapport-pad PATH
Pad naar compatibiliteitsrapport "Bron". Standaard:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-log-pad PATH
Logpad voor alle berichten. Standaard:
logs/LIB_NAME/VERSION/log.txt
-log1-pad PATH
Logpad voor de eerste versie van een bibliotheek. Standaard:
logs/LIB_NAME/V1/log.txt
-log2-pad PATH
Logpad voor de 2e versie van een bibliotheek. Standaard:
logs/LIB_NAME/V2/log.txt
-logging-modus MODE
Logboekmodus wijzigen. Modi:
w - oude logboeken overschrijven (standaard) a - oude logboeken toevoegen n - geen logboeken schrijven
-lijst-beïnvloed
Genereer een bestand met de lijst met incompatibele symbolen naast de HTML-compatibiliteit
verslag doen van. Gebruik de opdracht 'c++filt @file' van GNU binutils om C++-symbolen in . te ontwarren
het gegenereerde bestand. Standaard namen:
abi_affected.txt src_affected.txt
-onderdeel NAAM
De componentnaam in de titel en samenvatting van het HTML-rapport. Standaard:
bibliotheek
-titel NAAM
Wijzig de bibliotheeknaam in de rapporttitel in NAME. Standaard wordt weergegeven a
naam opgegeven door -l optie.
-extra info DIR
Dump extra info naar DIR.
-extra dump
Maak een uitgebreide ABI-dump met alle symbolen van de vertaaleenheid.
-dwingen
Probeer deze optie te gebruiken als de tool niet werkt.
-tolerantie NIVEAU
Pas een set heuristieken toe om invoerheaderbestanden met succes te compileren. Jij kan
schakel verschillende tolerantieniveaus in door ze samen te voegen tot één string (bijv. 13, 124,
enzovoort.). Niveaus:
1 - niet-Linux-headers overslaan (bijv. win32_*.h, etc.) 2 - interne headers overslaan (bijv.
*_p.h, impl/*.h, etc.) 3 - sla headers over die niet-Linux-headers bevatten 4 - sla over
headers opgenomen door anderen
-verdraagzaam
Hoogste tolerantieniveau inschakelen [1234].
-controleren
Controleer de volledigheid van de ABI-dump.
-snel
Snelle analyse. Schakel de controle van sommige sjablooninstanties uit.
-skip-interne-symbolen PATROON
Vink geen symbolen aan die overeenkomen met het patroon.
-sla-interne-types over PATROON
Controleer geen typen die overeenkomen met het patroon.
VERSLAG DOEN VAN:
Compatibiliteitsrapport wordt gegenereerd om:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Logboek wordt gegenereerd om:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT CODES:
0 - Compatibel. Het hulpprogramma is uitgevoerd zonder fouten. niet-nul - Incompatibel of
het hulpprogramma is uitgevoerd met fouten.
MEER INFORMATIE:
http://lvc.github.io/abi-compliance-checker/
Gebruik abi-compliance-checker online met onworks.net-services