Как правило, невозможно создать правильные таблицы раскрутки из машинного кода в объектном файле.Для начала, некоторые конструкции довольно сложно точно представить в раскручиваемой информации.В качестве примера можно привести Retpolines.
Большая практическая проблема заключается в том, что информация о разматывании DWARF структурирована по функциям.Пустой объектный файл (без отладочной информации и только минимальной таблицы символов) не захватывает информацию о границах функций.Без этого невозможно сказать, является ли местоположение в файле целью вызова функции и началом функции.Аналогичным образом, вызов функции возврата не может быть последней инструкцией в функции, даже если за ней не следует инструкция возврата.Может быть возможно использовать данные о перемещении.Есть несколько инструментов, которые пытаются определить границы функций;каждый дизассемблер до некоторой степени делает это.
Лучше всего найти функции, которые не удалось развернуть, и выяснить, почему, а затем компенсировать это, используя пользовательские данные для раскрутки или плагин GDB.Как сказал Алексей Фрунзе , полное преобразование будет довольно утомительным.