if {[have_spec linux]} {
	puts "Platform does not support managed dataspaces"; exit }

#
# We skip the non-executable fault test on platforms where this functionality
# is not supported.
#
proc non_executable_supported { } {

	if {[have_spec hw]   && [have_spec x86_64]} { return true }
	if {[have_spec hw]   && [have_spec arm]}    { return true }
	if {[have_spec nova] && [have_spec x86_64]} { return true }
	if {[have_spec foc]  && [have_spec x86_64]} { return true }
	if {[have_spec foc]  && [have_spec arm]}    { return true }
	if {[have_spec sel4] && [have_spec arm]}    { return true }

	return false
}

build "core init test/rm_fault"

create_boot_directory

install_config {
	<config>
		<parent-provides>
			<service name="ROM"/>
			<service name="CPU"/>
			<service name="RM"/>
			<service name="PD"/>
			<service name="LOG"/>
		</parent-provides>
		<default-route>
			<any-service> <parent/> </any-service>
		</default-route>
		<start name="test-rm_fault" caps="110">
			<resource name="RAM" quantum="10M"/>
			<config executable_fault_test="} [non_executable_supported] {"/>
		</start>
	</config>
}

build_boot_image "core ld.lib.so init test-rm_fault"

append qemu_args "-nographic "

run_genode_until {child "test-rm_fault" exited with exit value 0.*} 300
