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

#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