multiboot: Fix section location calculation
This commit is contained in:
parent
eb8f45aee4
commit
d88b5dcfa7
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user