mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-09 05:16:47 +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 mut vm_map_options = root_vmar
|
||||
.new_map(segment_size, perms)?
|
||||
.vmo(segment_vmo)
|
||||
.vmo_offset(segment_offset)
|
||||
.vmo_limit(segment_offset + segment_size)
|
||||
.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();
|
||||
let map_addr = vm_map_options.build()?;
|
||||
if segment_size != 0 {
|
||||
let mut vm_map_options = root_vmar
|
||||
.new_map(segment_size, perms)?
|
||||
.vmo(segment_vmo)
|
||||
.vmo_offset(segment_offset)
|
||||
.vmo_limit(segment_offset + segment_size)
|
||||
.can_overwrite(true);
|
||||
vm_map_options = vm_map_options.offset(offset).handle_page_faults_around();
|
||||
vm_map_options.build()?;
|
||||
}
|
||||
|
||||
let anonymous_map_size: usize = total_map_size.saturating_sub(segment_size);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user