Привет Alexander!
01 Apr 06 08:36, Alexander Zabairatsky писал Alex Mogilnikov:
AM>> более правильный вопрос "как не включать в проект модули AM>> _clear_bss.o и _copy_data.o": -nostdlib при линковке.
AZ> Вероятно, более правильно было бы все-таки при линковке подключать до AZ> stdlib свою пустую "заглушку" _data_bss_nonclear, написанную на асме,
Зачем же на асме??? :)
AZ> содержащую оба эти символа и не имеющую ни одного байта кода. Только AZ> вот не знаю, можно ли это сделать в гнутой системе программирования.
Я думаю, самый правильный вариант предложил Кирилл: --defsym=value. Я как-то забыл, что есть такая фича. Сам никогда для AVR библиотеками не пользуюсь, поэтому у меня -nostdlib подавляет сразу все позывы линкера прилинковать что-либо непрошенное.
AZ> И, кстати, что это за механизм вставки блока кода непосредственно по AZ> встреченному в объектнике внешнему символу?
Есть неопределенный символ __do_copy_data. Линкер просматривает библиотеку и видит в ней модуль _copy_data.o, в котором определен символ __do_copy_data. "Вот ты-то мне как раз и нужен!" - восклицает линкер и загружает _copy_data.o из библиотеки.
AZ> Я всегда считал, что AZ> объявив какой-то символ глобальным, я могу ссылаться на него в AZ> адресном поле команды или посредством адресной константы (указателя), AZ> а линкер положит этот внешний код туда, куда ему удобно (или куда я AZ> его попрошу) и разрешит мои ссылки на него.
Все так и есть.
AZ> А тут прямое включение кода...
Что ты подразумеваешь под словами "прямое включение кода"? Линкер просматривает указанные ему библиотеки строго в том порядке, в котором они ему указаны, с учетом опций -( и -). Загружен будет первый библиотечный модуль, содержащий символ, неопределенный на данный момент. И загрузит он его именно куда ты его попросишь, а не куда ему удобно. Hа все это есть строгие правила. Если библиотечный модуль не содержит ничего из списка неопределенных на данный момент символов, он не будет загружен.
Всего наилучшего, [Team PCAD 2000] Алексей М. ... О сколько нам открытий чудных готовит открывашки крюк!