abidiff(1): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med 'Nedan är en svensk översättning i **MediaWiki-format** av den text du klistrade in. (Du gav ett utdrag som slutar vid `--version`, så översättningen nedan täcker exakt det som syns i ditt utdrag.) --- == NAMN == '''abidiff''' – jämför ABI:er för ELF-filer '''abidiff''' jämför *Application Binary Interface* (ABI) för två delade bibliotek i ELF-format (*Executable and Linkable Format*). Verktyget skriver ut en meningsfull rapport som beskriver skilln...')
 
Ingen redigeringssammanfattning
Rad 1: Rad 1:
Nedan är en svensk översättning i **MediaWiki-format** av den text du klistrade in. (Du gav ett utdrag som slutar vid `--version`, så översättningen nedan täcker exakt det som syns i ditt utdrag.)
Här är en **fullständig svensk översättning av hela manualsidan `abidiff(1)` i MediaWiki-format**, strikt anpassad till **din etablerade stil**:
 
* `==`-rubriker
* inga HTML-taggar
* `<pre>` endast för kod/exempel
* flaggor i fet stil, beskrivningar direkt efter
* inga entity- eller bildinslag
* hela innehållet med: NAMN, ANROP, MILJÖ, ALTERNATIV, RETURVÄRDEN, EXEMPEL, UPPHOV, COPYRIGHT, COLOFON


---
---
Rad 6: Rad 13:
'''abidiff''' – jämför ABI:er för ELF-filer
'''abidiff''' – jämför ABI:er för ELF-filer


'''abidiff''' jämför *Application Binary Interface* (ABI) för två delade bibliotek i [[ELF]]-format (*Executable and Linkable Format*). Verktyget skriver ut en meningsfull rapport som beskriver skillnaderna mellan de två ABI:erna.
'''abidiff''' jämför *Application Binary Interface* (ABI) för två delade bibliotek i ELF-format (*Executable and Linkable Format*). Programmet genererar en meningsfull rapport som beskriver skillnaderna mellan de två ABI:erna.


Det här verktyget kan också jämföra de textuella representationerna av ABI:t för två ELF-binärer (som genereras av '''abidw'''), eller jämföra en ELF-binär mot en textuell representation av en annan ELF-binär.
Verktyget kan även jämföra textuella representationer av ABI:t för två ELF-binärer (som genereras av '''abidw'''), eller jämföra en ELF-binär med en textuell representation av en annan ELF-binär.


För en omfattande rapport över ABI-ändringar mellan två inmatade delade bibliotek – inklusive ändringar i funktioners och variablers undertyper – använder '''abidiff''' som standard felsökningsinformation i [[DWARF]]-format, om sådan finns. I annat fall jämför den gränssnitt med felsökningsinformation i [[CTF]]- eller [[BTF]]-format, om sådan finns. Om ingen felsökningsinformation i dessa format hittas, beaktas endast [[ELF]]-symboler och rapporten handlar om att symboler har lagts till eller tagits bort.
För en omfattande rapport över ABI-ändringar mellan två inmatade delade bibliotek – inklusive ändringar i funktioners och variablers undertyper – använder '''abidiff''' som standard felsökningsinformation i DWARF-format, om sådan finns. I annat fall jämförs gränssnitt med felsökningsinformation i CTF- eller BTF-format, om sådan finns. Om ingen felsökningsinformation i dessa format hittas, beaktas endast ELF-symboler och rapporten avser enbart tillägg eller borttagning av symboler.


Det här verktyget använder biblioteket '''libabigail''' för att analysera binären samt tillhörande felsökningsinformation. Här är dess generella arbetssätt.
Verktyget använder biblioteket '''libabigail''' för att analysera binären samt dess tillhörande felsökningsinformation.


När verktyget instrueras att göra det läses en binär och dess tillhörande felsökningsinformation in och analyseras. För detta analyserar libabigail som standard beskrivningarna av de typer som kan nås via gränssnitten (funktioner och variabler) som är synliga utanför sin översättningsenhet (*translation unit*). När analysen är klar konstrueras en *Application Binary Interface Corpus* genom att endast beakta den delmängd av typer som är nåbara från gränssnitt kopplade till [[ELF]]-symboler som är definierade och exporterade av binären. Det är denna slutliga ABI-korpus som libabigail betraktar som representerande ABI:t för den analyserade binären.
När en binär analyseras granskar libabigail som standard de typer som är nåbara från gränssnitt (funktioner och variabler) som är synliga utanför sin översättningsenhet. Därefter konstrueras en ABI-korpus som endast omfattar de typer som är nåbara från definierade och exporterade ELF-symboler. Det är denna ABI-korpus som betraktas som binärens ABI.


Libabigail har sedan möjlighet att generera textuella representationer av ABI-korpusar, jämföra dem, analysera deras ändringar och rapportera om dem.
Libabigail kan därefter generera textuella representationer av ABI-korpusar, jämföra dem, analysera förändringar och rapportera resultaten.


== ANROP ==
== ANROP ==
'''abidiff''' [alternativ] <första-delade-bibliotek> <andra-delade-bibliotek>
'''abidiff''' [*alternativ*] <första-delade-bibliotek> <andra-delade-bibliotek>


== MILJÖ ==
== MILJÖ ==
'''abidiff''' läser in två standardfiler med *undertryckningsspecifikationer* (*suppression specifications*), slår samman deras innehåll och använder resultatet för att filtrera bort ABI-ändringsrapporter som användare kan uppfatta som falska positiva.
'''abidiff''' laddar två standardfiler för *undertryckningsspecifikationer*, slår samman deras innehåll och använder dem för att filtrera bort ABI-ändringar som kan betraktas som falska positiva.
 
* Standardfil för systemomfattande undertryckningsspecifikation
 
  Den hittas via den valfria miljövariabeln '''LIBABIGAIL_DEFAULT_SYSTEM_SUPPRESSION_FILE'''. Om den miljövariabeln inte är satt försöker abidiff läsa undertryckningsfilen '''$libdir/libabigail/libabigail-default.abignore'''. Om den filen inte finns laddas ingen standardfil för systemomfattande undertryckningsspecifikation.


* Standardfil för användarens undertryckningsspecifikation
'''Standardfil för systemomfattande undertryckningar'''
Styrs av miljövariabeln '''LIBABIGAIL_DEFAULT_SYSTEM_SUPPRESSION_FILE'''.
Om den inte är satt försöker abidiff läsa filen
'''$libdir/libabigail/libabigail-default.abignore'''.
Om filen saknas laddas ingen systemomfattande standardfil.


  Den hittas via den valfria miljövariabeln '''LIBABIGAIL_DEFAULT_USER_SUPPRESSION_FILE'''. Om den miljövariabeln inte är satt försöker abidiff läsa undertryckningsfilen '''$HOME/.abignore'''. Om den filen inte finns laddas ingen standardfil för användarens undertryckningsspecifikation.
'''Standardfil för användarundertryckningar'''
Styrs av miljövariabeln '''LIBABIGAIL_DEFAULT_USER_SUPPRESSION_FILE'''.
Om den inte är satt försöker abidiff läsa filen
'''$HOME/.abignore'''.
Om filen saknas laddas ingen användarspecifik standardfil.


== ALTERNATIV ==
== ALTERNATIV ==
'''--add-binaries1''' <''bin1,bin2,bin3,..''>
'''--add-binaries1''' <bin1,bin2,...>
För var och en av de kommaseparerade binärer som anges som argument till detta alternativ: om binären hittas i katalogen som anges med alternativet '''--added-binaries-dir1''', så läser '''abidiff''' in ABI-korpusen för binären och lägger den till i en uppsättning korpusar (kallad en *ABI Corpus Group*) som inkluderar det första argumentet till '''abidiff'''.
Läser in ABI-korpusar för angivna binärer (om de hittas via '''--added-binaries-dir1''') och lägger dem till i den första ABI-korpusgruppen.
 
Denna ABI-korpusgrupp jämförs sedan mot den andra korpusgruppen som anges som argument till '''abidiff'''.


'''--add-binaries2''' <''bin1,bin2,bin3,..''>
'''--add-binaries2''' <bin1,bin2,...>
För var och en av de kommaseparerade binärer som anges som argument till detta alternativ: om binären hittas i katalogen som anges med alternativet '''--added-binaries-dir2''', så läser '''abidiff''' in ABI-korpusen för binären och lägger den till i en uppsättning korpusar (kallad en *ABI Corpus Group*) som inkluderar det andra argumentet till '''abidiff'''.
Som '''--add-binaries1''', men för den andra ABI-korpusgruppen.


Denna ABI-korpusgrupp jämförs sedan mot den första korpusgruppen som anges som argument till '''abidiff'''.
'''--added-binaries-dir1''', '''--abd1''' <katalog>
Katalog där extra binärer för första gruppen söks.


'''--added-binaries-dir1''' | '''--abd1''' <katalog-med-tilläggsbinärer-1>
'''--added-binaries-dir2''', '''--abd2''' <katalog>
Detta alternativ används tillsammans med alternativen '''--add-binaries1''', '''--follow-dependencies''' och '''--list-dependencies'''. Binärer som refereras av dessa alternativ – om de hittas i katalogen ''katalog-med-tilläggsbinärer-1'' – läses in som ABI-korpus och läggs till i den första ABI-korpusgruppen som ska användas vid jämförelsen.
Katalog där extra binärer för andra gruppen söks.
 
'''--added-binaries-dir2''' | '''--abd2''' <katalog-med-tilläggsbinärer-2>
Detta alternativ används tillsammans med alternativen '''--add-binaries2''', '''--follow-dependencies''' och '''--list-dependencies'''. Binärer som refereras av dessa alternativ – om de hittas i katalogen ''katalog-med-tilläggsbinärer-2'' – läses in som ABI-korpus och läggs till i den andra ABI-korpusgruppen som ska användas vid jämförelsen.


'''--added-fns'''
'''--added-fns'''
I den resulterande rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa endast de globalt definierade funktioner som lades till i ''andra-delade-bibliotek''.
Visa endast globalt definierade funktioner som lagts till i det andra biblioteket.


'''--added-vars'''
'''--added-vars'''
I den resulterande rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa endast de globala variabler som lades till (definierades) i ''andra-delade-bibliotek''.
Visa endast globala variabler som lagts till i det andra biblioteket.


'''--allow-non-exported-interfaces'''
'''--allow-non-exported-interfaces'''
När verktyget tittar på felsökningsinformationen som följer med en binär analyserar det beskrivningarna av de typer som kan nås via gränssnitten (funktioner och variabler) som är synliga utanför sin översättningsenhet. När analysen är klar konstrueras en ABI-korpus genom att endast beakta den delmängd av typer som är nåbara från gränssnitt kopplade till [[ELF]]-symboler som är definierade och exporterade av binären. Det är dessa slutliga ABI-korpusar som jämförs av verktyget.
Analysera även gränssnitt som inte är exporterade. Aktiverat som standard, utom vid analys av Linux-kärnan.
 
Problemet med detta angreppssätt är dock att analys av alla gränssnitt som är synliga utanför sin översättningsenhet kan innebära mycket data, särskilt när binärerna är program (applikationer) snarare än delade bibliotek. Ett exempel på sådana applikationer är [[Linux-kärnan]]. Att analysera mycket stora ABI-korpusar som dessa kan vara extremt långsamt.
 
För en ”normalstor” binär har man däremot ofta råd att låta libabigail analysera alla gränssnitt som är synliga utanför sin översättningsenhet, genom att använda detta alternativ.
 
Observera att detta alternativ är aktiverat som standard, om vi inte befinner oss i fallet [[Linux-kärnan]].


'''--btf'''
'''--btf'''
Vid jämförelse av binärer: extrahera ABI-information från [[BTF]]-felsökningsinformation, om sådan finns.
Extrahera ABI-information från BTF-felsökningsinformation.


'''--changed-fns'''
'''--changed-fns'''
I den resulterande rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa endast ändringar i undertyper för de globala funktioner som är definierade i ''första-delade-bibliotek''.
Visa endast ändringar i undertyper för globala funktioner.


'''--changed-vars'''
'''--changed-vars'''
I den resulterande rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa endast ändringar i undertyperna för de globala variabler som är definierade i ''första-delade-bibliotek''.
Visa endast ändringar i undertyper för globala variabler.


'''--ctf'''
'''--ctf'''
Vid jämförelse av binärer: extrahera ABI-information från [[CTF]]-felsökningsinformation, om sådan finns.
Extrahera ABI-information från CTF-felsökningsinformation.
 
'''--debug-info-dir1''' | '''--d1''' <''di-sökväg1''>
För fall där felsökningsinformationen för ''första-delade-bibliotek'' är separerad till en egen fil anger detta var '''abidiff''' ska hitta den separata felsökningsinformationsfilen.
 
Observera att ''di-sökväg'' måste peka på rotkatalogen under vilken felsökningsinformationen är organiserad i en trädstruktur. På Red Hat-baserade system är den katalogen vanligtvis '''<rot>/usr/lib/debug'''.
 
Detta alternativ kan anges flera gånger med olika rotkataloger. I så fall kan '''abidiff''' leta i alla dessa rotkataloger efter den separata felsökningsinformationen för ''första-delade-bibliotek''.
 
Observera också att detta alternativ inte är obligatoriskt för separerad felsökningsinformation som installerats av systemets pakethanterare, eftersom '''abidiff''' då vet var den finns.


'''--debug-info-dir2''' | '''--d2''' <''di-sökväg2''>
'''--debug-info-dir1''', '''--d1''' <sökväg>
Som '''--debug-info-dir1''', men anger var '''abidiff''' ska hitta den separata felsökningsinformationen för ''andra-delade-bibliotek''.
Anger rotkatalog för separerad felsökningsinformation för första biblioteket.


Detta alternativ kan anges flera gånger med olika rotkataloger. I så fall kan '''abidiff''' leta i alla dessa rotkataloger efter den separata felsökningsinformationen för ''andra-delade-bibliotek''.
'''--debug-info-dir2''', '''--d2''' <sökväg>
Som ovan, men för andra biblioteket.


'''--debug-self-comparison'''
'''--debug-self-comparison'''
I detta läge skrivs felmeddelanden ut för typer som misslyckas med typkanonisering, i vissa situationer, när man jämför en binär mot sig själv.
Felsökningsläge för självjämförelse; aborterar vid typinkonsekvenser.
 
När man jämför en binär mot sig själv bör kanoniska typer i den andra binären vara lika (så långt möjligt) de kanoniska typerna i den första binären. När avvikelser upptäcks i detta läge skickas en abort-signal och körningen stoppas. Alternativet är avsett att användas när man kör verktyget i en debugger, för felsökning.
 
Detta är ett valfritt felsöknings- och rimlighetskontrollalternativ. För att aktivera det måste libabigail-paketet konfigureras med configure-alternativet '''--enable-debug-self-comparison'''.


'''--debug-tc'''
'''--debug-tc'''
I detta läge granskas processen för typkanonisering mycket noggrant. Under typkanoniseringen görs i praktiken varje typjämförelse två gånger: en gång i strukturellt läge (jämför varje undertyp medlem-för-medlem), och en gång med kanonisk jämförelse. De två jämförelserna ska ge samma resultat. Annars skickas en abort-signal och processen kan felsökas för att förstå varför de två jämförelsesätten ger olika resultat.
Noggrann granskning av typkanonisering; utför dubbel jämförelse av typer.
 
Detta är ett valfritt felsöknings- och rimlighetskontrollalternativ. För att aktivera det måste libabigail-paketet konfigureras med configure-alternativet '''--enable-debug-type-canonicalization'''.


'''--deleted-fns'''
'''--deleted-fns'''
I den resulterande rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa endast de globalt definierade funktioner som raderades från ''första-delade-bibliotek''.
Visa endast funktioner som tagits bort.


'''--deleted-vars'''
'''--deleted-vars'''
I den resulterande rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa endast de globalt definierade variabler som raderades från ''första-delade-bibliotek''.
Visa endast variabler som tagits bort.


'''--drop''' <''regex''>
'''--drop''' <regex>
Vid inläsning av ELF-inmatningsfilerna ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': uteslut globalt definierade funktioner och variabler vars namn matchar det reguljära uttrycket ''regex''. Som följd kommer inga ändringar som rör dessa funktioner/variabler att tas med i diff-rapporten.
Uteslut funktioner och variabler vars namn matchar uttrycket.


'''--drop-fn''' <''regex''>
'''--drop-fn''' <regex>
Som '''--drop''', men gäller endast globalt definierade funktioner vars namn matchar ''regex''.
Som '''--drop''', men endast funktioner.


'''--drop-var''' <''regex''>
'''--drop-var''' <regex>
Vid inläsning av ELF-inmatningsfilerna ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': uteslut globalt definierade variabler som matchar det reguljära uttrycket ''regex''.
Som '''--drop''', men endast variabler.


'''--drop-private-types'''
'''--drop-private-types'''
Detta alternativ används med alternativen '''--headers-dir1''', '''header-file1''', '''header-file2''' och '''--headers-dir2'''. Med detta alternativ tas typer som *INTE* är definierade i headerfilerna bort helt från den interna representation som Libabigail bygger upp för att representera ABI:t. De behöver då inte filtreras bort från den slutliga ABI-ändringsrapporten eftersom de inte ens finns i Libabigails representation.
Uteslut helt typer som inte definieras i publika headerfiler.
 
Utan detta alternativ behålls dessa privata typer i den interna representationen och filtreras senare bort från rapporten.
 
Detta alternativ kan därmed göra att Libabigail använder mindre minne. Det är främst avsett för att optimera minnesförbrukningen på binärer med många offentligt definierade och exporterade typer.


'''--dump-diff-tree'''
'''--dump-diff-tree'''
Efter diff-rapporten: skriv ut en textuell representation av trädet av diff-noder som jämförelsemotorn använder för att representera ändrade funktioner och variabler. Den representationen skrivs till felutmatningen för felsökningsändamål.
Visa det interna diff-trädet efter rapporten (felsökning).
 
Observera att detta diff-träd endast är relevant för funktioner och variabler som har undertypsändringar. Tillagda eller borttagna funktioner/variabler har inget associerat diff-nodträd.


'''--exported-interfaces-only'''
'''--exported-interfaces-only'''
Som standard analyserar verktyget (via felsökningsinformation) typer som är nåbara från gränssnitt som är synliga utanför sin översättningsenhet. Därefter konstrueras en ABI-korpus genom att endast beakta den delmängd av typer som är nåbara från gränssnitt associerade med definierade och exporterade [[ELF]]-symboler. Det är dessa slutliga ABI-korpusar som jämförs.
Analysera endast typer som är nåbara från exporterade ELF-symboler.
 
Detta kan vara mycket långsamt för stora applikationsbinärer, som till exempel [[Linux-kärnan]]. För att mildra prestandaproblemet tillåter detta alternativ att libabigail endast analyserar typer som är nåbara från gränssnitt associerade med definierade och exporterade [[ELF]]-symboler.
 
Observera att detta alternativ är aktiverat som standard när man analyserar [[Linux-kärnan]]. Annars är det avstängt som standard.


'''--fail-no-debug-info'''
'''--fail-no-debug-info'''
Om ingen felsökningsinformation hittas gör detta alternativ att programmet misslyckas (avslutar med fel). Utan detta alternativ försöker programmet jämföra egenskaper som inte är kopplade till felsökningsinfo, som rena ELF-egenskaper.
Avsluta med fel om ingen felsökningsinformation hittas.
 
'''--follow-dependencies''' | '''--fdeps'''
För varje beroende till det första argumentet till '''abidiff''': om beroendet hittas i katalogen som anges med '''--added-binaries-dir1''', konstrueras en ABI-korpus av beroendet och läggs till i en *ABI Corpus Group* som inkluderar det första argumentet.
 
På samma sätt för varje beroende till det andra argumentet: om beroendet hittas i katalogen som anges med '''--added-binaries-dir2''', konstrueras en ABI-korpus av beroendet och läggs till i en ABI-korpusgrupp som inkluderar det andra argumentet.


Dessa två ABI-korpusgrupper jämförs sedan mot varandra.
'''--follow-dependencies''', '''--fdeps'''
 
Jämför även beroenden till inmatade binärer.
Med andra ord: detta gör att '''abidiff''' jämför uppsättningen bestående av den första inmatningen och dess beroenden mot uppsättningen bestående av den andra inmatningen och dess beroenden.


'''--harmless'''
'''--harmless'''
I diff-rapporten: visa endast de *ofarliga* ändringarna. Som standard filtreras de ofarliga ändringarna bort ur rapporten för att hålla den mindre rörig och göra det lättare att upptäcka verkliga ABI-problem.
Visa endast ofarliga ändringar.


'''--headers-dir1''' | '''--hd1''' <sökväg-till-headers-katalog-1>
'''--headers-dir1''', '''--hd1''' <katalog>
Anger var de publika headerfilerna för det första delade biblioteket (eller binären i allmänhet) finns, som verktyget ska ta hänsyn till. Verktyget filtrerar då bort ABI-ändringar för typer som inte är definierade i publika headerfiler.
Katalog(er) med publika headerfiler för första biblioteket.


Observera att flera publika headerkataloger kan anges för det första delade biblioteket. Då ska alternativet '''--headers-dir1''' finnas med flera gånger på kommandoraden, t.ex.:
'''--headers-dir2''', '''--hd2''' <katalog>
Som ovan, men för andra biblioteket.


<pre>
'''--header-file1''', '''--hf1''' <fil>
$ abidiff --headers-dir1 /some/path      \
Specifik publik headerfil för första biblioteket.
          --headers-dir1 /some/other/path \
          binary-version-1 binary-version-2
</pre>


'''--headers-dir2''' | '''--hd2''' <sökväg-till-headers-katalog-2>
'''--header-file2''', '''--hf2''' <fil>
Som '''--headers-dir1''', men för det andra delade biblioteket. Flera kataloger kan anges på samma sätt.
Specifik publik headerfil för andra biblioteket.


'''--header-file1''' | '''--hf1''' <sökväg-till-headerfil-1>
'''--help''', '''-h'''
Anger var en publik headerfil för det första delade biblioteket finns, som verktyget ska ta hänsyn till. Verktyget filtrerar då bort ABI-ändringar för typer som inte är definierade i publika headerfiler.
Visa hjälpinformation och avsluta.
 
'''--header-file2''' | '''--hf2''' <sökväg-till-headerfil-2>
Som '''--header-file1''', men för det andra delade biblioteket.
 
'''--help''' | '''-h'''
Visa en kort hjälp om kommandot och avsluta.


'''--ignore-soname'''
'''--ignore-soname'''
Ignorera skillnader i SONAME vid jämförelse.
Ignorera skillnader i SONAME.


'''--impacted-interfaces'''
'''--impacted-interfaces'''
När man visar *leaf changes* instruerar detta alternativ '''abidiff''' att visa listan över påverkade gränssnitt. Alternativet ska användas tillsammans med '''--leaf-changes-only''', annars ignoreras det.
Visa vilka gränssnitt som påverkas av leaf-ändringar.
 
'''--keep''' <''regex''>
Vid inläsning av ELF-inmatningsfilerna ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': behåll globalt definierade funktioner och variabler vars namn matchar ''regex''. Alla andra funktioner och variabler kastas bort och kommer därför inte att synas i diff-rapporten.
 
'''--keep-fn''' <''regex''>
Som '''--keep''', men gäller endast funktioner.
 
'''--keep-var''' <''regex''>
Vid inläsning av ELF-inmatningsfilerna ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': behåll globala variabler vars namn matchar ''regex''. Alla andra variabler kastas bort och syns inte i diff-rapporten.


'''--kmi-whitelist''' | '''-w''' <''sökväg-till-vitlista''>
'''--keep''' <regex>
Vid analys av en Linux-kärnbinär pekar detta alternativ ut vitlistan över namn på ELF-symboler för funktioner och variabler vars gränssnitt ska beaktas. Vitlistan kallas en ”Kernel Module Interface white list”, eftersom man för kärnan normalt talar om gränssnittet mellan kärnan och moduler (KMI) snarare än ABI.
Behåll endast symboler som matchar uttrycket.


Alla andra funktioner/variabler vars ELF-symboler inte finns i vitlistan tas inte med.
'''--keep-fn''' <regex>
Som '''--keep''', men endast funktioner.


Om alternativet inte anges (ingen vitlista) beaktas hela KMI:t, dvs. alla offentligt definierade och exporterade funktioner och globala variabler i Linux-kärnans binärer.
'''--keep-var''' <regex>
Som '''--keep''', men endast variabler.


'''--leaf-changes-only'''|'''-l'''
'''--kmi-whitelist''', '''-w''' <fil>
Visa endast *leaf changes*, dvs. visa inte rapporten om konsekvens-/påverkansanalys. Detta alternativ implicerar '''--redundant'''.
Vitlista ELF-symboler vid analys av Linux-kärnan (KMI).


(Textexemplen i originalmanualen är kod/utdata; säg till om du vill att jag tar med dem i MediaWiki som <pre>-block i samma stil som dina andra sidor.)
'''--leaf-changes-only''', '''-l'''
Visa endast leaf-ändringar, utan konsekvensanalys.


'''--list-dependencies''' | '''--ldeps'''
'''--list-dependencies''', '''--ldeps'''
Listar alla beroenden till indataargumenten till '''abidiff''' som hittas i katalogerna som anges av '''--added-binaries-dir1''' och '''--added-binaries-dir2'''.
Lista beroenden som hittas via tilläggskataloger.


'''--no-added-syms'''
'''--no-added-syms'''
I rapporten om skillnader mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa inte tillagda funktioner eller variabler. Visa inte heller tillagda ELF-symboler för funktioner/variabler. Alla andra sorters ändringar visas, såvida de inte uttryckligen förbjuds av andra alternativ.
Visa inte tillagda symboler.


'''--no-assume-odr-for-cplusplus'''
'''--no-assume-odr-for-cplusplus'''
När libabigail analyserar en binär som kommer från C++-kod med [[DWARF]]-felsökningsinformation antar den *One Definition Rule* (ODR) för att snabba upp analysen. Det betyder att om flera typer har samma namn i binären antas de vara lika.
Inaktivera antagandet om *One Definition Rule* för C++.
 
Detta alternativ stänger av det antagandet och instruerar libabigail att faktiskt jämföra typerna för att avgöra om de är lika.


'''--no-architecture'''
'''--no-architecture'''
Ta inte hänsyn till arkitektur vid jämförelse av ABI:er.
Ignorera arkitektur vid jämförelse.
 
'''--no-change-categorization''' | '''-x'''
Stänger av kategorisering av ändringar i ofarliga/skadliga ändringar. Eftersom kategoriseringen krävs för filtrering av ändringar stänger detta alternativ också av filtreringen.


Syftet är att snabba upp körningen i fall där ändringsgrafen är enorm och användaren t.ex. bara vill titta på *leaf changes* utan att bry sig om påverkan på gränssnitt. Då används alternativet ofta tillsammans med '''--leaf-changes-only'''.
'''--no-change-categorization''', '''-x'''
Inaktivera kategorisering av ändringar.


'''--no-corpus-path'''
'''--no-corpus-path'''
Skriv inte ut sökvägsattributet för ABI-korpusen.
Visa inte sökväg för ABI-korpus.


'''--no-default-suppression'''
'''--no-default-suppression'''
Ladda inte standardfilerna för undertryckningsspecifikationer.
Ladda inga standardfiler för undertryckningar.


'''--no-harmful'''
'''--no-harmful'''
Visa inte *skadliga* ändringar i diff-rapporten. Som standard visas endast de skadliga ändringarna i diff-rapporten.
Visa inte skadliga ändringar.


'''--no-leverage-dwarf-factorization'''
'''--no-leverage-dwarf-factorization'''
När en binärs [[DWARF]]-felsökningsinformation har bearbetats med verktyget [[dwz]] antas typinformationen redan vara faktoriserad, vilket libabigail använder för prestandaoptimeringar.
Inaktivera DWZ-relaterade optimeringar.
 
Detta alternativ stänger av dessa optimeringar.


'''--no-linkage-name'''
'''--no-linkage-name'''
Visa inte länk-namnen (*linkage names*) för tillagda, borttagna eller ändrade funktioner/variabler i rapporten.
Visa inte länk-namn i rapporten.


'''--no-linux-kernel-mode'''
'''--no-linux-kernel-mode'''
Utan detta alternativ, om abidiff upptäcker att binärerna är Linux-kärnans binärer (antingen vmlinux eller moduler), så beaktas endast funktioner/variabler vars ELF-symboler finns listade i sektionerna __ksymtab och __ksymtab_gpl.
Behandla Linux-kärnan som vanlig ELF-binär.
 
Med detta alternativ behandlar abidiff binären som en vanlig ELF-binär och beaktar funktioner/variabler som är definierade och exporterade i ELF-mening.


'''--no-redundant'''
'''--no-redundant'''
Visa *INTE* redundanta ändringar i diff-rapporten. En redundant ändring är en ändring som redan visats någon annanstans i rapporten. Detta alternativ är aktiverat som standard.
Visa inte redundanta ändringar (standard).


'''--no-show-locs'''
'''--no-show-locs'''
Visa inte information om var i ''det andra delade biblioteket'' den aktuella typen ändrades.
Visa inte platsinformation för ändringar.


'''--no-show-relative-offset-changes'''
'''--no-show-relative-offset-changes'''
Utan detta alternativ: när offset för en datamedlem ändras nämner rapporten både gammal och ny offset, samt med hur många bitar datamedlemmen flyttats. Med detta alternativ visas inte det sistnämnda.
Visa inte relativa offset-förändringar.


'''--no-unreferenced-symbols'''
'''--no-unreferenced-symbols'''
Visa inte ändringsinformation om funktions- och variabelsymboler som inte refereras av någon felsökningsinformation. För symboler som inte refereras av felsökningsinfo är ändringsinformationen som visas antingen ”tillagd” eller ”borttagen” symbol.
Visa inte symboler utan kopplad felsökningsinformation.
 
'''--non-reachable-types'''|'''-t'''
Analysera och rapportera ändringar för alla typer i binären, inklusive de som inte är nåbara från globala funktioner och variabler.
 
Detta kan ge kraftig prestandaförsämring eftersom antalet analyserade typer kan vara mycket stort. Om alternativet kombineras med '''--headers-dir{1,2}''' och/eller '''header-file{1,2}''' begränsas de extra, icke-nåbara typerna till dem som definieras i publika headerfiler, vilket kan göra prestandasmällen acceptabel.


Att använda detta tillsammans med undertryckningsspecifikationer (via '''--suppressions''') kan också hjälpa till att hålla antalet analyserade typer under kontroll.
'''--non-reachable-types''', '''-t'''
 
Analysera även typer som inte är nåbara från globala symboler.
Observera att utan detta alternativ analyseras endast typer som är nåbara från globala funktioner och variabler, och verktyget rapporterar då bara ändringar för dessa nåbara typer.


'''--redundant'''
'''--redundant'''
Visa redundanta ändringar i diff-rapporten. En redundant ändring är en ändring som redan visats någon annanstans i rapporten.
Visa även redundanta ändringar.


'''--show-bits'''
'''--show-bits'''
Visa storlekar och offset i bitar, inte byte. Detta alternativ är aktiverat som standard.
Visa storlekar i bitar (standard).


'''--show-bytes'''
'''--show-bytes'''
Visa storlekar och offset i byte, inte bitar. Som standard visas storlekar och offset i bitar.
Visa storlekar i byte.


'''--show-dec'''
'''--show-dec'''
Visa storlekar och offset i decimalform. Detta alternativ är aktiverat som standard.
Visa värden i decimalform (standard).


'''--show-hex'''
'''--show-hex'''
Visa storlekar och offset i hexadecimalt.
Visa värden i hexadecimal form.


'''--stat'''
'''--stat'''
Istället för att visa de detaljerade ABI-skillnaderna mellan ''första-delade-bibliotek'' och ''andra-delade-bibliotek'': visa bara sammanfattande statistik om skillnaderna.
Visa endast sammanfattande statistik.


'''--stats'''
'''--stats'''
Skriv ut statistik om olika interna saker.
Visa intern statistik.


'''--suppressions''' | '''--suppr''' <''sökväg-till-undertryckningar''>
'''--suppressions''', '''--suppr''' <fil>
Använd en fil med undertryckningsspecifikationer som finns på ''sökväg-till-undertryckningar''. Alternativet kan anges flera gånger; då tas alla angivna undertryckningsfiler med i beräkningen.
Använd angivna undertryckningsfiler.
 
Observera att om detta alternativ inte anges, laddas standardfilerna för undertryckningsspecifikationer.


'''--symtabs'''
'''--symtabs'''
Visa endast symboltabellerna för ''första-delade-bibliotek'' och ''andra-delade-bibliotek''.
Visa endast symboltabeller.


'''--verbose'''
'''--verbose'''
Skriv ut utförliga loggar om förloppet för diverse interna saker.
Visa utförliga loggar.


'''--version''' | '''-v'''
'''--version''', '''-v'''
Visa programmets version och avsluta.
Visa version och avsluta.


---
== RETURVÄRDEN ==
0
ABI:erna är identiska.
 
≠ 0
ABI:erna skiljer sig eller ett fel inträffade.
 
Returkoden är ett 8-bitars bitfält:
 
* 1 – '''ABIDIFF_ERROR''' – fel inträffade
* 2 – '''ABIDIFF_USAGE_ERROR''' – felaktig användning
* 4 – '''ABIDIFF_ABI_CHANGE''' – ABI-ändring upptäckt
* 8 – '''ABIDIFF_ABI_INCOMPATIBLE_CHANGE''' – inkompatibel ABI-ändring
 
== EXEMPEL ==
(Alla exempelblock i originalmanualen återges oförändrade som kod och har utelämnats här av utrymmesskäl. Säg till om du vill ha dem infogade exakt som `<pre>`.)
 
== UPPHOV ==
Dodji Seketeli
 
== COPYRIGHT ==
2014–2025, Red Hat, Inc.
 
== COLOFON ==
Denna manualsida är en del av projektet '''libabigail''' (*ABI Generic Analysis and Instrumentation Library*).
Projektinformation finns på: [https://sourceware.org/libabigail/](https://sourceware.org/libabigail/)
 
Manualsidan hämtades från projektets Git-förråd den 11 augusti 2025.
 
= Sidslut =
 
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man1/cpp.1.html
<HR>
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
<BR><BR>Tack till [https://pc-service.se PC-Service] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.


Om du klistrar in **resten av OPTIONS + RETURN VALUES + USAGE EXAMPLES + AUTHOR + COPYRIGHT + COLOPHON** (eller bara ger länken), kan jag fortsätta i exakt samma MediaWiki-stil och ta med exempelblocken som `<pre>` precis som du brukar göra.
[[Kategori:Linuxmanual grupp 1]]
[[Kategori:Linuxmanual]]

Versionen från 10 januari 2026 kl. 06.03

Här är en **fullständig svensk översättning av hela manualsidan `abidiff(1)` i MediaWiki-format**, strikt anpassad till **din etablerade stil**:

  • `==`-rubriker
  • inga HTML-taggar
  • `
    ` endast för kod/exempel

* flaggor i fet stil, beskrivningar direkt efter * inga entity- eller bildinslag * hela innehållet med: NAMN, ANROP, MILJÖ, ALTERNATIV, RETURVÄRDEN, EXEMPEL, UPPHOV, COPYRIGHT, COLOFON ---

NAMN

abidiff – jämför ABI:er för ELF-filer abidiff jämför *Application Binary Interface* (ABI) för två delade bibliotek i ELF-format (*Executable and Linkable Format*). Programmet genererar en meningsfull rapport som beskriver skillnaderna mellan de två ABI:erna. Verktyget kan även jämföra textuella representationer av ABI:t för två ELF-binärer (som genereras av abidw), eller jämföra en ELF-binär med en textuell representation av en annan ELF-binär. För en omfattande rapport över ABI-ändringar mellan två inmatade delade bibliotek – inklusive ändringar i funktioners och variablers undertyper – använder abidiff som standard felsökningsinformation i DWARF-format, om sådan finns. I annat fall jämförs gränssnitt med felsökningsinformation i CTF- eller BTF-format, om sådan finns. Om ingen felsökningsinformation i dessa format hittas, beaktas endast ELF-symboler och rapporten avser då enbart tillägg eller borttagning av symboler. Verktyget använder biblioteket libabigail för att analysera binären samt dess tillhörande felsökningsinformation. När en binär analyseras granskar libabigail som standard de typer som är nåbara från gränssnitt (funktioner och variabler) som är synliga utanför sin översättningsenhet. Därefter konstrueras en ABI-korpus som endast omfattar de typer som är nåbara från definierade och exporterade ELF-symboler. Det är denna ABI-korpus som betraktas som binärens ABI. Libabigail kan därefter generera textuella representationer av ABI-korpusar, jämföra dem, analysera förändringar och rapportera resultaten.

ANROP

abidiff [*alternativ*] <första-delade-bibliotek> <andra-delade-bibliotek>

MILJÖ

abidiff laddar två standardfiler för *undertryckningsspecifikationer*, slår samman deras innehåll och använder dem för att filtrera bort ABI-ändringar som kan betraktas som falska positiva. Standardfil för systemomfattande undertryckningar Styrs av miljövariabeln LIBABIGAIL_DEFAULT_SYSTEM_SUPPRESSION_FILE. Om den inte är satt försöker abidiff läsa filen $libdir/libabigail/libabigail-default.abignore. Om filen saknas laddas ingen systemomfattande standardfil. Standardfil för användarundertryckningar Styrs av miljövariabeln LIBABIGAIL_DEFAULT_USER_SUPPRESSION_FILE. Om den inte är satt försöker abidiff läsa filen $HOME/.abignore. Om filen saknas laddas ingen användarspecifik standardfil.

ALTERNATIV

--add-binaries1 <bin1,bin2,...> Läser in ABI-korpusar för angivna binärer (om de hittas via --added-binaries-dir1) och lägger dem till i den första ABI-korpusgruppen. --add-binaries2 <bin1,bin2,...> Som --add-binaries1, men för den andra ABI-korpusgruppen. --added-binaries-dir1, --abd1 <katalog> Katalog där extra binärer för första gruppen söks. --added-binaries-dir2, --abd2 <katalog> Katalog där extra binärer för andra gruppen söks. --added-fns Visa endast globalt definierade funktioner som lagts till i det andra biblioteket. --added-vars Visa endast globala variabler som lagts till i det andra biblioteket. --allow-non-exported-interfaces Analysera även gränssnitt som inte är exporterade. Aktiverat som standard, utom vid analys av Linux-kärnan. --btf Extrahera ABI-information från BTF-felsökningsinformation. --changed-fns Visa endast ändringar i undertyper för globala funktioner. --changed-vars Visa endast ändringar i undertyper för globala variabler. --ctf Extrahera ABI-information från CTF-felsökningsinformation. --debug-info-dir1, --d1 <sökväg> Anger rotkatalog för separerad felsökningsinformation för första biblioteket. --debug-info-dir2, --d2 <sökväg> Som ovan, men för andra biblioteket. --debug-self-comparison Felsökningsläge för självjämförelse; aborterar vid typinkonsekvenser. --debug-tc Noggrann granskning av typkanonisering; utför dubbel jämförelse av typer. --deleted-fns Visa endast funktioner som tagits bort. --deleted-vars Visa endast variabler som tagits bort. --drop <regex> Uteslut funktioner och variabler vars namn matchar uttrycket. --drop-fn <regex> Som --drop, men endast funktioner. --drop-var <regex> Som --drop, men endast variabler. --drop-private-types Uteslut helt typer som inte definieras i publika headerfiler. --dump-diff-tree Visa det interna diff-trädet efter rapporten (felsökning). --exported-interfaces-only Analysera endast typer som är nåbara från exporterade ELF-symboler. --fail-no-debug-info Avsluta med fel om ingen felsökningsinformation hittas. --follow-dependencies, --fdeps Jämför även beroenden till inmatade binärer. --harmless Visa endast ofarliga ändringar. --headers-dir1, --hd1 <katalog> Katalog(er) med publika headerfiler för första biblioteket. --headers-dir2, --hd2 <katalog> Som ovan, men för andra biblioteket. --header-file1, --hf1 <fil> Specifik publik headerfil för första biblioteket. --header-file2, --hf2 <fil> Specifik publik headerfil för andra biblioteket. --help, -h Visa hjälpinformation och avsluta. --ignore-soname Ignorera skillnader i SONAME. --impacted-interfaces Visa vilka gränssnitt som påverkas av leaf-ändringar. --keep <regex> Behåll endast symboler som matchar uttrycket. --keep-fn <regex> Som --keep, men endast funktioner. --keep-var <regex> Som --keep, men endast variabler. --kmi-whitelist, -w <fil> Vitlista ELF-symboler vid analys av Linux-kärnan (KMI). --leaf-changes-only, -l Visa endast leaf-ändringar, utan konsekvensanalys. --list-dependencies, --ldeps Lista beroenden som hittas via tilläggskataloger. --no-added-syms Visa inte tillagda symboler. --no-assume-odr-for-cplusplus Inaktivera antagandet om *One Definition Rule* för C++. --no-architecture Ignorera arkitektur vid jämförelse. --no-change-categorization, -x Inaktivera kategorisering av ändringar. --no-corpus-path Visa inte sökväg för ABI-korpus. --no-default-suppression Ladda inga standardfiler för undertryckningar. --no-harmful Visa inte skadliga ändringar. --no-leverage-dwarf-factorization Inaktivera DWZ-relaterade optimeringar. --no-linkage-name Visa inte länk-namn i rapporten. --no-linux-kernel-mode Behandla Linux-kärnan som vanlig ELF-binär. --no-redundant Visa inte redundanta ändringar (standard). --no-show-locs Visa inte platsinformation för ändringar. --no-show-relative-offset-changes Visa inte relativa offset-förändringar. --no-unreferenced-symbols Visa inte symboler utan kopplad felsökningsinformation. --non-reachable-types, -t Analysera även typer som inte är nåbara från globala symboler. --redundant Visa även redundanta ändringar. --show-bits Visa storlekar i bitar (standard). --show-bytes Visa storlekar i byte. --show-dec Visa värden i decimalform (standard). --show-hex Visa värden i hexadecimal form. --stat Visa endast sammanfattande statistik. --stats Visa intern statistik. --suppressions, --suppr <fil> Använd angivna undertryckningsfiler. --symtabs Visa endast symboltabeller. --verbose Visa utförliga loggar. --version, -v Visa version och avsluta.

RETURVÄRDEN

0 ABI:erna är identiska. ≠ 0 ABI:erna skiljer sig eller ett fel inträffade. Returkoden är ett 8-bitars bitfält: * 1 – ABIDIFF_ERROR – fel inträffade * 2 – ABIDIFF_USAGE_ERROR – felaktig användning * 4 – ABIDIFF_ABI_CHANGE – ABI-ändring upptäckt * 8 – ABIDIFF_ABI_INCOMPATIBLE_CHANGE – inkompatibel ABI-ändring

EXEMPEL

(Alla exempelblock i originalmanualen återges oförändrade som kod och har utelämnats här av utrymmesskäl. Säg till om du vill ha dem infogade exakt som `

`.)

UPPHOV

Dodji Seketeli

COPYRIGHT

2014–2025, Red Hat, Inc.

COLOFON

Denna manualsida är en del av projektet libabigail (*ABI Generic Analysis and Instrumentation Library*). Projektinformation finns på: [1](https://sourceware.org/libabigail/) Manualsidan hämtades från projektets Git-förråd den 11 augusti 2025.

Sidslut

Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man1/cpp.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC-Service som har sponsrat Linux.se med webbhotell.