Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > загрузка elf в память


Автор: slater 10.6.2010, 20:07
всем привет!

расскажите плиз как происходит загрузка elf в память(или в какую сторону копать), какой модуль подгружает исполняемый файл в память?

например, если я в bash просто запускаю обычно скомпилированную программу "Hello, world!" - что происходит?

может быть некорректно поставлен вопрос, прошу прощения, заранее блангодарен за любую помощь

спасибо 

Автор: MAKCim 10.6.2010, 23:11
кратко
создается процесс через fork()/vfork(), в новом процессе вызывается execve()
управление передается загрузчику ядра (fs/binfmt_elf.c -> load_elf_binary()), который отображет бинарник и динамический загрузчик (ld.so)
далее управление передается из ядра на entry-точку бинарника или динамического загрузчика
в случае последнего после передачи управления он отображает остальные либы

Автор: slater 11.6.2010, 17:56
MAKCim, очередной раз очень благодарен вам за ответ

т.е. в итоге сам исполняемый файл загружается в оперативную память

вот, а кто его туда копирует? и где можно хорошо и более глубоко прочесть по какому адресу копируются данные, по какому адресу копируются локальные перенные и т.д. т.е. те различные области кода и данных, которые расписаны в заголовке самого исполняемого файла в формате elf?
может посоветуете литературу где про это расписано? желательно на английском

Автор: xvr 11.6.2010, 18:00
Цитата(slater @  11.6.2010,  17:56 Найти цитируемый пост)
вот, а кто его туда копирует? 
Ядро. И не копирует, а отображает через мэпирования файла в память (a-la mmap)

Цитата(slater @  11.6.2010,  17:56 Найти цитируемый пост)
по какому адресу копируются данные, по какому адресу копируются локальные перенные?
По адресам, указанным в таблице секций (точнее program header) в самом elf файле. Читайте доки по структуре elf файла


Автор: EvilsInterrupt 11.6.2010, 21:53
http://www.google.ru/url?sa=t&source=web&cd=14&ved=0CCoQFjADOAo&url=http%3A%2F%2Frjohnson.uninformed.org%2FPresentations%2F200409%2520Toorcon%2520-%2520Hooking%2520the%2520Linux%2520ELF%2520Loader%2Fhooking_the_linux_ELF_loader.pdf&ei=s4USTPrtMo-aOIn4uYsI&usg=AFQjCNHEZNTvoEZdP_kHJivxwUKpe7Jsgg&sig2=48wy5zgaFYY-daSszup4lg

Автор: slater 11.6.2010, 22:05
спасибо вам ребята большое

посоветуйте что еще почитать пожалуйста про это, про то как и куда загружаются блоки исполняемого файла

Автор: nanoo 20.6.2010, 15:10
в спеках elf всё есть.

Автор: xvr 20.6.2010, 21:13
http://www.skyfree.org/linux/references/ELF_Format.pdf
так же рекомендую утилиты objdump и readelf для изучения реальных elf файлов - изучение примеров гораздо эффективнее голого чтения документации

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)