Guardant Code, map_parse и флажки оптимизации
Наткнулся на интересную проблему (номер 1) при сборке функций для ключа. Похоже что неверно формируется файл bmap, предлагаемый в сдк мэйкфайл зачем то одновременно собирает две версии кода, при этом неверно определяя присутствие среды winarm, получается что версия для старых ключей оказывается (на моем компьютере с установленным mingw, ) собраной под х86, я бы с этим смирился, но оказывается мейкфайл явно по ошибке использует эту версию для создания bmap файла для ключа, вот строки из него
@if [ -e ".obj/1" ]; then $(MAP2BIN) .out/$(TARGET)1.map .out/$(TARGET)1.bin
.out/$(TARGET)1.bmap ; fi;
@if [ -e ".obj/2" ]; then $(MAP2BIN) .out/$(TARGET)1.map .out/$(TARGET)2.bin .out/$(TARGET)2.bmap ; fi;
видно что версия 2( для ключа 2 поколения) использует мап файл от первой версии! Далее оказывается что этот некорректно созданный бмап файл работает, если же сделать его корректно, программа работы с ключами отказывается его загружать.
Проблема номер два , опять же связанная с map_parse.exe, если указать флажки оптимизации
CFLAGS += -ffunction-sections -fdata-sections
и для линкера флаг
LDFLAGS +=,--gc-sections
,то программа загружается в ключ но ведет себя непредсказуемо и вызывает сбой, та же программа собранная без вышеуказанных ключей работает без ошибок. Я предполагаю, что такое поведение связано с некорректной работой утилиты map_parse и соотв некорректным файлом bmap.
Подскажите пожалуйста как решить данные проблемы. Также хотелось бы узнать где можно найти описание файла bmap и утилиты map_parse, а также как проверить корректность ее работы.
Вот картинка, слева рабочий бмап файл созданый исходной версией мейкфайла, справа бмап созданый с использованием родного мап файла и соотв исправленый мейкфайл:
http://neekeetos.narod.ru/bmap_sample.png