#binaryfiles #rust #typeinfo
#двоичные файлы #Ржавчина #typeinfo
Вопрос:
Я ищу способ загружать и проверять двоичные файлы .rlib, созданные rustc. Я искал стандартную библиотеку без особой удачи. Я предполагаю, что .rlib содержит всю информацию о типе, необходимую для статического ввода программ проверки, которые «помещают ее во внешний ящик». rustc::metadata — вот где закончилась моя охота. Я не могу точно понять, предназначены ли структуры, доступные на данный момент в компиляторе, в качестве точек входа для пользователей, или они являются исключительно промежуточными абстракциями, зависящими от цепочки ранее инициализированных данных.
В качестве альтернативы, если есть способ выгрузить .rlib в стандартный вывод в анализируемой форме, то это тоже фантастика. Я попробовал / usr/bin / nm, но, похоже, он исключал сигнатуры типов функций. Возможно, я что-то упускаю.
В любом случае, я работаю над утилитой редактирования для emacs, которая, я надеюсь, в какой-то момент предоставит контекстуально релевантную информацию, такую как доступные методы, элементы модуля и их типы и т.д. Я был бы очень признателен за любые подсказки, которые у кого-либо есть.
Комментарии:
1. Все метаданные обрабатываются
rustc::metadata
, но это небольшая путаница; это довольно старый код, и он вырос органично … конечно, не предназначен для внешнего использования.
Ответ №1:
Файл .rlib является файлом ar-архива. Вы можете использовать readelf
для чтения его содержимого.
Попробуйте readelf -s <your_lib>.rlib
. Имя типа может быть перепутано / оформлено компилятором, поэтому оно может быть не совсем таким, как в файле .rs.
Комментарии:
1. К вашему сведению, если вам нужно разобрать символы, вы можете
cargo install rustfilt
сейчас: github.com/luser/rustfilt