Ques 0 25 апреля, 2019 Опубликовано 25 апреля, 2019 · Жалоба Наткнулся на непонятную вещь: если я собираю "с нуля" (т.е. после make clean), то получаю: text data bss dec hex filename 5612 16 1560 7188 1c14 mk/pl2303.elf Но стоит мне просто обновить дату любого файла (просто командой touch file), как чудесным образом итоговый размер меняется: text data bss dec hex filename 6224 16 1556 7796 1e74 mk/pl2303.elf При этом абсолютно все объектные файлы остаются неизменными... Версия gcc: 8.2.1 (свежий из армовской сборки, "родной" из репозитория не использую, т.к. там какая-то проблема с софтовым делением для STM32F0). Обновил буквально только что, до этого у меня был 7.3.1, и там собственно на эти проблемы я и наткнулся! Вряд ли виноват ccache, т.к. иначе у меня arm-none-eabi-gcc была бы симлинком на ccache, а он — симлинк на arm-none-eabi-gcc-8.2.1 На удивление оба бинарника одинаково нормально работают при прошивке на МК. Но не нравится вот такое непонятное поведение: как ни с того, ни с сего размер собираемого файла может меняться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 25 апреля, 2019 Опубликовано 25 апреля, 2019 · Жалоба Тут логично было бы map-файлы сравнить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ques 0 25 апреля, 2019 Опубликовано 25 апреля, 2019 · Жалоба Вот diff — на первый взгляд ничего криминального... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 25 апреля, 2019 Опубликовано 25 апреля, 2019 · Жалоба Лучше как два отдельных файла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ques 0 25 апреля, 2019 Опубликовано 25 апреля, 2019 (изменено) · Жалоба После первого запуска make, и после второго pl2303.map0 pl2303.map1 Изменено 25 апреля, 2019 пользователем Ques Увидел, что можно вложить файлы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ques 0 26 апреля, 2019 Опубликовано 26 апреля, 2019 · Жалоба Более-менее причесал код, но проблема с изменением размера бинарников не исчезла. Интересно, что в других "проектах" такой проблемы нет! Чертовщина какая-то... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 26 апреля, 2019 Опубликовано 26 апреля, 2019 · Жалоба 1 час назад, Ques сказал: Более-менее причесал код, но проблема с изменением размера бинарников не исчезла. Интересно, что в других "проектах" такой проблемы нет! Чертовщина какая-то... для интереса собрал, всегда одинаковый размер: text data bss dec hex filename 6468 16 1572 8056 1f78 mk/pl2303.elf jury093@jury093:~/src/eddyem/stm32samples/F0-nolib/pl2303$ touch main.c text data bss dec hex filename 6468 16 1572 8056 1f78 mk/pl2303.elf jury093@jury093:~/src/eddyem/stm32samples/F0-nolib/pl2303$ arm-none-eabi-gcc --version arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2018-q4-major) 8.2.1 20181213 (release) [gcc-8-branch revision 267074] Copyright (C) 2018 Free Software Foundation, Inc. там более полный лог: https://pastebin.com/rcVRZeTk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ques 0 26 апреля, 2019 Опубликовано 26 апреля, 2019 · Жалоба Непонятно вообще... Может, это ccache выпендривается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 26 апреля, 2019 Опубликовано 26 апреля, 2019 · Жалоба Разница появляется на сборке usb. Точнее на перестановке местами функций во флеш памяти, и как следствие - изменение расстояния до переменных и констант. В некоторых случаях адрес получается коротким. Смена даты создания (не изменения!!!) файла влияет на порядок обработки компилятором в случае раздельной компиляции. Сначала самое старое, оно возможно не требует обработки и может быть кэшировано. Эта функция пришла из мира больших машин, и порядком поднасрала во многих местах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ques 0 27 апреля, 2019 Опубликовано 27 апреля, 2019 · Жалоба Что значит "адрес получается коротким"? Это ж только в пиках так было, что можно было либо обычную адресацию использовать, либо "короткую". А здесь такого быть не должно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 27 апреля, 2019 Опубликовано 27 апреля, 2019 · Жалоба 5 часов назад, Ques сказал: А здесь такого быть не должно... Мир не идален. Здесь такое тоже есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 27 апреля, 2019 Опубликовано 27 апреля, 2019 · Жалоба Только +10% по объему как-то многовато. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 27 апреля, 2019 Опубликовано 27 апреля, 2019 · Жалоба Взять листинги одной и той же функции, но имеющей разный размер в разных вариантах компиляции и сравнить. Чего гадать-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 28 апреля, 2019 Опубликовано 28 апреля, 2019 · Жалоба На gcc нормальный листинг получить не простая задача. Может кто поделится таинством? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 28 апреля, 2019 Опубликовано 28 апреля, 2019 · Жалоба objdump -d -S xxx.axf > xxx.lst Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться