Описание для проверки выравнивания загружаемых сегментов

pull/709/head
proninyaroslav 6 years ago
parent bbaea8c705
commit 19e34d07c9

@ -328,7 +328,7 @@ if (ehdr.e_ident[EI_MAG0] != ELFMAG0 ||
}
```
и если файл некорректный, функция выводит сообщение об ошибке и останавливается. Если же `ELF` файл корректный, мы просматриваем все заголовки из указанного `ELF` файла и копируем все загружаемые сегменты с правильным адресом в выходной буфер:
и если файл некорректный, функция выводит сообщение об ошибке и останавливается. Если же `ELF` файл корректный, мы просматриваем все заголовки из указанного `ELF` файла и копируем все загружаемые сегменты с правильным адресом, выровненным по 2 мегабайтам, в выходной буфер:
```C
@ -337,6 +337,10 @@ if (ehdr.e_ident[EI_MAG0] != ELFMAG0 ||
switch (phdr->p_type) {
case PT_LOAD:
#ifdef CONFIG_X86_64
if ((phdr->p_align % 0x200000) != 0)
error("Alignment of LOAD segment isn't multiple of 2MB");
#endif
#ifdef CONFIG_RELOCATABLE
dest = output;
dest += (phdr->p_paddr - LOAD_PHYSICAL_ADDR);

Loading…
Cancel
Save