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/