Библиотека Rust для проверки двоичных файлов .rlib

Я ищу способ загрузить и проверить двоичные файлы .rlib, сгенерированные rustc. Я безуспешно рыскал по стандартной библиотеке. Мое предположение состоит в том, что .rlib содержит всю информацию о типе, необходимую для статических программ проверки типов, которые "внешние ящики" его. rustc::metadata — вот где моя охота закончилась. Я не могу понять, предназначены ли структуры, доступные на данный момент в компиляторе, как точки входа для пользователей, или они являются исключительно промежуточными абстракциями, зависящими от цепочки ранее инициализированных данных.

В качестве альтернативы, если есть способ выгрузить .rlib на стандартный вывод в разборчивой форме, то это тоже фантастика. Я попробовал /usr/bin/nm, но он, похоже, не включает сигнатуры типов функций. Может быть, я что-то упускаю.

В любом случае, я работаю над утилитой редактора для emacs, которая, я надеюсь, в какой-то момент предоставит контекстуально релевантную информацию, такую ​​как доступные методы, элементы модуля и их типы и т. д. Я был бы очень признателен за любые подсказки, которые есть у кого-либо.


person drhodes    schedule 07.07.2014    source источник
comment
Все метаданные обрабатываются rustc::metadata, но это немного беспорядок ; это довольно старый код, и он вырос органически... конечно, не предназначен для внешнего использования.   -  person huon    schedule 07.07.2014


Ответы (1)


Файл .rlib представляет собой файл архива .ar. Вы можете использовать readelf для чтения его содержимого.

Попробуйте readelf -s <your_lib>.rlib. Имя типа может быть смешано/украшено компилятором, поэтому оно может не совпадать с именем в файле .rs.

person palazzo train    schedule 05.01.2016
comment
К вашему сведению, если вам нужно разобрать символы, вы можете cargo install rustfilt сейчас: github.com/luser/rustfilt - person Ted Mielczarek; 17.05.2016