mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-09 13:26:48 +00:00
Support ELF files with zero p_filesz
.
This commit is contained in:
parent
6f98c4900d
commit
1e3403e756
@ -328,15 +328,17 @@ fn map_segment_vmo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let perms = parse_segment_perm(program_header.flags);
|
let perms = parse_segment_perm(program_header.flags);
|
||||||
|
let offset = base_addr + (program_header.virtual_addr as Vaddr).align_down(PAGE_SIZE);
|
||||||
|
if segment_size != 0 {
|
||||||
let mut vm_map_options = root_vmar
|
let mut vm_map_options = root_vmar
|
||||||
.new_map(segment_size, perms)?
|
.new_map(segment_size, perms)?
|
||||||
.vmo(segment_vmo)
|
.vmo(segment_vmo)
|
||||||
.vmo_offset(segment_offset)
|
.vmo_offset(segment_offset)
|
||||||
.vmo_limit(segment_offset + segment_size)
|
.vmo_limit(segment_offset + segment_size)
|
||||||
.can_overwrite(true);
|
.can_overwrite(true);
|
||||||
let offset = base_addr + (program_header.virtual_addr as Vaddr).align_down(PAGE_SIZE);
|
|
||||||
vm_map_options = vm_map_options.offset(offset).handle_page_faults_around();
|
vm_map_options = vm_map_options.offset(offset).handle_page_faults_around();
|
||||||
let map_addr = vm_map_options.build()?;
|
vm_map_options.build()?;
|
||||||
|
}
|
||||||
|
|
||||||
let anonymous_map_size: usize = total_map_size.saturating_sub(segment_size);
|
let anonymous_map_size: usize = total_map_size.saturating_sub(segment_size);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user