Фикс символов
От: IID Россия  
Дата: 28.03.17 14:39
Оценка:
Дано:
1) *.so бинарник Б1, собранный 3ей стороной, без отладочных символов.
2) исходники этого бинарника, из которых мною собирается ПОЧТИ такой же бинарник Б2, с символами.

Проблема в том что отлаживать надо Б1 (без возможности его замены), а различия в символах усугубляется с ростом смещения внутри файла. В итоге gdb, загружая символы из Б2, показывает полную ересь. Хотя 90+% функций абсолютно идентичны, а у остальных изменения минимальны.

Есть ли готовый инструмент/скирпт, который подфиксит оффсеты в символах Б2, используя экспорты Б1 как реперные точки ?
kalsarikännit
Отредактировано 28.03.2017 23:47 IID . Предыдущая версия .
Re: Фикс символов
От: landerhigh Пират  
Дата: 28.03.17 23:10
Оценка:
Здравствуйте, IID, Вы писали:

IID>Проблема в том что отлаживать надо Б1 (без возможности его замены),


Может, я чего-то не догоняю, но в чем смысл отладки того, что заменить нельзя?

Или суть в том, что отлаживаемый бинарник должен быть собран именно таким образом и никак иначе?
Вроде бы есть возможность символы извлечь и сложить во внешний файл.
www.blinnov.com
Re[2]: Фикс символов
От: IID Россия  
Дата: 28.03.17 23:23
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Может, я чего-то не догоняю, но в чем смысл отладки того, что заменить нельзя?


Масса причин. Например он лежит в ROM, который не изменить.

L>Или суть в том, что отлаживаемый бинарник должен быть собран именно таким образом и никак иначе?


Не совсем суть, но да, это тоже важно.
Прим.: отладка не обязательно предполагает наличие проблемы в этом стороннем бинарнике. Иными словами — цель в самой возможности прошагать какую-то его функцию.

L>Вроде бы есть возможность символы извлечь и сложить во внешний файл.


Это ничего не даст. gdb и так прекрасно жрёт нематчащийся бинарник. Надо символы подфиксить.
kalsarikännit
Re[3]: Фикс символов
От: landerhigh Пират  
Дата: 28.03.17 23:34
Оценка: -1
Здравствуйте, IID, Вы писали:

L>>Или суть в том, что отлаживаемый бинарник должен быть собран именно таким образом и никак иначе?


IID>Не совсем суть, но да, это тоже важно.

IID>Прим.: отладка не обязательно предполагает наличие проблемы в этом стороннем бинарнике. Иными словами — цель в самой возможности прошагать какую-то его функцию.

Отлавливаешь предполагаемй косяк вовне бинарника? А методом вынесения предположения и написания на основе него синтетичского теста никак?
Просто не могу представить необходимость именно пошаговой интерактивной отладки при доступе к исходникам.

IID>Это ничего не даст. gdb и так прекрасно жрёт нематчащийся бинарник. Надо символы подфиксить.


Собрать как требует процесс, символы вытащить наружу, залить бинарник в пзу. Должно сработать, разве нет?
www.blinnov.com
Re[4]: Фикс символов
От: IID Россия  
Дата: 28.03.17 23:46
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Отлавливаешь предполагаемй косяк вовне бинарника? А методом вынесения предположения и написания на основе него синтетичского теста никак?

L>Просто не могу представить необходимость именно пошаговой интерактивной отладки при доступе к исходникам.

Я в курсе твоей любви к покрытию тестами. Уверяю, это не тот случай. Не надо придумывать другую задачу. Надо решить именно эту, в озвученных рамках. Тем более что особой технической сложности она не представляет. Но что-то неохота закапываться самому в DWARF формате.

L>Собрать как требует процесс, символы вытащить наружу, залить бинарник в пзу. Должно сработать, разве нет?


Нет.
По условиям задачи надо отлаживать именно оригинальный бинарник. Изменить нельзя. Только не спрашивай почему. Это вводная. ПЗУ, отсутствие доступа, подпись, зависимости (от не на 100% совпадающих сорцов) — что угодно, выбирай по-вкусу.
kalsarikännit
Re[5]: Фикс символов
От: landerhigh Пират  
Дата: 29.03.17 08:52
Оценка:
Здравствуйте, IID, Вы писали:

IID>Нет.

IID>По условиям задачи надо отлаживать именно оригинальный бинарник. Изменить нельзя. Только не спрашивай почему. Это вводная. ПЗУ, отсутствие доступа, подпись, зависимости (от не на 100% совпадающих сорцов) — что угодно, выбирай по-вкусу.

Не думаю, что конкретно такой инструмент существует. Выделенное вообще делает задачу несколько слишком сложной в общем случае.
Разве только каждый раз при отладке вручную матчить с исходниками.
www.blinnov.com
Re: Фикс символов
От: kov_serg Россия  
Дата: 31.03.17 11:45
Оценка:
Здравствуйте, IID, Вы писали:


IID>Дано:

IID>1) *.so бинарник Б1, собранный 3ей стороной, без отладочных символов.
IID>2) исходники этого бинарника, из которых мною собирается ПОЧТИ такой же бинарник Б2, с символами.

IID>Проблема в том что отлаживать надо Б1 (без возможности его замены), а различия в символах усугубляется с ростом смещения внутри файла. В итоге gdb, загружая символы из Б2, показывает полную ересь. Хотя 90+% функций абсолютно идентичны, а у остальных изменения минимальны.


IID>Есть ли готовый инструмент/скирпт, который подфиксит оффсеты в символах Б2, используя экспорты Б1 как реперные точки ?


Вам придётся подогнать порядок объектников с помощью линковщика, он это умеет. Можно по фрагментам бинарного кода ориентироваться.

ftp://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_chapter/ld_3.html
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Using_ld_the_GNU_Linker/sections.html
http://stackoverflow.com/questions/15499006/put-gcc-libs-data-in-specific-section
http://www.embedded.com/design/mcus-processors-and-socs/4026080/Building-Bare-Metal-ARM-Systems-with-GNU-Part-3
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.