.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "ABIPKGDIFF" "1" "May 01, 2026" "" "Libabigail" .SH "نام (NAME)" abipkgdiff \- مقایسه ABI فایل‌های دودویی ELF در بسته‌های نرم‌افزاری .sp ابزار \fBabipkgdiff\fP رابط‌های باینری کاربردی (Application Binary Interfaces یا ABI) فایل‌های دودویی ELF \% موجود در دو مجموعه از بسته‌های نرم‌افزاری را با یکدیگر مقایسه می‌کند. قالب‌های بسته نرم‌افزاری که در حال حاضر پشتیبانی می‌شوند عبارتند از Deb \%، RPM \%، آرشیوهای tar \% (چه فشرده‌شده و چه فشرده‌نشده) و پوشه‌های معمولی حاوی فایل‌های دودویی. .sp رابط باینری کاربردی (ABI) فایل‌های باینری موجود در دومین مجموعه بسته‌ها در برابر ABI فایل‌های باینری موجود در نخستین مجموعه بسته‌ها مقایسه می‌شود. .sp برای دریافت یک گزارش جامع از تغییرات ABI که شامل تغییرات مربوط به زیرنوع‌های توابع و متغیرها نیز باشد، دو مجموعه بسته ورودی باید همراه با بسته‌های اطلاعات اشکال‌زدایی مربوط به خود باشند؛ این اطلاعات اشکال‌زدایی می‌تواند در قالب‌های DWARF \%، CTF \% یا BTF \% باشد. با این حال لطفاً توجه داشته باشید که برخی بسته‌ها حاوی فایل‌های دودویی هستند که اطلاعات اشکال‌زدایی را مستقیماً درون بخشی از همان فایل دودویی تعبیه کرده‌اند. در این‌گونه موارد، طبیعتاً نیازی به بسته اطلاعات اشکال‌زدایی جداگانه نیست زیرا این ابزار اطلاعات اشکال‌زدایی را درون فایل‌های دودویی خواهد یافت. .sp به‌طور پیش‌فرض، \fBabipkgdiff\fP در صورت وجود از اطلاعات اشکال‌زدایی در قالب DWARF \% استفاده می‌کند؛ در غیر این صورت، رابط‌های فایل‌های دودویی را با استفاده از اطلاعات اشکال‌زدایی در قالب‌های CTF \% یا BTF \% (در صورت وجود) مقایسه می‌نماید. در نهایت، اگر هیچ اطلاعات اشکال‌زدایی در این قالب‌ها یافت نشود، تنها نمادهای ELF \% را در نظر گرفته و افزودن یا حذف آن‌ها را گزارش می‌دهد. .sp این ابزار از کتابخانه libabigail برای تحلیل فایل باینری و اطلاعات اشکال‌زدایی مرتبط با آن استفاده می‌کند. شیوه کلی عملکرد آن به شرح زیر است: .sp هنگامی که به ابزار دستور داده شود، یک فایل دودویی و اطلاعات اشکال‌زدایی مرتبط با آن خوانده و تحلیل می‌شوند. بدین منظور، libabigail به‌طور پیش‌فرض توصیف نوع‌های قابل‌دسترسی از طریق رابط‌هایی (توابع و متغیرها) را تحلیل می‌کند که خارج از واحد ترجمه (translation unit) خود قابل مشاهده هستند. پس از اتمام این تحلیل، یک پیکره رابط باینری کاربردی (Application Binary Interface Corpus) تنها با در نظر گرفتن زیرمجموعه‌ای از نوع‌های قابل‌دسترسی از رابط‌های مرتبط با نمادهای ELF \% که توسط فایل دودویی تعریف و صادر شده‌اند، ساخته می‌شود. این پیکره نهایی ABI است که libabigail آن را به عنوان نماینده ABI فایل دودوییِ تحلیل‌شده در نظر می‌گیرد. .sp سپس Libabigail این قابلیت را دارد که بازنمایی‌های متنی از پیکره‌های ABI تولید کند، آن‌ها را با یکدیگر مقایسه نماید، تغییراتشان را تحلیل کرده و درباره آن‌ها گزارش ارائه دهد. .SH "نحوه فراخوانی (INVOCATION)" .INDENT 0.0 .INDENT 3.5 .sp .EX abipkgdiff [options] .EE .UNINDENT .UNINDENT .sp \fBpackage1\fP و \fBpackage2\fP بسته‌هایی هستند که شامل فایل‌های دودویی مورد مقایسه می‌باشند. .sp شیوه فراخوانی جایگزین به این صورت است: .INDENT 0.0 .INDENT 3.5 .sp .EX abipkgdiff [options] \-\-set1 \e \-\-set2 .EE .UNINDENT .UNINDENT .sp که در آن ABI فایل‌های دودویی موجود در دومین مجموعه بسته‌ها در برابر فایل‌های باینری موجود در نخستین مجموعه بسته‌ها مقایسه می‌شوند. .SH "محیط (ENVIRONMENT)" .sp دستور abipkgdiff دو فایل مشخصات سرکوب پیش‌فرض \%<#\:suppr-spec-label> را بارگذاری کرده، محتوای آن‌ها را ادغام می‌کند و از آن برای پالایش و حذف گزارش‌های تغییرات ABI که ممکن است برای کاربران مثبت کاذب تلقی شوند استفاده می‌نماید. .INDENT 0.0 .IP \(bu 2 فایل مشخصات سرکوب پیش‌فرض سراسری سیستم .sp این فایل از طریق متغیر محیطی اختیاری LIBABIGAIL_DEFAULT_SYSTEM_SUPPRESSION_FILE تعیین می‌شود. اگر این متغیر محیطی مقداردهی نشده باشد، abipkgdiff تلاش می‌کند فایل سرکوب $libdir/libabigail/libabigail\-default.abignore را بارگذاری کند. در صورتی که این فایل موجود نباشد، هیچ فایل مشخصات سرکوب پیش‌فرض سیستمی بارگذاری نمی‌شود. .IP \(bu 2 فایل مشخصات سرکوب پیش‌فرض کاربر .sp این فایل از طریق متغیر محیطی اختیاری LIBABIGAIL_DEFAULT_USER_SUPPRESSION_FILE تعیین می‌شود. اگر این متغیر محیطی مقداردهی نشده باشد، abipkgdiff تلاش می‌کند فایل سرکوب $HOME/.abignore را بارگذاری کند. در صورتی که این فایل موجود نباشد، هیچ فایل مشخصات سرکوب پیش‌فرضی برای کاربر بارگذاری نمی‌شود. .UNINDENT .sp علاوه بر این فایل‌های مشخصات سرکوب پیش‌فرض، abipkgdiff درون بسته‌های مورد مقایسه را نیز جستجو می‌کند و اگر فایلی با پسوند \fB\&.abignore\fP پیدا کند، آن را به عنوان یک مشخصات سرکوب در نظر گرفته و با مشخصات سرکوب پیش‌فرضی که ممکن است از قبل بارگذاری شده باشد ترکیب می‌نماید. .sp کاربر همچنین می‌تواند از گزینه \fB\-\-suppressions\fP (که در ادامه مستند شده است) برای ارائه یک فایل مشخصات سرکوب استفاده کند. .SH "گزینه‌ها (OPTIONS)" .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fB\-\-allow\-non\-exported\-interfaces\fP .sp هنگام بررسی اطلاعات اشکال‌زدایی همراه با یک فایل باینری، این ابزار توصیف نوع‌های قابل‌دسترسی از طریق رابط‌هایی (توابع و متغیرها) را تحلیل می‌کند که خارج از واحد ترجمه خود قابل مشاهده هستند. پس از انجام این تحلیل، یک پیکره ABI تنها با در نظر گرفتن زیرمجموعه‌ای از نوع‌های قابل‌دسترسی از رابط‌های مرتبط با نمادهای ELF \% که توسط فایل دودویی تعریف و صادر شده‌اند ساخته می‌شود. این پیکره‌های نهایی ABI هستند که توسط این ابزار مقایسه می‌شوند. .sp با این حال، مشکل این رویکرد آن است که تحلیل تمام رابط‌های قابل‌مشاهده از خارج از واحد ترجمه می‌تواند حجم بسیار زیادی از داده‌ها باشد، به‌ویژه زمانی که این فایل‌های باینری برنامه‌های کاربردی باشند (برخلاف کتابخانه‌های اشتراکی). یک نمونه از این برنامه‌ها هسته لینوکس \% است. تحلیل چنین پیکره‌های عظیم ABI می‌تواند به شدت کُند باشد. .sp اما در حضور یک فایل باینری با «اندازه متوسط»، می‌توان با استفاده از این گزینه به libabigail اجازه داد تا تمام رابط‌های قابل مشاهده در خارج از واحد ترجمه خود را تحلیل کند. .sp توجه داشته باشید که این گزینه به‌طور پیش‌فرض فعال است، مگر آنکه با هسته لینوکس \% سر و کار داشته باشیم. .IP \(bu 2 \fB\-\-btf\fP .INDENT 2.0 .INDENT 3.5 این گزینه برای مقایسه بسته‌ها با استفاده از اطلاعات اشکال‌زدایی BTF \% (در صورت وجود) به کار می‌رود. .UNINDENT .UNINDENT .IP \(bu 2 \fB\-\-ctf\fP .INDENT 2.0 .INDENT 3.5 این گزینه برای مقایسه بسته‌ها با استفاده از اطلاعات اشکال‌زدایی CTF \% (در صورت وجود) به کار می‌رود. .UNINDENT .UNINDENT .IP \(bu 2 \fB\-\-debug\-info\-pkg1 | \-\-d1\fP .sp در مواردی که اطلاعات اشکال‌زدایی برای \fIpackage1\fP در یک فایل جداگانه قرار دارد، به \fBabipkgdiff\fP اعلام می‌کند که بسته اطلاعات اشکال‌زدایی جداگانه را در کجا پیدا کند. .sp توجه داشته باشید که اطلاعات اشکال‌زدایی برای \fIpackage1\fP ممکن است در چندین بسته اطلاعات اشکال‌زدایی مختلف تقسیم شده باشد. در این حالت، می‌توان چندین نمونه از این گزینه را همراه با آن بسته‌های اطلاعات اشکال‌زدایی ارائه داد. .IP \(bu 2 \fB\-\-debug\-info\-pkg2 | \-\-d2\fP .sp در مواردی که اطلاعات اشکال‌زدایی برای \fIpackage2\fP در یک فایل جداگانه قرار دارد، به \fBabipkgdiff\fP اعلام می‌کند که بسته اطلاعات اشکال‌زدایی جداگانه را در کجا پیدا کند. .sp توجه داشته باشید که اطلاعات اشکال‌زدایی برای \fIpackage2\fP ممکن است در چندین بسته اطلاعات اشکال‌زدایی مختلف تقسیم شده باشد. در این حالت، می‌توان چندین نمونه از این گزینه را همراه با آن بسته‌های اطلاعات اشکال‌زدایی ارائه داد. .IP \(bu 2 \fB\-\-devel\-pkg1 | \-\-devel1\fP .sp محل یافتن بسته توسعه \% مرتبط با اولین بسته مورد مقایسه را مشخص می‌کند. این بسته توسعه در مسیر \fBpath\fP باید دست‌کم حاوی فایل‌های سرآیندی باشد که نوع‌های عمومی ارائه‌شده توسط کتابخانه‌ها (در اولین بسته مورد مقایسه) در آن‌ها تعریف شده است. هنگامی که این گزینه ارائه شود، این ابزار گزارش‌های مربوط به تغییرات ABI در نوع‌هایی را که در این فایل‌های سرآیند تعریف \fIنشده‌اند\fP فیلتر و حذف می‌کند. .IP \(bu 2 \fB\-\-devel\-pkg2 | \-\-devel2\fP .sp محل یافتن بسته توسعه \% مرتبط با دومین بسته مورد مقایسه را مشخص می‌کند. این بسته توسعه در مسیر \fBpath\fP باید دست‌کم حاوی فایل‌های سرآیندی باشد که نوع‌های عمومی ارائه‌شده توسط کتابخانه‌ها (در دومین بسته مورد مقایسه) در آن‌ها تعریف شده است. هنگامی که این گزینه ارائه شود، این ابزار گزارش‌های مربوط به تغییرات ABI در نوع‌هایی را که در این فایل‌های سرآیند تعریف \fIنشده‌اند\fP فیلتر و حذف می‌کند. .IP \(bu 2 \fB\-\-drop\-private\-types\fP .sp این گزینه برای استفاده به همراه گزینه‌های \fB\-\-devel\-pkg1\fP و \fB\-\-devel\-pkg2\fP در نظر گرفته شده است. با استفاده از این گزینه، نوع‌هایی که در فایل‌های سرآیند تعریف \fIنشده‌اند\fP به‌طور کامل از بازنمایی داخلی ایجادشده توسط Libabigail برای نمایش ABI حذف می‌شوند. بنابراین، نیازی به پالایش آن‌ها از گزارش نهایی تغییرات ABI نیست زیرا اصلاً در بازنمایی Libabigail وجود نخواهند داشت. .sp اما بدون این گزینه، آن نوع‌های خصوصی در بازنمایی داخلی نگهداری شده و بعداً از گزارش پالایش و فیلتر می‌شوند. .sp بنابراین این گزینه می‌تواند مصرف حافظه Libabigail را کاهش دهد. این گزینه عمدتاً برای بهینه‌سازی مصرف حافظه ابزار بر روی فایل‌های باینری با تعداد بسیار زیادی نوع تعریف‌شده و صادرشده عمومی در نظر گرفته شده است. .IP \(bu 2 \fB\-\-dso\-only\fP .sp تنها فایل‌های ELF را که کتابخانه‌های اشتراکی هستند مقایسه می‌کند. به عنوان مثال، فایل‌های اجرایی را مقایسه نمی‌کند. .IP \(bu 2 \fB\-\-exported\-interfaces\-only\fP .sp به‌طور پیش‌فرض، هنگام بررسی اطلاعات اشکال‌زدایی همراه با یک فایل باینری، این ابزار توصیف نوع‌های قابل‌دسترسی از طریق رابط‌هایی (توابع و متغیرها) را تحلیل می‌کند که خارج از واحد ترجمه خود قابل مشاهده هستند. پس از اتمام این تحلیل، یک پیکره ABI تنها با در نظر گرفتن زیرمجموعه‌ای از نوع‌های قابل‌دسترسی از رابط‌های مرتبط با نمادهای ELF \% که توسط فایل دودویی تعریف و صادر شده‌اند ساخته می‌شود. این پیکره‌های نهایی ABI هستند که توسط این ابزار مقایسه می‌شوند. .sp با این حال، مشکل این رویکرد آن است که تحلیل تمام رابط‌های قابل‌مشاهده از خارج از واحد ترجمه می‌تواند حجم عظیمی از داده باشد، به‌ویژه زمانی که این فایل‌های باینری برنامه‌های کاربردی باشند (برخلاف کتابخانه‌های اشتراکی). یک نمونه از این برنامه‌ها هسته لینوکس \% است. تحلیل چنین پیکره‌های عظیم ABI می‌تواند به شدت کُند باشد. .sp برای حل این مشکل کارایی، این گزینه به libabigail امکان می‌دهد تنها نوع‌هایی را تحلیل کند که از رابط‌های مرتبط با نمادهای تعریف‌شده و صادرشده ELF \% قابل دسترسی هستند. .sp توجه داشته باشید که این گزینه هنگام تحلیل هسته لینوکس \% به‌طور پیش‌فرض فعال است؛ در غیر این صورت، به‌طور پیش‌فرض خاموش می‌باشد. .IP \(bu 2 \fB\-\-fail\-no\-dbg\fP .sp در صورتی که برنامه نتواند هیچ‌یک از اطلاعات اشکال‌زدایی ناشی از بسته‌های debug info ارائه‌شده در خط فرمان را بخواند، اجرای برنامه را با خطا متوقف کرده و یک کد خروج غیرصفر برمی‌گرداند. اگر هیچ بسته debug info در خط فرمان مشخص نشده باشد، این گزینه فعال نخواهد بود. .sp توجه داشته باشید که کد خروج غیرصفرِ بازگردانده‌شده توسط برنامه در نتیجه این گزینه، مقدار ثابت \fBABIDIFF_ERROR\fP است. برای آگاهی از مقدار عددی این ثابت، لطفاً به مستندات کد خروج \%<#\:abidiff-return-value-label> مراجعه فرمایید. .IP \(bu 2 \fB\-\-full\-impact|\-f\fP .sp هنگام مقایسه دو بسته هسته لینوکس، این گزینه به \fBabipkgdiff\fP دستور می‌دهد تا اصطلاحاً \fBگزارش تأثیر کامل (full impact report)\fP را صادر کند که نوع گزارش پیش‌فرضی است که توسط ابزار \fBabidiff\fP تولید می‌شود: .INDENT 2.0 .INDENT 3.5 .sp .EX $ abidiff libtest\-v0.so libtest\-v1.so Functions changes summary: 0 Removed, 1 Changed, 0 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 function with some indirect sub\-type change: [C]\(aqfunction void fn(C&)\(aq at test\-v1.cc:13:1 has some indirect sub\-type changes: parameter 1 of type \(aqC&\(aq has sub\-type changes: in referenced type \(aqstruct C\(aq at test\-v1.cc:7:1: type size hasn\(aqt changed 1 data member change: type of \(aqleaf* C::m0\(aq changed: in pointed to type \(aqstruct leaf\(aq at test\-v1.cc:1:1: type size changed from 32 to 64 bits 1 data member insertion: \(aqchar leaf::m1\(aq, at offset 32 (in bits) at test\-v1.cc:4:1 $ .EE .UNINDENT .UNINDENT .IP \(bu 2 \fB\-\-harmless\fP .sp در گزارش تفاضلی، تنها تغییرات بی‌ضرر \%<#\:harmlesschangeconcept-label> را نمایش می‌دهد. به‌طور پیش‌فرض، تغییرات بی‌ضرر از گزارش تفاضلی فیلتر می‌شوند تا شلوغی خروجی به حداقل رسیده و بخت شناسایی مشکلات واقعی ABI بیشتر شود. .IP \(bu 2 \fB\-\-help | \-h\fP .sp نمایش راهنمای مختصر درباره دستور و خروج. .IP \(bu 2 \fB\-\-ignore\-soname\fP .sp اگر دو فایل باینری با SONAMEهای مختلف، نام یکسانی در بسته‌های قدیمی و جدید مورد مقایسه داشته باشند، این گزینه abipkgdiff را وادار می‌کند تا آن‌ها را صرف‌نظر از تغییر آشکار SONAME مقایسه کند. این امر امکان تحلیل تغییرات ABI را که ممکن است توسعه‌دهندگان را به تغییر SONAME واداشته باشد، فراهم می‌سازد. .IP \(bu 2 \fB\-\-impacted\-interfaces\fP .UNINDENT .INDENT 0.0 .INDENT 3.5 هنگام نمایش تغییرات انتهایی (leaf changes)، این گزینه به abipkgdiff دستور می‌دهد تا فهرست رابط‌های متأثر را نمایش دهد. بنابراین، این گزینه باید همراه با گزینه \fB\-\-leaf\-changes\-only\fP یا هنگام مقایسه دو بسته هسته لینوکس استفاده شود؛ در غیر این صورت، نادیده گرفته می‌شود. .UNINDENT .UNINDENT .INDENT 0.0 .IP \(bu 2 \fB\-\-keep\-tmp\-files\fP .sp پوشه‌ها و فایل‌های موقتی را که در طول اجرای ابزار ایجاد می‌شوند پاک نمی‌کند. .IP \(bu 2 \fB\-\-leaf\-changes\-only|\-l\fP تنها تغییرات برگ (انتهایی) را نمایش می‌دهد، بنابراین گزارش تحلیل تأثیر را نشان نمی‌دهد. این گزینه متضمن \fB\-\-redundant\fP است. .sp خروجی نوعی \fBabipkgdiff\fP و \fBabidiff\fP هنگام مقایسه دو فایل باینری که آن را \fBگزارش تأثیر کامل\fP می‌نامیم، به شکل زیر است: .INDENT 2.0 .INDENT 3.5 .sp .EX $ abidiff libtest\-v0.so libtest\-v1.so Functions changes summary: 0 Removed, 1 Changed, 0 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 function with some indirect sub\-type change: [C]\(aqfunction void fn(C&)\(aq at test\-v1.cc:13:1 has some indirect sub\-type changes: parameter 1 of type \(aqC&\(aq has sub\-type changes: in referenced type \(aqstruct C\(aq at test\-v1.cc:7:1: type size hasn\(aqt changed 1 data member change: type of \(aqleaf* C::m0\(aq changed: in pointed to type \(aqstruct leaf\(aq at test\-v1.cc:1:1: type size changed from 32 to 64 bits 1 data member insertion: \(aqchar leaf::m1\(aq, at offset 32 (in bits) at test\-v1.cc:4:1 $ .EE .UNINDENT .UNINDENT .sp بنابراین در این مثال، گزارش اطلاعاتی درباره چگونگی دسترسی به تغییر درج عضو داده \(dqstruct leaf\(dq از تابع \(dqvoid fn(C&)\(dq ارائه می‌دهد. به بیان دیگر، گزارش نه‌تنها تغییر عضو داده روی \(dqstruct leaf\(dq را نشان می‌دهد، بلکه تأثیر آن تغییر بر روی تابع \(dqvoid fn(C&)\(dq را نیز مشخص می‌کند. .sp در اصطلاحات abidiff (و abipkgdiff)، تغییر روی \(dqstruct leaf\(dq یک تغییر برگ یا انتهایی (leaf change) نامیده می‌شود. بنابراین گزینه‌های \fB\-\-leaf\-changes\-only \-\-impacted\-interfaces\fP تنها همان تغییر برگ را نمایش می‌دهند، که به شکل زیر خواهد بود: .INDENT 2.0 .INDENT 3.5 .sp .EX $ abidiff \-l libtest\-v0.so libtest\-v1.so \(aqstruct leaf\(aq changed: type size changed from 32 to 64 bits 1 data member insertion: \(aqchar leaf::m1\(aq, at offset 32 (in bits) at test\-v1.cc:4:1 one impacted interface: function void fn(C&) $ .EE .UNINDENT .UNINDENT .sp توجه داشته باشید که گزارش چگونه با نمایش فهرستی از رابط‌های متأثر از تغییر برگ به پایان می‌رسد. این حاصل اثر گزینه تکمیلی \fB\-\-impacted\-interfaces\fP است. .sp حال اگر مایل به مشاهده آن فهرست از رابط‌های متأثر نیستید، می‌توانید به سادگی از به کار بردن گزینه \fB\-\-impacted\-interface\fP خودداری نمایید. در هر صورت، می‌توانید درباره این گزینه در بخش‌های دیگر مطالعه کنید. .sp لطفاً توجه داشته باشید که هنگام مقایسه دو بسته هسته لینوکس، این \fBگزارش تغییرات برگ\fP است که به‌طور پیش‌فرض صادر می‌شود. گزارش معمولی موسوم به \fBگزارش تأثیر کامل\fP را می‌توان با گزینه \fB\-\-full\-impact\fP که پیش‌تر در بالا توضیح داده شد صادر کرد. .IP \(bu 2 \fB\-\-linux\-kernel\-abi\-whitelist | \-w\fP <\fIpath\-to\-whitelist\fP> .sp هنگام مقایسه دو بسته RPM هسته لینوکس، این گزینه به فهرست سفید (لیست مجاز) نام‌های نمادهای ELF از توابع و متغیرهایی اشاره دارد که باید برای تغییرات ABI مقایسه شوند. این لیست مجاز «فهرست سفید ABI هسته لینوکس» نامیده می‌شود. .sp هر تابع یا متغیر دیگری که نماد ELF آن در آن فهرست سفید موجود نباشد، توسط فرایند مقایسه ABI در نظر گرفته نخواهد شد. .sp اگر این گزینه ارائه نشود \-\- یعنی اگر هیچ فهرست سفیدی ارائه نگردد \-\- آنگاه ABI تمامی توابع و متغیرهای سراسری که به صورت عمومی توسط فایل‌های باینری هسته لینوکس تعریف و صادر شده‌اند، مقایسه می‌شود. .sp لطفاً توجه داشته باشید که اگر یک بسته فهرست سفید به عنوان پارامتر داده شود، این گزینه به درستی آن را پردازش می‌کند، درست مانند اینکه از گزینه \-\-wp استفاده شده باشد. .IP \(bu 2 \fB\-\-no\-abignore\fP .sp بسته‌ها را برای بررسی وجود فایل‌های سرکوب جستجو نمی‌کند. .IP \(bu 2 \fB\-\-no\-added\-binaries\fP .sp فهرست فایل‌های باینری اضافه‌شده به بسته دوم را نمایش نمی‌دهد. .sp لطفاً توجه داشته باشید که وجود چنین فایل‌های باینری اضافه‌شده‌ای توسط این ابزار به عنوان تغییر ABI تلقی نمی‌شود؛ از این رو، هیچ تأثیری بر کد خروج ابزار ندارد و تنها جنبه اطلاع‌رسانی دارد. با این حال، فایل‌های باینری حذف‌شده به عنوان تغییر ABI در نظر گرفته می‌شوند. .IP \(bu 2 \fB\-\-no\-added\-syms\fP .sp فهرست توابع، متغیرها یا هر نمادی را که اضافه شده است نمایش نمی‌دهد. .IP \(bu 2 \fB\-\-no\-assume\-odr\-for\-cplusplus\fP .sp هنگام تحلیل یک فایل باینری منشعب از کد ++C با استفاده از اطلاعات اشکال‌زدایی DWARF \%، کتابخانه libabigail برای افزایش سرعت تحلیل، قاعده یک تعریف (One Definition Rule) \% را مفروض می‌داند. در این حالت، هنگامی که چندین نوع دارای نام یکسانی در فایل باینری باشند، همگی برابر فرض می‌شوند. .sp این گزینه این فرض را غیرفعال کرده و به libabigail دستور می‌دهد تا نوع‌ها را واقعاً مقایسه کند تا برابری آن‌ها را بسنجد. .IP \(bu 2 \fB\-\-no\-default\-suppression\fP .sp فایل‌های مشخصات سرکوب پیش‌فرض را بارگذاری نمی‌کند. .IP \(bu 2 \fB\-\-no\-leverage\-dwarf\-factorization\fP .sp هنگام تحلیل یک فایل باینری که اطلاعات اشکال‌زدایی DWARF \% آن توسط ابزار DWZ \% پردازش شده است، انتظار می‌رود اطلاعات نوع قبلاً فاکتورگیری شده باشد. این زمینه توسط libabigail برای انجام برخی بهینه‌سازی‌های سرعت مورد استفاده قرار می‌گیرد. .sp این گزینه این بهینه‌سازی‌ها را غیرفعال می‌کند. .IP \(bu 2 \fB\-\-no\-linkage\-name\fP .sp در گزارش حاصل، نام‌های پیوند (linkage names) توابع یا متغیرهای اضافه‌شده، حذف‌شده یا تغییریافته را نمایش نمی‌دهد. .IP \(bu 2 \fB\-\-no\-parallel\fP .sp به‌طور پیش‌فرض، \fBabipkgdiff\fP از تمام پردازنده‌های در دسترس برای اجرای همزمان استفاده خواهد کرد. این گزینه به آن دستور می‌دهد که بسته‌ها را استخراج نکرده یا مقایسه‌ها را به صورت موازی اجرا ننماید. .IP \(bu 2 \fB\-\-non\-reachable\-types|\-t\fP .sp تمام نوع‌های موجود در فایل باینری را تحلیل کرده و گزارش تغییرات آن‌ها را صادر می‌کند، از جمله نوع‌هایی که از طریق توابع و متغیرهای سراسری قابل دسترسی نیستند. .sp این گزینه ممکن است افت کارایی شدیدی در پی داشته باشد زیرا تعداد نوع‌های تحلیل‌شده می‌تواند بسیار بالا باشد. با این حال، اگر با گزینه‌های \fB\-\-devel\-pkg{1,2}\fP همراه شود، نوع‌های غیرقابل‌دسترسِ تحلیل‌شده تنها به مواردی محدود می‌شوند که در فایل‌های سرآیند عمومی موجود در بسته‌های توسعه مرجع تعریف شده‌اند، که امید می‌رود افت کارایی را در حدی قابل قبول نگه دارد. .sp همچنین استفاده از این گزینه در کنار مشخصات سرکوب (با استفاده از گزینه \fB\-\-suppressions\fP) ممکن است به کنترل تعداد نوع‌های تحلیل‌شده (و افت احتمالی کارایی) کمک نماید. .sp توجه داشته باشید که بدون این گزینه، تنها نوع‌هایی که از طریق توابع و متغیرهای سراسری قابل دسترسی هستند تحلیل می‌شوند، بنابراین ابزار تغییرات را تنها روی این نوع‌های در دسترس شناسایی و گزارش می‌کند. .IP \(bu 2 \fB\-\-no\-show\-locs\fP .UNINDENT .INDENT 0.0 .INDENT 3.5 اطلاعات مربوط به اینکه در کجای \fIدومین کتابخانه اشتراکی\fP نوع مربوطه تغییر یافته است را نمایش نمی‌دهد. .UNINDENT .UNINDENT .INDENT 0.0 .IP \(bu 2 \fB\-\-no\-show\-relative\-offset\-changes\fP .INDENT 2.0 .INDENT 3.5 بدون این گزینه، هنگامی که آفست یک عضو داده تغییر می‌کند، گزارش تغییرات نه‌تنها آفست قبلی و جدید را ذکر می‌کند، بلکه بیان می‌دارد که عضو داده به اندازه چند بیت تغییر یافته است. با این گزینه، این مورد اخیر نمایش داده نمی‌شود. .UNINDENT .UNINDENT .IP \(bu 2 \fB\-\-no\-unreferenced\-symbols\fP .sp در گزارش حاصل، اطلاعات تغییر نمادهای توابع و متغیرهایی را که توسط هیچ اطلاعات اشکال‌زدایی ارجاع داده نشده‌اند نمایش نمی‌دهد. توجه داشته باشید که برای این نمادهای ارجاع‌داده‌نشده توسط اطلاعات اشکال‌زدایی، اطلاعات تغییرِ نمایش‌داده‌شده صرفاً شامل نمادهای اضافه‌شده یا حذف‌شده است. .IP \(bu 2 \fB\-\-show\-bits\fP .sp نمایش اندازه‌ها و آفست‌ها بر حسب بیت، نه بایت. این گزینه به‌طور پیش‌فرض فعال است. .IP \(bu 2 \fB\-\-show\-bytes\fP .sp نمایش اندازه‌ها و آفست‌ها بر حسب بایت، نه بیت. به‌طور پیش‌فرض اندازه‌ها و آفست‌ها بر حسب بیت نمایش داده می‌شوند. .IP \(bu 2 \fB\-\-show\-dec\fP .sp نمایش اندازه‌ها و آفست‌ها در مبنای ده‌دهی (decimal). این گزینه به‌طور پیش‌فرض فعال است. .IP \(bu 2 \fB\-\-show\-hex\fP .sp نمایش اندازه‌ها و آفست‌ها در مبنای شانزده‌شانزدهی (hexadecimal). .IP \(bu 2 \fB\-\-show\-identical\-binaries\fP .UNINDENT .INDENT 0.0 .INDENT 3.5 نام تمام فایل‌های باینری مقایسه‌شده را نمایش می‌دهد، از جمله فایل‌های باینری که ABI آن‌ها یکسان است. به‌طور پیش‌فرض، در صورتی که این گزینه ارائه نشود، تنها فایل‌های باینری دارای تغییرات ABI در خروجی ذکر می‌شوند. .UNINDENT .UNINDENT .INDENT 0.0 .IP \(bu 2 \fB\-\-private\-dso\fP .sp به‌طور پیش‌فرض، \fBabipkgdiff\fP اشیاء اشتراکی پویایی (DSO) را که مختص بسته RPM هستند مقایسه نمی‌کند. یک DSO اختصاصی، شیء اشتراکی است که SONAME آن در ویژگی «provides» بسته RPM اعلان \fIنشده\fP باشد. .sp این گزینه به \fBabipkgdiff\fP دستور می‌دهد تا DSOهایی را که در ویژگی «provides» بسته RPM اعلان \fIنشده‌اند\fP نیز مقایسه کند. .sp لطفاً توجه داشته باشید این موضوع که (به‌طور پیش‌فرض) \fBabipkgdiff\fP از DSOهای اختصاصی صرف‌نظر می‌کند، قابلیتی است که در حال حاضر تنها برای بسته‌های RPM موجود است. ما با کمال میل وصله‌هایی را که این ویژگی را برای سایر قالب‌های بسته بیفزایند می‌پذیریم. .IP \(bu 2 \fB\-\-redundant\fP .UNINDENT .INDENT 0.0 .INDENT 3.5 در گزارش‌های تفاضلی، تغییرات مازاد (تکراری) را نمایش می‌دهد. تغییر مازاد تغییری است که در بخش دیگری از یک گزارش مشخص نمایش داده شده باشد. .UNINDENT .UNINDENT .INDENT 0.0 .IP \(bu 2 \fB\-\-self\-check\fP .sp این گزینه برای آزمودن کتابخانه زیربنایی Libabigail استفاده می‌شود. هنگام استفاده، دستور تنها یک بسته ورودی را به همراه بسته‌های اطلاعات اشکال‌زدایی مرتبط با آن می‌پذیرد. سپس دستور هر فایل باینری درون بسته را در برابر بازنمایی ABIXML خود مقایسه می‌کند. در صورتی که Libabigail رفتار صحیحی داشته باشد، نتیجه مقایسه باید مجموعه تهی باشد؛ در غیر این صورت، نشان‌دهنده مشکلی است که باید برطرف گردد. این گزینه توسط توسعه‌دهندگان علاقه‌مند به توسعه Libabigail برای آزمون‌های رگرسیون استفاده می‌شود. در ادامه نمونه‌ای از کاربرد این گزینه آمده است: .INDENT 2.0 .INDENT 3.5 .sp .EX $ abipkgdiff \-\-self\-check \-\-d1 mesa\-libGLU\-debuginfo\-9.0.1\-3.fc33.x86_64.rpm mesa\-libGLU\-9.0.1\-3.fc33.x86_64.rpm ==== SELF CHECK SUCCEEDED for \(aqlibGLU.so.1.3.1\(aq ==== $ .EE .UNINDENT .UNINDENT .IP \(bu 2 \fB\-\-set1\fP ... .sp نخستین مجموعه از بسته‌هایی را مشخص می‌کند که فایل‌های باینری آن‌ها قرار است در برابر مجموعه دوم مقایسه شوند. توجه داشته باشید که دومین مجموعه بسته‌ها باید با استفاده از گزینه \fB\-\-set2\fP مشخص شود. .IP \(bu 2 \fB\-\-set2\fP ... .sp دومین مجموعه از بسته‌هایی را مشخص می‌کند که فایل‌های باینری آن‌ها قرار است در برابر مجموعه اول مقایسه شوند. توجه داشته باشید که نخستین مجموعه بسته‌ها باید با استفاده از گزینه \fB\-\-set1\fP مشخص شود. .IP \(bu 2 \fB\-\-suppressions | \-\-suppr\fP <\fIpath\-to\-suppressions\fP> .sp از یک فایل مشخصات سرکوب \%<#\:suppr-spec-label> واقع در \fIpath\-to\-suppressions\fP استفاده می‌کند. توجه داشته باشید که این گزینه می‌تواند چندین بار در خط فرمان تکرار شود. در این حالت، تمامی فایل‌های مشخصات سرکوب در نظر گرفته خواهند شد. .sp لطفاً توجه داشته باشید که به‌طور پیش‌فرض، اگر این گزینه ارائه نشود، فایل‌های مشخصات سرکوب پیش‌فرض بارگذاری می‌شوند. .IP \(bu 2 \fI\-\-version | \-v\fP .sp نمایش نسخه برنامه و خروج. .IP \(bu 2 \fB\-\-wp\fP <\fIpath\-to\-whitelist\-package\fP> .sp هنگام مقایسه دو بسته RPM هسته لینوکس، این گزینه به یک بسته RPM حاوی چندین فهرست سفید از نام‌های نمادهای ELF از توابع و متغیرهایی اشاره دارد که باید برای تغییرات ABI مقایسه شوند. این لیست‌های مجاز «فهرست‌های سفید ABI هسته لینوکس» نام دارند. .sp سپس این برنامه بر اساس محتوای آن بسته فهرست سفید، فهرست سفید مناسب ABI هسته لینوکس را برای در نظر گرفتن در مقایسه ABI باینری‌های هسته لینوکس موجود در بسته‌های مشخص‌شده در خط فرمان برمی‌گزیند. .sp آن فهرست سفید انتخاب‌شده ABI هسته لینوکس شامل فهرست نام‌های نمادهای ELF مربوط به توابع و متغیرهایی است که باید برای تغییرات ABI مقایسه شوند. .sp هر تابع یا متغیر دیگری که نماد ELF آن در آن فهرست سفید وجود نداشته باشد، در فرایند مقایسه ABI در نظر گرفته نخواهد شد. .sp توجه داشته باشید که این گزینه می‌تواند دو بار (نه بیشتر از دو بار) ارائه شود و برای هر بسته هسته لینوکس ارائه‌شده در خط فرمان، یک بسته فهرست سفید مشخص نماید. .sp اگر این گزینه ارائه نشود \-\- یعنی اگر هیچ فهرست سفیدی ارائه نگردد \-\- آنگاه ABI تمامی توابع و متغیرهای سراسری که به صورت عمومی توسط فایل‌های باینری هسته لینوکس تعریف و صادر شده‌اند، مقایسه می‌شود. .IP \(bu 2 \fB\-\-verbose\fP .sp پیام‌های پیشرفت تفصیلی را صادر می‌کند. .IP \(bu 2 \fB\-\-verbose\-diff\fP .sp پیام‌های تفصیلی و زمان‌بندی‌شده درباره فرآیند مقایسه (diffing) صادر می‌کند. این گزینه متضمن گزینه \-\-verbose است. .UNINDENT .UNINDENT .UNINDENT .SH "وضعیت خروج (RETURN VALUE)" .sp کد خروج دستور \fBabipkgdiff\fP در صورتی که ABI فایل‌های باینری مقایسه‌شده یکسان باشد برابر با 0 است، و در صورتی که با یکدیگر تفاوت داشته باشند یا ابزار با خطایی مواجه شود، غیرصفر خواهد بود. .sp در حالت دوم، مقدار کد خروج همانند ابزار abidiff است \%<#\:abidiff-return-value-label>\&. .SH "نویسنده (AUTHOR)" Dodji Seketeli .SH "حق نشر (COPYRIGHT)" 2014-2025, Red Hat, Inc. .\" End of generated man page.