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

Ad


Значок OnWorks

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

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

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

ПРОГРАМА:

ІМ'Я


abicheck - перевірте двійкові файли програми на наявність викликів приватних або змінюваних символів
бібліотеки та для статичного зв'язування деяких системних бібліотек.

СИНТАКСИС


abicheck [-h] [-k] [-a] [-I] [-v] [-f файл списку] [-або вихідний файл] [-с візерунок] [-е візерунок] [-j
вакансія] [-л бібліотека] [-Л ldpath] [(-s|-S) dbfile] [(-d|-D) dbfile] [-О dbfile] [-А
файл списку] файли

ОПИС


abicheck запускається у двійкових файлах програми та видає попередження, коли будь-яке з наведених нижче
виявлено три умови:

· приватний символ використання. Приватні символи - це функції або змінні даних у бібліотеці
пакет, який є внутрішнім для цього пакета. Вони використовуються бібліотеками в пакеті
для внутрішнього зв’язку та не є частиною API/ABI розробників додатків
слід використовувати.

· Еволюція символ використання. Символи, що розвиваються, - це функції або змінні даних у бібліотеці
пакети, які призначені для використання розробниками, але були позначені як "розвиваються" або
«нестабільні» в тому сенсі, що вони можуть стати несумісними або зникнути при наступному випуску
бібліотечного пакету.

· Статичний зв'язування. Статичне зв'язування системних бібліотек (наприклад, libc.a) у файл
Програма, як правило, не є гарною ідеєю, оскільки код системної бібліотеки, в який вона «замикається».
двійковий файл програми може стати несумісним з пізнішими випусками системи. abicheck
намагається виявити статичне зв'язування кількох системних бібліотек.

Поведінка за замовчуванням полягає в тому, щоб для кожного перевіреного двійкового об’єкта перевіряти прямі виклики з нього
тільки двійковий об'єкт. The -l Опція дозволяє мати бібліотеки, які вносить двійковий об'єкт
їхні дзвінки також перевірені.

ВАРІАНТИ


Підтримуються такі параметри:

-k Продовжуйте перевіряти двійкові файли, навіть якщо є серйозні помилки (звіти динамічного компонувальника
нерозв'язані символи, ldd(1) збої, символи не виявлені).

-h Роздрукуйте довгу форму довідки.

-v Багатослівний. Роздрукуйте додаткову інформацію.

-f файл зі списком
Команда файл зі списком це файл, що містить список двійкових об’єктів для перевірки, по одному на рядок.
Цей список додається до будь-яких файлів, наданих як аргументи в командному рядку. Якщо
файл зі списком є "-", тоді використовується stdin.

-o вихідний файл
Записати вихід до вихідний файл замість стандартного виведення.

-p модель
Змініть шаблон назви версії, позначений приватними наборами версій. За замовчуванням є
/приватний/ використання відповідності без урахування регістру.

Якщо компонент регулярного виразу модель містить два двокрапки поспіль: patt1::patt2,
тоді відповідність на рівні символу буде активована, перевіривши чи версія::символ or
бібліотека::символ сірники модель (де назва символу, версія (якщо є) і
замінюється базова назва бібліотеки символ, версія та бібліотека). Наприклад,

-p 'FOO_VERS.*::_foopriv'
or
-p 'libfoo.so.*::_foopriv'

-e модель
Такий же, як -p але для інтерфейсів, що розвиваються.

-L ldpath
Встановіть LD_LIBRARY_PATH середовище змінна до ldpath перед викликом динамічного
компонувальник. Використовуйте -L "" щоб скасувати налаштування LD_LIBRARY_PATH.

Якщо один із компонентів ldpath це рядок "знайти", потім усі спільні бібліотеки
in файли знайдені, а їхні шляхи вставлені в місце "знайти". Зауважте, що
порядок буде випадковим.

-l бібліотека
Додайте базову назву або повний шлях до спільної бібліотеки бібліотека до списку
об’єкти, які потрібно перевірити для здійснення приватних дзвінків. Цей варіант може зустрічатися більше ніж
один раз у командному рядку і є адитивним. За замовчуванням лише прямі дзвінки від a
бінарні до системних бібліотек перевіряються. The -l перемикач дозволяє перевірити
непрямі виклики, наприклад: app -> supportlib -> systemlib.

-a Перегляньте всі двійкові файли перед перевіркою та зберіть список усіх спільних файлів
об'єкти. Візьміть базове ім’я кожного знайденого спільного об’єкта та дійте так, ніби воно є
зазначено з -l option, а потім запустіть перевірку abicheck. Сюди,
виклики з усіх "внутрішніх" об'єктів програми перевіряються, а не тільки
прямі дзвінки. (Корисно, коли спільні об'єкти не мають своїх залежностей
записано.)

-I Ігноруйте спільні бібліотеки під час перевірки, перевіряйте лише виконувані файли. Сумісний з -а,
бібліотеки спочатку шукатимуться, але потім не перевірятимуться.

-d db-файл, -D dbfile
Вкажіть резервну базу даних символів плоского файлу для динамічної (загальнодоступної чи приватної)
випробування. Ці класифікації будуть використовуватися, якщо бібліотека не має версій (тобто
класифікації не існує в самій бібліотеці). Використовуйте -D лише вказати на це
інформація від dbfile слід використовувати. Лінії в dbfile може бути одним із цих
форми:

бібліотека|символ
бібліотека|клас|символ
бібліотека|FILE=шлях

бібліотека має бути повний шлях до бібліотеки, яку потрібно вказати (це не може бути a
базова назва).

Перша форма позначки символ як приватні.

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

Третя форма вказує на файл шлях слід відкривати на вимогу, коли бібліотека is
вперше зіткнувся. Файл шлях містить рядки перших двох форм, за винятком
бібліотека поле. Третя форма – це прискорення, щоб уникнути обробки багатьох класифікацій
рядків для бібліотек, які ніколи не зустрічалися під час виконання.

-O dbfile
Вкажіть файл перевизначення, щоб змінити класифікацію символів для динамічного
(публічне проти приватного) тест. Формат файлу заміни виглядає так:

бібліотека|символ|клас

Бібліотека може мати повний шлях або базову назву. Якщо бібліотека "__SKIP__", символ
буде ігноруватися для будь-якої бібліотеки, в якій він знаходиться. Клас може бути "загальнодоступним",
«приватний», «еволюційний» або «видалений». Клас "видалений" має спеціальний регістр, значить
символ було видалено з бібліотеки під час деякого випуску. Символ "__ALL__" для
клас "deleted" означає, що вся бібліотека була видалена або нестабільна з інших причин
використовувати.

Приклади:

libfoo.so.1|__bar|приватний
/lib/libxyz.so.1|baz|публ
__SKIP__|__fputwc_xpg5

Ці параметри замінюють будь-яку класифікацію всередині бібліотеки (з бібліотеки
версій, доступний з pvs(1) тощо).

-A файл зі списком
Встановіть бібліотеки ABI, які цікавлять, на бібліотеки, перелічені в файл зі списком (повне
імена шляхів, по одному на рядок). Будуть перевірені лише виклики до цих бібліотек; всі
інші виклики бібліотеки ігноруватимуться.

-s db-файл, -S dbfile
Вкажіть більш розширені бази даних символів для тесту статичного зв’язування. dbfile може бути
список файлів, розділених комами. Якщо файл є статичним архівом (lib*.a), то це так
обробляється для вилучення символів. В іншому випадку це файл бази даних, що складається з
рядки форми символ|бібліотека:модуль наприклад:

shmat|/usr/lib/libc.a:shmsys.o
shmctl|/usr/lib/libc.a:shmsys.o
shmdt|/usr/lib/libc.a:shmsys.o
shmget|/usr/lib/libc.a:shmsys.o
...

Коли всі символи в module.o визначені в додатку, статичне зв’язування
передбачається, що модуль (і відповідний архів бібліотеки). Використовуйте -S , Щоб вказати,
що має виконуватися лише статичний тест зв’язку.

Скористайтесь -S Int виконувати лише перевірку статичних посилань і використовувати внутрішню базу даних.

Скористайтесь -s ніхто or -S ніхто щоб повністю пропустити перевірку статичного зв’язування.

-j вакансія
прогін вакансія паралельно як окремі процеси. Має на увазі -k. В першу чергу призначений для
кілька процесорних машин де вакансія має бути близькою до кількості процесорів.
Вихідні дані збираються у файли tmp і друкуються відразу в кінці виконання як
кожна робота закінчується.

If вакансія тоді є "-", "виявити" або "n". вакансія буде встановлено число в залежності від
кількість процесорів на поточній машині (якщо це можна визначити).

ОПЕРАНДИ


Підтримуються такі операнди:

файли Список двійкових об’єктів програми для перевірки.

ВИХІД


Для кожної проблеми є один рядок (може бути кілька проблем на кожну перевірену двійкову програму), яка
виглядати так:

Якщо проблем не виявлено:
ім'я файлу: В ПОРЯДКУ

Якщо приватне використання символів:
ім'я файлу: ПРИВАТНИЙ (бібліотека:приватна_версія) private_sym

Якщо використання символів розвивається:
ім'я файлу: РОЗВИВАЄТЬСЯ (бібліотека:evoluting_vers) розвивається_сим

Якщо файл статично зв’язаний у бібліотеці системного архіву:
ім'я файлу: STATIC_LINK (архів)

Якщо перевірку файлу було пропущено:
ім'я файлу: ПРОПУСТИТИ (причина)

Під час використання видаленого класу в -O замінити параметр файлу, ці проблеми можуть бути
знайдено:

Якщо символ було видалено з бібліотеки на якомусь випуску:
ім'я файлу: DELETED_SYM: символ/бібліотека

(бібліотека буде "незв'язаним", якщо символ був розв'язаний)

Якщо ціла бібліотека була видалена в певному випуску або нестабільна з інших причин
використання:
ім'я файлу: UNSTABLE_LIB: бібліотека-сонім = бібліотека-стежка

(бібліотека-стежка може бути "файл не знайдено", якщо бібліотеку не вдалося знайти)

Наступні проблеми призведуть до фатальної помилки, якщо не -k використовується варіант:

Якщо динамічний компонувальник не міг вирішити N символи коли ldd -r було запущено:
ім'я файлу: UNBOUND_SYMBOLS: N

Якщо динамічний компонувальник не знайшов динамічних прив’язок:
ім'я файлу: NO_BINDINGS

If ldd -r з LD_DEBUG=файли, прив'язки не вдалося:
ім'я файлу: LDD_ERROR

У цих трьох останніх випадках запустіть ldd -r у двійковому файлі для отримання додаткової інформації про те, що
пішло не так (зверніть увагу, що abicheck пробіжки ldd -r з LD_DEBUG=файли, прив'язки набір). На деяких
системи, з якими динамічний компонувальник не оброблятиме програми SUID LD_DEBUG набір (це зазвичай
призводить до NO_BINDINGS в abicheck вихід).

Зауважте, що якщо ви використовуєте abicheck у спільній бібліотеці (наприклад, libfoo.so), це
має НЕ побудовано с -l либ прапори для запису залежностей його бібліотеки, потім «unbound
Проблема символів дуже ймовірна. Немає нічого, що можна зробити, окрім відновлення
бібліотеку або перевірку двійкового файлу програми, який використовує бібліотеку та використовує файл -l можливість
abicheck.

EXIT СТАТУС


Повертаються такі вихідні значення:

0 Помилок і проблем не знайдено.

1 Сталася фатальна помилка.

2 Жодних фатальних помилок не сталося, але деякі двійкові файли виявили проблеми.

ПРИМІТКИ


Перевіряються лише об’єкти ELF.

У -s -S -d та -O dbfiles символ '#' починає рядок коментаря звичайним способом.

Якщо ви не використовуєте користувацькі збіги "::", які надаються через -p or -e прапори, abicheck can
перевіряйте лише системні бібліотеки, до яких застосовано керування версіями символів (тобто
приватна та/або нова інформація, записана для кожного символу в самій бібліотеці).
Для отримання додаткової інформації про керування версіями символів див. «Посібник із компонування та бібліотек Solaris»
книга відповідей за URL-адресою http://docs.sun.com/ab2/coll.45.13 і команди/скрипт версії
розділ інформаційної сторінки компонувальника GNU "ld".

Шаблони відповідності імені версії символу за замовчуванням не чутливі до регістру
рядки "приватні" і "еволюційні" для приватних і розвиваються випадків відповідно.

Непарні назви файлів, що містять одинарні лапки або новий рядок, будуть пропущені; такий
символи заважають виклику команд через оболонку.

Для рекурсивних каталогів використовуйте знаходити(1) і або зібрати вихідні дані у файл для використання з
-f варіант, або в трубі через:

знайти ... | abicheck -f - ...

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


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

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

Команди Linux

Ad