Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ELF and DWARF
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
wedmeed
Программирую на кейле. Стал встречаться с непонятными вещами, именуемыми ELF. Очень часто упоминается про ELF section. В компиляторе для оптимизации есть пункт One ELF section per Function. Попытался было найти объяснения на форуме. но тут еще и про DWARF говорят, только больше запутался. Что это вообще за секции, файлы, с чем и для чего их вообще едят?
andrewlekar
Эльфы и гномы. Че тут непонятного? sm.gif
А вообще на википедии статьи есть про это.
WHALE
вот здесь хорошо расписано.
wedmeed
Цитата(WHALE @ Aug 29 2011, 15:24) *
вот здесь хорошо расписано.

Спасибо, оценил))). Заодно вспомнил линейковскую молодость

Цитата(andrewlekar @ Aug 29 2011, 08:59) *
А вообще на википедии статьи есть про это.

Про это там написано что это за файлы и из чего они состоят (в частности описание секций и сегментов). Я могу представить для чего такие файлы в кейле - помощь линковщику и т.п.. Но объясните, пожалуйста, каким образом получается, что если в кейловской оптимизации поставить галочку "One ELF section per Function", размер готового исполняемого кода сокращается в два раза? Кеил что, сведения линковщика в контроллер зашивает?
Сергей Борщ
QUOTE (wedmeed @ Aug 30 2011, 14:30) *
Кеил что, сведения линковщика в контроллер зашивает?
Линкер подлинковывает только те секции, на которые есть ссылки. Если на функцию нет ссылки - то ее секция не попадет в выходной файл. А если все функции в одной секции - тут уж линкер никак мух от котлет отделить не сможет. Никакой магии.
wedmeed
Цитата(Сергей Борщ @ Aug 30 2011, 17:08) *
Если на функцию нет ссылки - то ее секция не попадет в выходной файл. А если все функции в одной секции - тут уж линкер никак мух от котлет отделить не сможет. Никакой магии.

Тогда по логике должно получаться наоборот - если все функции (и неиспользуемые) в одной секции, то эта секция должна получаться по размеру больше, чем несколько секций с только используемыми функциями. На практике получилось наоборот.
З.Ы. Я ведь правильно понимаю - секция может быть произвольного размера?
Сергей Борщ
QUOTE (wedmeed @ Aug 31 2011, 08:34) *
Тогда по логике должно получаться наоборот - если все функции (и неиспользуемые) в одной секции, то эта секция должна получаться по размеру больше, чем несколько секций с только используемыми функциями.
Да, именно так. И именно так и получается.
QUOTE (wedmeed @ Aug 31 2011, 08:34) *
На практике получилось наоборот.
Вы сами себе противоречите:
QUOTE (wedmeed @ Aug 30 2011, 14:30) *
если в кейловской оптимизации поставить галочку "One ELF section per Function", размер готового исполняемого кода сокращается в два раза?
Итого - компилятор кладет каждую функцию в отдельную секцию, линкер берет только необходимые секции => размер уменьшается. Все согласно теории.

Да, секция может быть произвольного размера. Есть какие-то ограничения на уровне ОС, но у вас нету диска такого объема wink.gif
wedmeed
Цитата(Сергей Борщ @ Aug 31 2011, 10:21) *
Итого - компилятор кладет каждую функцию в отдельную секцию, линкер берет только необходимые секции => размер уменьшается. Все согласно теории.

Спасибо, неправильно перевел. До этого понимал эту строку как одна секция для всех функций. Пошел за учебником по инглишу... laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.