англійськафранцузькаіспанська

Ad


Значок OnWorks

abidiff - онлайн у хмарі

Запустіть abidiff у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда abidiff, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


abidiff - порівняння ABI файлів ELF

abidiff порівнює двійкові інтерфейси додатків (ABI) двох спільних бібліотек у ELF
формат. Він видає змістовний звіт, що описує відмінності між двома ABI.

Для повного звіту про зміни ABI, який містить зміни щодо функції та змінної
підтипи, дві вхідні спільні бібліотеки повинні супроводжуватися їх інформацією про налагодження
in КНІР формат. Інакше тільки ELF повідомляється про додані чи вилучені символи.

ІНВОКАЦІЯ


abidiff [параметри]

ВАРІАНТИ


· --допомога | -h

Відобразіть коротку довідку про команду та вийдіть.

· -- версія | -v

Відобразити версію програми та вийти.

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

Для випадків, коли інформація про налагодження для перша спільна бібліотека розбивається на а
окремий файл, розповідає abidiff де знайти цей окремий файл інформації про налагодження.

Зверніть увагу, що di-шлях має вказувати на кореневий каталог, у якому міститься інформація про налагодження
розташована у вигляді дерева. У системах на базі Red Hat цей каталог є
зазвичай /usr/lib/debug.

Зауважте також, що цей параметр не є обов’язковим для розділеної налагоджувальної інформації, встановленої користувачем
менеджер пакетів вашої системи, тому що тоді abidiff знає, де його знайти.

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

Люблю --debug-info-dir1, розповідає цей параметр abidiff де знайти розділене налагодження
інформація для друга спільна бібліотека файлу.

· --стат

Замість відображення детальних відмінностей ABI між перша спільна бібліотека та
друга спільна бібліотека, просто відобразіть деякі підсумкові статистичні дані про ці відмінності.

· --symtabs

Відображати лише таблиці символів перша спільна бібліотека та друга спільна бібліотека.

· --deleted-fns

В отриманому звіті про відмінності між перша спільна бібліотека та
друга спільна бібліотека, відображати лише глобально визначені функції, які були видалені
від перша спільна бібліотека.

· --змінено-fns

В отриманому звіті про відмінності між перша спільна бібліотека та
друга спільна бібліотека, відображати лише зміни в підтипах глобальних функцій
визначено в перша спільна бібліотека.

· --added-fns

В отриманому звіті про відмінності між перша спільна бібліотека та
друга спільна бібліотека, відображати лише глобально визначені функції, до яких було додано
друга спільна бібліотека.

· --deleted-vars

В отриманому звіті про відмінності між перша спільна бібліотека та
друга спільна бібліотека, відображати лише глобально визначені змінні, які були видалені
від перша спільна бібліотека.

· --changed-vars

В отриманому звіті про відмінності між перша спільна бібліотека та
друга спільна бібліотека, відображати лише зміни в підтипах глобального
змінні, визначені в перша спільна бібліотека

· --added-vars

В отриманому звіті про відмінності між перша спільна бібліотека та
друга спільна бібліотека, відображати лише глобальні змінні, до яких було додано (визначено).
друга спільна бібліотека.

· --no-linkage-name

У отриманому звіті не відображати назви зв’язків доданих, видалених або
змінені функції або змінні.

· --no-show-locs
Не показувати інформацію про те, де в другий загальні бібліотека відповідний
тип був змінений.

· --no-unreferenced-symbols

У отриманому звіті не відображати інформацію про зміну функції та
змінні символи, на які не посилається жодна інформація про налагодження. Зауважте, що для
на ці символи не посилається жодна інформація про налагодження, інформація про зміни
відображаються додані або видалені символи.

· --придушення | --супр <шлях до придушення>

Використовуйте файл специфікації придушення, розташований за адресою шлях до придушення. Зауважте, що це
параметр може з'являтися кілька разів у командному рядку; все придушення
потім враховуються файли специфікації.

· -- падіння <regex>

При читанні перша спільна бібліотека та друга спільна бібліотека Вхідні файли ELF, скиньте
глобально визначені функції та змінні, назва яких відповідає регулярному виразу
regex. В результаті ніяких змін, що стосуються цих функцій або змінних, не буде
у звіті diff.

· --drop-fn <regex>

При читанні перша спільна бібліотека та друга спільна бібліотека Вхідні файли ELF, скиньте
глобально визначені функції, назва яких відповідає регулярному виразу regex. Як
Як наслідок, у звіті diff не буде внесено жодних змін, що стосуються цих функцій.

· --drop-вар <regex>

При читанні перша спільна бібліотека та друга спільна бібліотека Вхідні файли ELF, скиньте
глобально визначені змінні, що відповідають регулярному виразу regex.

· -- тримати <regex>

При читанні перша спільна бібліотека та друга спільна бібліотека Вхідні файли ELF, зберігайте
глобально визначені функції та змінні, імена яких відповідають регулярному виразу
regex. Усі інші функції та змінні скидаються на підлогу і, таким чином, не будуть
відображаються в отриманому звіті diff.

· --keep-fn <regex>

При читанні перша спільна бібліотека та друга спільна бібліотека Вхідні файли ELF, зберігайте
глобально визначені функції, назва яких відповідає регулярному виразу regex, Всі
інші функції опускаються на підлогу і, таким чином, не відображаються в результаті
звіт про відмінності.

· --keep-змін <regex>

При читанні перша спільна бібліотека та друга спільна бібліотека Вхідні файли ELF, зберігайте
глобально визначені імена, які відповідають регулярному виразу regex. Всі інші
змінні опускаються на підлогу і, таким чином, не відображатимуться в результуючому diff
повідомити.

· --нешкідливий

У звіті diff відображати лише нешкідливі зміни. За замовчуванням нешкідливий
Зміни відфільтровуються зі звіту diff, щоб безлад до мінімуму та мав a
більше змін, щоб виявити реальні проблеми ABI.

· --не шкідливо

У звіті diff не відображайте шкідливі зміни. За замовчуванням тільки шкідливі
зміни відображаються у звіті diff.

· --зайві

У звіті diff відобразіть зайві зміни. Зайва зміна — це зміна
яка була відображена в іншому місці звіту.

· --без зайвих

У звіті diff зробіть НЕ відображати зайві зміни. Зайва зміна — це зміна
яка була відображена в іншому місці звіту. Ця опція вмикається за допомогою
за замовчуванням.

· --не-архітектура

Не враховуйте архітектуру при порівнянні ABI.

· --dump-diff-tree
Після звіту diff створіть текстове представлення дерева вузлів diff, яке використовується
механізм порівняння для представлення змінених функцій і змінних. Це
подання видається у вихідні дані про помилку для налагодження. Зауважте, що
це дерево відмінностей стосується лише функцій і змінних, які мають певний підтип
зміни. Додані або видалені функції та змінні не мають дерева вузлів відмінності
пов'язані з ними.

· --статистика

Видавати статистику про різні внутрішні речі.

· -багатослівний

Видавайте докладні журнали про хід різних внутрішніх речей.

ПОВЕРНЕННЯ ЗНАЧЕННЯ


Код виходу abidiff команда дорівнює 0, якщо ABI двійкових файлів, що порівнюються
рівні або відмінні від нуля, якщо вони відрізняються або якщо інструмент знайшов помилку.

У наступному випадку код виходу являє собою 8-бітове бітове поле, в якому кожен біт має a
конкретне значення.

Іменований перший біт значення 1 ABIDIFF_ERROR означає, що сталася помилка.

Другий біт, значення 2, названий ABIDIFF_USAGE_ERROR означає, що в дорозі сталася помилка
користувач викликав інструмент. Він може бути встановлений, наприклад, якщо користувач запустив інструмент
з невідомим перемикачем командного рядка, з неправильним числом або аргументом тощо. Якщо цей біт є
встановити, потім ABIDIFF_ERROR біт також потрібно встановити.

Третій біт, значення 4, названий ABIDIFF_ABI_CHANGE означає ABI бінарного буття
порівнюються різні.

Іменований четвертий біт зі значенням 8 ABIDIFF_ABI_INCOMPATIBLE_CHANGE означає ABI
порівнювані двійкові файли відрізняються несумісним чином. Якщо цей біт встановлений, то
ABIDIFF_ABI_CHANGE біт також потрібно встановити. Якщо ABIDIFF_ABI_CHANGE встановлюється і
ABIDIFF_INCOMPATIBLE_CHANGE is НЕ встановлено, то це означає, що порівнювані ABI можуть
або може бути несумісним. У цьому випадку людині необхідно переглянути зміни ABI
щоб вирішити, сумісні вони чи ні.

Решта біти на даний момент не використовуються.

ВИКОРИСТАННЯ ПРИКЛАДИ


1. Виявлення зміни підтипу функції:

$ cat -n test-v0.cc
1 // Скомпілювати це за допомогою:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 структура S0
5 {
6 int m0;
7 };
8
9 недійсний
10 foo(S0* /*назва_параметра*/)
11 {
12 // зробити щось із параметром_name.
13}
$
$ cat -n test-v1.cc
1 // Скомпілювати це за допомогою:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 структура type_base
5 {
6 int вставлено;
7 };
8
9 struct S0 : відкритий тип_база
10 {
11 int m0;
12 };
13
14 недійсний
15 foo(S0* /*назва_параметра*/)
16 {
17 // зробити щось із параметром_name.
18}
$
$ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Зміни функцій: 0 Вилучено, 1 Змінено, 0 Додано функцію
Підсумок змін змінних: 0 видалено, 0 змінено, 0 додано змінну

1 функція з деякими непрямими змінами підтипу:

[C]'function void foo(S0*)' має деякі непрямі зміни підтипу:
параметр 0 типу 'S0*' має зміни підтипу:
в вказав на тип "структура S0":
розмір змінено з 32 до 64 біт
1 вставка базового класу:
структура type_base
1 зміна члена даних:
Зміщення 'int S0::m0' змінено з 0 до 32
$

2. Виявлення іншої зміни в підтипі функції:

$ cat -n test-v0.cc
1 // Скомпілювати це за допомогою:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 структура S0
5 {
6 int m0;
7 };
8
9 недійсний
10 foo(S0& /*назва_параметра*/)
11 {
12 // зробити щось із параметром_name.
13}
$
$ cat -n test-v1.cc
1 // Скомпілювати це за допомогою:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 структура S0
5 {
6 символів вставлений_член;
7 int m0;
8 };
9
10 недійсний
11 foo(S0& /*назва_параметра*/)
12 {
13 // зробити щось із параметром_name.
14}
$
$ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Зміни функцій: 0 Вилучено, 1 Змінено, 0 Додано функцію
Підсумок змін змінних: 0 видалено, 0 змінено, 0 додано змінну

1 функція з деякими непрямими змінами підтипу:

[C]'function void foo(S0&)' має деякі непрямі зміни підтипу:
параметр 0 типу 'S0&' має зміни підтипу:
у згаданому типі 'struct S0':
розмір змінено з 32 до 64 біт
1 вставка елемента даних:
'char S0::inserted_member', зі зміщенням 0 (у бітах)
1 зміна члена даних:
Зміщення 'int S0::m0' змінено з 0 до 32

$

3. Виявлення, що функції видалено або додано до бібліотеки:

$ cat -n test-v0.cc
1 // Скомпілювати це за допомогою:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 структура S0
5 {
6 int m0;
7 };
8
9 недійсний
10 foo(S0& /*назва_параметра*/)
11 {
12 // зробити щось із параметром_name.
13}
$
$ cat -n test-v1.cc
1 // Скомпілювати це за допомогою:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 структура S0
5 {
6 символів вставлений_член;
7 int m0;
8 };
9
10 недійсний
11 бар (S0& /*назва_параметра*/)
12 {
13 // зробити щось із параметром_name.
14}
$
$ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Зміни функцій: 1 Вилучено, 0 Змінено, 1 Додано функцій
Підсумок змін змінних: 0 видалено, 0 змінено, 0 додано змінну

1 Вилучена функція:
'function void foo(S0&)' {_Z3fooR2S0}

1 Додана функція:
'function void bar(S0&)' {_Z3barR2S0}

$

Використовуйте abidiff онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

  • 1
    facetracknoir
    facetracknoir
    Модульна програма хедтрекінгу, яка
    підтримує кілька фейстрекерів, фільтрів
    і протоколи гри. Серед трекерів
    це SM FaceAPI, AIC Inercial Head
    Трекер ...
    Завантажити facetracknoir
  • 2
    PHP QR-код
    PHP QR-код
    PHP QR-код з відкритим вихідним кодом (LGPL)
    бібліотека для генерації QR-коду,
    2-вимірний штрих-код. На основі
    бібліотека libqrencode C, надає API для
    створення QR-коду barc...
    Завантажте QR-код PHP
  • 3
    freeciv
    freeciv
    Freeciv - це безкоштовна покрокова програма
    багатокористувацька стратегічна гра, в якій кожен
    гравець стає лідером a
    цивілізації, що бореться за отримання с
    кінцева мета: стати...
    Завантажити Freeciv
  • 4
    Зозуля Пісочниця
    Зозуля Пісочниця
    Cuckoo Sandbox використовує компоненти для
    стежити за поведінкою зловмисного програмного забезпечення в a
    Середовище пісочниці; ізольовано від
    решта системи. Він пропонує автоматизовані
    аналіз про...
    Завантажити Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Відтворення відео YouTube на LMS (перенесення
    Triode для YouTube API v3) Це
    додаток, який також можна отримати
    від
    https://sourceforge.net/projects/lms-y...
    Завантажте LMS-YouTube
  • 6
    Фонд презентацій Windows
    Фонд презентацій Windows
    Фонд презентацій Windows (WPF)
    є фреймворком інтерфейсу користувача для створення Windows
    настільні програми. WPF підтримує a
    широкий набір розробки додатків
    особливості ...
    Завантажити Windows Presentation Foundation
  • Детальніше »

Команди Linux

Ad