if {!([have_spec nova])} { puts "\nThe Noux GDB scenario is only supported for NOVA\n" exit 0 } 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 { core init drivers/timer noux lib/libc_noux drivers/framebuffer drivers/input drivers/usb server/terminal server/terminal_crosslink app/gdb_monitor } lappend build_components "lib/gdbserver_platform-$::env(KERNEL)" proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv } if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv } return gpio_drv } lappend_if [have_spec gpio] build_components drivers/gpio 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 source ${genode_dir}/repos/base/run/platform_drv.inc append_platform_drv_build_components 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 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} create_boot_directory append config { } append_if [have_spec sdl] config { } append_platform_drv_config append_if [have_spec framebuffer] config { } append_if [have_spec ps2] config { } append_if [have_spec gpio] config " " append_if [expr ![have_spec ps2] && [have_spec usb]] config { } 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" } # generic modules append boot_modules { core init timer ld.lib.so noux terminal terminal_crosslink posix.lib.so libc.lib.so libm.lib.so ncurses.lib.so expat.lib.so libc_noux.lib.so libc_pipe.lib.so libc_terminal.lib.so gdb_monitor gdbserver_platform.lib.so test-gdb_monitor test-gdb_monitor.tar test-gdb_monitor-src.tar } [noux_gdb_pkg_name].tar # platform-specific modules lappend_if [have_spec linux] boot_modules fb_sdl lappend_if [have_spec framebuffer] boot_modules fb_drv lappend_if [have_spec ps2] boot_modules ps2_drv lappend_if [have_spec usb] boot_modules usb_drv lappend_if [have_spec gpio] boot_modules [gpio_drv] append_platform_drv_boot_modules build_boot_image $boot_modules run_genode_until forever