АнглийскийФранцузскийИспанский

Ad


Значок OnWorks

abicompat - Интернет в облаке

Запустите abicompat в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда abicompat, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


abicompat - проверить совместимость с ABI

abicompat проверяет, что приложение, которое ссылается на данную разделяемую библиотеку, все еще
ABI совместим с последующей версией этой библиотеки. Если новая версия
библиотека вводит несовместимость ABI, затем abicompat намекает пользователю, что именно
что несовместимость есть.

ПРИЗЫВ


abicompat [параметры] [ ]

ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ


· --Помогите

Вывести краткую справку о команде и выйти.

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

Вывести версию программы и выйти.

· --list-undefined-символы | -u

Вывести список неопределенных символов приложения и выйти.

· --show-базовые-имена | -b

В итоговом отчете, созданном инструментом, эта опция заставляет приложение и
библиотеки могут упоминаться только по их базовым именам; не полным абсолютным именем. Этот
может быть полезен для использования в сценариях, которые хотят сравнить имена приложения и
библиотеки независимо от их имен каталогов.

· --app-debug-info-dir

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

· --lib-debug-info-dir1

Задайте путь к каталогу, в котором будет отладочная информация первой версии
общей библиотеки предполагается разместить. Это полезно для общей библиотеки
двоичные файлы, для которых отладочная информация находится в отдельном наборе файлов.

· --lib-debug-info-dir2

Задайте путь к каталогу, в котором будет отладочная информация второй версии
общей библиотеки предполагается разместить. Это полезно для общей библиотеки
двоичные файлы, для которых отладочная информация находится в отдельном наборе файлов.

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

· - слабый режим

Это запускает слабый режим Abicompat. В этом режиме только одна версия
требуется библиотека. То есть abicompat вызывается следующим образом:

abicompat - слабый режим

Обратите внимание, что - слабый режим опцию можно даже опустить, если только одна версия
библиотека предоставляется вместе с приложением; в этом случае, Abicompat автоматически
переключается на работу в слабом режиме:

Abicompat

В этом слабом режиме типы функций и переменных, экспортируемых библиотекой, и
потребляется приложением (например, символы этих функций и переменных
не определены в приложении и определены и экспортируются библиотекой)
по сравнению с версией этих типов, ожидаемой приложением. И если эти
две версии типов разные, Abicompat сообщает пользователю, в чем различия
есть.

Другими словами, в этом режиме Abicompat проверяет, что типы функций и
переменные, экспортируемые библиотекой, означают то же, что и приложение
ожидает, что касается ABI.

Обратите внимание, что в этом режиме Abicompat не обнаруживает экспортируемые функции или переменные
(символы), которые ожидаются приложением, но удалены из библиотеки.
Вот почему он называется слабый Режим.

ВЕРНУТЬ ЦЕННОСТИ:


Код выхода из Abicompat равно 0, если ABI двоичных файлов
сравниваемые равны или не равны нулю, если они отличаются или если инструмент обнаружил ошибку.

В последнем случае код выхода представляет собой битовое поле шириной 8 бит, в котором каждый бит имеет
конкретное значение.

Первый бит, имеющий значение 1, назван ABIDIF_ERROR означает, что произошла ошибка.

Второй бит, имеющий значение 2, назван ABIDIFF_USAGE_ERROR означает, что в пути произошла ошибка
пользователь вызвал инструмент. Это может быть установлено, например, если пользователь вызвал инструмент
с неизвестным переключателем командной строки, с неправильным номером или аргументом и т. д. Если этот бит
установить, затем ABIDIF_ERROR бит также должен быть установлен.

Третий бит со значением 4 с именем ABIDIFF_ABI_CHANGE означает, что ABI двоичных файлов
по сравнению разные.

Четвертый бит, имеющий значение 8, назван ABIDIFF_ABI_INCOMPATIBLE_CHANGE означает ABI
сравниваемые двоичные файлы несовместимы. Если этот бит установлен, то
ABIDIFF_ABI_CHANGE бит также должен быть установлен. Если ABIDIFF_ABI_CHANGE установлен и
ABIDIFF_INCOMPATIBLE_CHANGE is НЕ установлен, то это означает, что сравниваемые ABI могут
или может быть несовместимо. В этом случае человеку необходимо просмотреть изменения ABI.
чтобы решить, совместимы они или нет.

Остальные биты на данный момент не используются.

ИСПОЛЬЗОВАНИЕ ПРИМЕРЫ


· Обнаружение возможной несовместимости ABI в новой версии разделяемой библиотеки:

$ кошка -n test0.h
1 структура
2 {
3 инт м0;
4
5 фу ()
6: m0 ()
7 {}
8};
9
10 футов *
11 first_func ();
12
13 недействительно
14 second_func (foo &);
15
16 недействительно
17 third_func ();
$

$ cat -n test-app.cc
1 // Компилировать с помощью:
2 // g ++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #include "test0.h"
5
6 инт
7 основных ()
8 {
9 foo * f = first_func ();
10 секундная функция (* е);
11 возврат 0;
12}
$

$ кошка -n test0.cc
1 // Скомпилируйте это с помощью:
2 // g ++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 #include "test0.h"
5
6 футов *
7 first_func ()
8 {
9 foo * f = новый foo ();
10 возврат f;
11}
12
13 недействительно
14 second_func (foo &)
15 {
16}
17
18 недействительно
19 third_func ()
20 {
21}
$

$ кошка -n test1.h
1 структура
2 {
3 инт м0;
4 символа m1; / * <- сюда добавлен новый участник! * /
5
6 фу ()
7: m0 (),
8 м1 ()
9 {}
10};
11
12 футов *
13 first_func ();
14
15 недействительно
16 second_func (foo &);
17
18 недействительно
19 third_func ();
$

$ кошка -n test1.cc
1 // Скомпилируйте это с помощью:
2 // g ++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #include "test1.h"
5
6 футов *
7 first_func ()
8 {
9 foo * f = новый foo ();
10 возврат f;
11}
12
13 недействительно
14 second_func (foo &)
15 {
16}
17
18 / * Прокомментируем определение third_func ()
19 недействительно
20 third_func ()
21 {
22}
23 * /
$

· Скомпилируйте первую и вторую версии библиотек: libtest-0.so и
libtest-1.so:

$ g ++ -g -Wall -shared -o libtest-0.so test0.cc
$ g ++ -g -Wall -shared -o libtest-1.so test1.cc

· Скомпилируйте приложение и свяжите его с первой версией библиотеки,
создавая тестовое приложение двоичный:

$ g ++ -g -Wall -o тест-приложение -L. -ltest-0.so test-app.cc

· Теперь используйте Abicompat чтобы узнать, совместим ли libtest-1.so с приложением ABI с учетом
в ABI libtest-0.so:

Тестовое приложение $ abicompat libtest-0.so libtest-1.so
ELF-файл test-app может быть несовместим с ABI с libtest-1.so из-за различий с libtest-0.so ниже:
Сводка изменений функций: 0 удалено, 2 изменено, 0 добавлено функций
Сводка изменений переменных: 0 удалено, 0 изменено, 0 добавлена ​​переменная

2 функции с некоторым косвенным изменением подтипа:

[C] 'function foo * first_func ()' имеет некоторые косвенные изменения подтипа:
Тип возврата изменен:
в указывает на тип 'struct foo':
размер изменен с 32 до 64 бит
Вставка 1 элемента данных:
'char foo :: m1', со смещением 32 (в битах)
[C] 'function void second_func (foo &)' имеет некоторые косвенные изменения подтипа:
параметр 0 типа 'foo &' имеет изменения подтипа:
ссылочный тип 'struct foo' изменен, как сообщалось ранее

$

· Теперь используйте слабый режим abicompat, то есть предоставляя только приложение и
новая версия библиотеки:

$ abicompat - тестовое приложение слабого режима libtest-1.so
функции, определенные в библиотеке
'libtest-1.so'
есть подтипы, которые отличаются от того, какое приложение
"тестовое приложение"
надеется:

функция foo * first_func ():
Тип возврата изменен:
в указывает на тип 'struct foo':
размер изменен с 32 до 64 бит
Вставка 1 элемента данных:
'char foo :: m1', со смещением 32 (в битах)

$

Используйте abicompat в Интернете с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad