if {!([have_spec nova])} { puts "\nThe Noux GDB scenario is only supported for NOVA\n" exit 0 } create_boot_directory import_from_depot [depot_user]/src/[base_src] \ [depot_user]/pkg/[drivers_interactive_pkg] \ [depot_user]/pkg/terminal \ [depot_user]/src/init \ [depot_user]/src/libc \ [depot_user]/src/ncurses \ [depot_user]/src/noux \ [depot_user]/src/posix \ [depot_user]/src/stdcxx source ${genode_dir}/repos/ports/run/noux_gdb.inc if {[have_spec arm]} { set tool_prefix "genode-arm-" } if {[have_spec x86]} { set tool_prefix "genode-x86-" } # # Uncomment the following line when working on the GDB source code. Otherwise, # the package may get recompiled, yet it does not get reinstalled into 'bin/'. # #exec rm -rf noux-pkg/[noux_gdb_pkg_name]/ bin/[noux_gdb_pkg_name]/ set build_components { server/terminal_crosslink app/gdb_monitor } lappend build_components "lib/gdbserver_platform-$::env(KERNEL)" lappend_if [have_spec nova] build_components lib/ld/nova lappend_if [have_spec foc] build_components lib/ld/foc lappend build_components noux-pkg/[noux_gdb_pkg_name] # the application to be debugged with GDB lappend build_components test/gdb_monitor set gdb_target_binary_name test-gdb_monitor build $build_components # GDB loads symbols from 'debug/ld.lib.so' if { [have_spec nova] } { exec ln -sf ld-nova.lib.so debug/ld.lib.so } if { [have_spec foc] } { exec ln -sf ld-foc.lib.so debug/ld.lib.so } # names of the binaries needed for the GDB monitor test set gdb_target_binaries { test-gdb_monitor ld.lib.so libc.lib.so vfs.lib.so libm.lib.so posix.lib.so } lappend gdb_target_binaries ${gdb_target_binary_name} create_binary_and_source_tars ${gdb_target_binary_name} ${gdb_target_binaries} append config { } append config " " append config { } append config " " append config { } append config " " append config { } append config " " append config { } append config " " append config { } install_config $config # # Boot modules # # evaluated by the run tool proc binary_name_gdbserver_platform_lib_so { } { return "gdbserver_platform-$::env(KERNEL).lib.so" } set boot_modules { terminal_crosslink expat.lib.so libc_pipe.lib.so gdb_monitor gdbserver_platform.lib.so test-gdb_monitor test-gdb_monitor.tar test-gdb_monitor-src.tar } lappend boot_modules [noux_gdb_pkg_name].tar build_boot_image $boot_modules run_genode_until forever