OSDev http://osdev.su/ |
|
Определить размер ELF файла http://osdev.su/viewtopic.php?f=6&t=311 |
Страница 1 из 1 |
Автор: | KIV [ 26 фев 2010, 21:29 ] |
Заголовок сообщения: | Определить размер ELF файла |
Можно ли как-нибудь определить размер ELF-файла только по его заголовку? Я вроде полей отвечающих за это не видел... |
Автор: | SII [ 26 фев 2010, 22:48 ] |
Заголовок сообщения: | Re: Определить размер ELF файла |
Вот это не скажу, с эльфами не разбирался. Когда-нибудь придётся, но нескоро... Кстати, а что понимать под размером? Место на диске? Но с длиной собственно содержательной части файла это может быть и не связано (как не связано для PE-файлов). |
Автор: | KIV [ 26 фев 2010, 23:45 ] |
Заголовок сообщения: | Re: Определить размер ELF файла |
Размер содержательной части файла. У меня есть буфер неизвестного размера. В нём ELF файл. Мне надо его скопировать в другой буфер и загрузить уже оттуда. При этом мне нельзя потерять что-нибудь нужное, но и памяти надо выделить как можно меньше. |
Автор: | Himik [ 27 фев 2010, 03:06 ] |
Заголовок сообщения: | Re: Определить размер ELF файла |
Содержимое ELF делится на программную часть и непрограммную (просто "объектную"). Вам видимо нужна программная часть. В заголовке ELF есть указатель на Program Headers, а там список программных секций. У каждой секции, которая предназначена для загрузки в память, есть атрибут "ELF_PT_LOAD". Вот и выбирайте секции именно с этим атрибутом. Поищите в интернете файл ELF.pdf |
Автор: | KIV [ 27 фев 2010, 15:28 ] |
Заголовок сообщения: | Re: Определить размер ELF файла |
Ну этот то я знаю. Кстати, размер объектного ELF файла я определял так: размер = смещение_таблицы_секций + колшичество_секций * размер_заголовка_секции. Это проще чем перебирать все секции файла, т. к. заголовки секций положенно размецать в конце файла. А вот таблицу сегментов в начале, а таблицы секций вполне возможно не будет. Я конечно могу определить размер файла по таблице сегментов, но может есть более простой вариант? К тому же для загрузки может потребоваться информация из незагружаемых сегментов, поэтому и тоже придётся скопировать. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |