multiboot: Fix section location calculation

This commit is contained in:
mintsuki 2022-06-19 20:16:37 +02:00
parent eb8f45aee4
commit d88b5dcfa7
2 changed files with 2 additions and 2 deletions

View File

@ -155,7 +155,7 @@ bool multiboot1_load(char *config, char *cmdline) {
memcpy(sections, kernel + section_hdr_info->section_offset, section_hdr_info->section_entry_size * section_hdr_info->num); memcpy(sections, kernel + section_hdr_info->section_offset, section_hdr_info->section_entry_size * section_hdr_info->num);
for (size_t i = 0; i < section_hdr_info->num; i++) { for (size_t i = 0; i < section_hdr_info->num; i++) {
struct elf64_shdr *shdr = (void *)sections + section_hdr_info->section_offset + i * section_hdr_info->section_entry_size; struct elf64_shdr *shdr = (void *)sections + i * section_hdr_info->section_entry_size;
if (shdr->sh_addr != 0 || shdr->sh_size == 0) { if (shdr->sh_addr != 0 || shdr->sh_size == 0) {
continue; continue;

View File

@ -318,7 +318,7 @@ bool multiboot2_load(char *config, char* cmdline) {
memcpy(tag->sections, kernel + section_hdr_info->section_offset, section_hdr_info->section_entry_size * section_hdr_info->num); memcpy(tag->sections, kernel + section_hdr_info->section_offset, section_hdr_info->section_entry_size * section_hdr_info->num);
for (size_t i = 0; i < section_hdr_info->num; i++) { for (size_t i = 0; i < section_hdr_info->num; i++) {
struct elf64_shdr *shdr = (void *)tag->sections + section_hdr_info->section_offset + i * section_hdr_info->section_entry_size; struct elf64_shdr *shdr = (void *)tag->sections + i * section_hdr_info->section_entry_size;
if (shdr->sh_addr != 0 || shdr->sh_size == 0) { if (shdr->sh_addr != 0 || shdr->sh_size == 0) {
continue; continue;