LINUX.ORG.RU

Лезет .data.impure_data из newlib, помогите избавиться

 , , , ,


0

1

https://github.com/puzrin/dispenser ветки dev и standalone

Скрещиваю stm32cubeMX с PlatformIO. Хочется с одной стороны быстро мышкой валять конфиги, потому что очень много корректировок. А с другой, чтобы с самим проектом было удобно работать, т.к. конфиги - далеко не все.

Ну, в общем, оно работает, но захотелось пойти дальше - отказаться от того stm32cube который идет с pio, и компилять те сорцы которые родит куб. Смысл простой - когда все из одного места, меньше гимора что разъедутся версии инициализаторов и основного кода.

В общем, покопался в сорцах, почитал доку и слепил необходимые скрипты, все в ветке «standalone». И оно даже ок. Но вылезла проблема - видимо я все-таки что-то продолбал, и билд теперь отжирает килобайт оперативки под какую-то пургу «.data.impure_data». Вроде в интернетах народ с таким знаком, и рецепты дает, но я уже сто раз ключики сборки перепроверил, не нашел косяка.

Кто-нибудь может помочь разобраться? Я в сях и Scons совсем жопорук.

★★★★★

Можно отследить все вызовы компилятора, линкера этим stm32cubeMX. Например, подменив вызываемые из этой IDE бинарники компилятора/линкера и проч... каким-то скриптом, который бы записывал все передаваемые аргументы в какой-нибудь лог, потом бы просто непосредственно сам бинарь gcc вызывал или что там еще

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)

Ух ты, посмотрел свои map-файлы - тоже в паре проектов появились эти секции. Я их проглядел потому, что они у меня не такие большие, всего по 0x60 байтов. А небольшие они потому, что я передал линкеру ключ --specs=nano.specs.

Надо будет поискать, откуда это берётся…

Beewek ★★★
()
Ответ на: комментарий от Beewek

https://github.com/puzrin/dispenser/blob/standalone/support/stm32_build_extra.py

Эти ключи я проверял в первую очередь. Собственно, я сравнивал 2 скрипта platformio (под конкретный фреймворк и дефолтный), и постарался свести разницу по ключикам к нулю.

Там какая-то более тонкая разница.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Я рулю ключиками напрямую, поэтому вижу чётко. Вот, например, проект.

Если в makefile закомментировать строчку

''' LD_FLAGS += –specs=nano.specs '''

, то размер секции data сразу вырастает на 968 байт.

Так что, вероятно, нужный флаг из твоего скрипта platformio не попадает на вход компилятору.

Beewek ★★★
()
Ответ на: комментарий от Beewek

Нормально там все с флагами. Оказаось что результат завесел от способа передачи пути к линковочному файлу, ХЗ почему.

https://github.com/puzrin/dispenser/commit/0b855b58e1e2ac963f8638ebdaf468b4ee396822

Если в пост-скрипте через SCons ставить LDSCRIPT_PATH, тоже работает, результат идентичный.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.