diff --git a/lib/spawn/spawn.c b/lib/spawn/spawn.c index 795dc66..b3dc3e3 100644 --- a/lib/spawn/spawn.c +++ b/lib/spawn/spawn.c @@ -84,10 +84,16 @@ static errval_t elf_allocate( ); if (err_is_fail(err)) return err; - // TODO: Map into child address space + // translate elf flags to paging flags + uint32_t paging_flags = 0; + if (flags & PF_X) paging_flags |= KPI_PAGING_FLAGS_EXECUTE; + if (flags & PF_W) paging_flags |= KPI_PAGING_FLAGS_WRITE; + if (flags & PF_R) paging_flags |= KPI_PAGING_FLAGS_READ; + + // Map into child address space err = paging_map_fixed_attr( st->paging_state, base, frame, - alloc_bytes, VREGION_FLAGS_READ_WRITE + alloc_bytes, paging_flags ); if (err_is_fail(err)) return err;