Инструменты поддержки процесса верификации¶
В данном репозитории собран ряд утилит для изучения исходных кодов модуля ядра Linux и для работы с ними. Программы имеют внешние зависимости. Для того, чтобы их установить необходимо выполнить команды:
cpan cpanm cpanm --installdeps .Для удобства работы с программами можно задать переменные окружения:
- CURRENT_PROJECT - директория с исходными кодами исследуемого модуля ядра Linux
- CURRENT_KERNEL - директория с исходными кодами ядра Linux с которым сочетается модуль
Краткое описание функциональности программ¶
Каждая из программ имеет собственную man документацию, которая доступна по ключу --help. Здесь сведено вместе краткое описание программ, их функциональности и предназначения.
Трансформация исходных кодов¶
Данные программы используются для работы с исходными кодами и разработки спецификаций.
- dismember - из исходных кодов вытаскиваются все зависимости для конкретных функций так, чтобы компилятор мог создать отдельный объектный файл. У инструментов верификации вызывает затруднение работа с большими объёмами кода, что проявляется в существенном замедлении их работы. Программа позволяет многократно сократить объём исходного кода за счёт того, что неиспользуемый код исключается. В получившемся коде функции расположены в соответствии с графом их вызовов, структуры и остальные сущности расположены так, чтобы программисту было наиболее удобного работать с получившимся набором исходных кодов.
- merge - спецификации переносятся с одного набора исходных кодов на другой. Осуществляется полуавтоматических образом. В случае невозможности автоматического разрешения конфликтов вызывается внешняя программа. Расположение функций в файлах не имеет значения.
Информация из исходных кодов¶
Данные программы предназначены для изучения исходных кодов модуля ядра как самостоятельного объекта, так и их интерфейсов взаимодействия с ядром. Используются при исследовании новых релизов исходных кодов, для подготовки отчётов и планирования работ.
- graph - строит карту исходных кодов. Карта представляет собой граф вызовов функций модуля ядра.
- headers - строит карту подключений заголовочных файлов в исходном коде
- calls - программа для анализа и сбора статистики вызовов функций и функциональных макросов в модуле ядра. Автоматическое определение сущности функция/макрос, и места определения ядро/модуль.
- lsm_diff - программа для анализа интерфейса lsm ядра и его использования в модуле ядра
- stapgen - по исходным кодам ядра создаёт скрипт для systemtap. Скрипт в динамике перехватывает вызовы lsm интерфейса ядра, осуществляет логирование параметров и контекста вызова функции. Позволяет отследить какие действия в ОС, приводят к вызову конкретных функций интерфейса lsm.
- get_preprocessed - осуществляет частичный(раскрываются только макросы ядра) либо полный препроцессинг исходных кодов модуля ядра
- recursion - программа для детектирования рекурсии(прямой/косвенной) в исходных кодах модуля ядра Linux
Updated by Alexey Khoroshilov over 9 years ago · 1 revisions