Распечатка 10.1 Загрузчик bFLT |
Предыдущая Содержание Следующая |
Распечатка 10.1
… if ((flags & (FLAT_FLAG_RAM|FLAT_FLAG_GZIP)) == 0) {
…
/* * Случай отображения в ПЗУ: отображаем из файла для XIP */ textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC, 0, 0);
…
/* * Выделяем память для разделов данных, стека и данных переадресации. * Отметим, что это делается также для общих библиотек */ realdatastart = do_mmap(0, 0, data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long), PROT_READ|PROT_WRITE|PROT_EXEC, 0, 0);
… …
/* * Читаем секцию .data из файла в память, распаковываем, * если необходимо */ #ifdef CONFIG_BINFMT_ZFLAT if (flags & FLAT_FLAG_GZDATA) { result = decompress_exec(bprm, fpos, (char *) datapos, data_len + (relocs * sizeof(unsigned long)), 0); }else #endif { result = bprm->file->f_op->read(bprm->file, (char *) datapos, data_len + (relocs * sizeof(unsigned long)), &fpos); }
… …
} else { /* * Случай отображений в RAM: Выделение памяти для всего * (текста, данных, стека, данных переадресации) */ textpos = do_mmap(0, 0, text_len + data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long), PROT_READ | PROT_EXEC | PROT_WRITE, 0, 0);
… …
/* * Читаем разделы .text, .data из файла в ОЗУ, распаковываем, * если необходимо */ if (flags & FLAT_FLAG_GZIP) { result = decompress_exec(bprm, sizeof (struct flat_hdr), (((char *) textpos) + sizeof (struct flat_hdr)), (text_len + data_len + (relocs * sizeof(unsigned long)) - sizeof (struct flat_hdr)), 0); … result = bprm->file->f_op->read(bprm->file, (char *) textpos, text_len, &fpos); …
|
Предыдущая Содержание Следующая |