mirror of
https://github.com/0xAX/linux-insides.git
synced 2025-07-06 09:02:31 +00:00
Описание для проверки выравнивания загружаемых сегментов
This commit is contained in:
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…
Reference in New Issue
Block a user