Hi,
I have been having some trouble with the Region Map interface not setting the correct permissions in my specified memory region. I am trying to replicate a similar functionality to rm_nested:
```cpp const addr_t OBJECT_SPACE_START = 0x80000000; const addr_t OBJECT_SPACE_SIZE = 0x40000000;
Genode::Env &_env; Genode::Rm_connection _rm{_env};
// To be attached to env's rm Genode::Region_map_client _obj_space{_rm.create(OBJECT_SPACE_SIZE)};
...
Region_map::Attr attributes{.size = OBJECT_SPACE_SIZE, .offset = 0, .use_at = true, .at = OBJECT_SPACE_START, .executable = true, .writeable = true};
addr_t ptr_obj = 0; env.rm() .attach(_obj_space.dataspace(), attributes) .with_result( [&ptr_obj](Genode::Env::Local_rm::Attachment &attachment) { ptr_obj = (Genode::addr_t)attachment.ptr; attachment.deallocate = false; }, [](auto) { error("couldn't attach dataspace!"); throw; });
```
I expect this code snippet to make the region at 0x80000000 to be rwx, however when I run my program with GDB I see that the permissions are ---p:
(gdb) info proc mappings Mapped address spaces:
Start Addr End Addr Size Offset Perms objfile 0x80000000 0xc0000000 0x40000000 0x0 ---p
I have also tried adding a dataspace capability to _obj_space ( before attaching it to env.rm() ) but that had no effect on the permissions:
```cpp _obj_space.attach(env.ram().alloc(OBJECT_SPACE_SIZE), attributes); ```
Any help / suggestions would be greatly appreciated as I have been stuck on this for quite a while!
Best, Rumen
P.S. The permissions are set correctly when I do:
```cpp addr_t ptr_obj = 0; env.rm() .attach(env.ram().alloc(OBJECT_SPACE_SIZE), attributes) .with_result( [&ptr_obj](Genode::Env::Local_rm::Attachment &attachment) { ptr_obj = (Genode::addr_t)attachment.ptr; attachment.deallocate = false; }, [](auto) { error("couldn't attach dataspace!"); throw; }); ```
The problem with this is that later on in my program I get an error as I need the _obj_space region map client.