mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-25 08:21:08 +00:00
166 lines
4.2 KiB
Plaintext
166 lines
4.2 KiB
Plaintext
if {![have_spec foc] || ![have_spec 32bit]} {
|
|
puts "\nThe Noux GDB scenario is supported on 32-bit Fiasco.OC only\n"
|
|
exit 0
|
|
}
|
|
|
|
source ${genode_dir}/repos/ports/run/noux_gdb.inc
|
|
|
|
#
|
|
# 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/uart
|
|
server/terminal_mux server/terminal_crosslink
|
|
server/terminal_log
|
|
app/cli_monitor
|
|
app/gdb_monitor
|
|
}
|
|
lappend build_components noux-pkg/[noux_gdb_pkg_name]
|
|
|
|
lappend build_components test/gdb_monitor
|
|
set gdb_target_binary_name test-gdb_monitor
|
|
|
|
build $build_components
|
|
|
|
# names of the binaries needed for the GDB monitor test
|
|
set gdb_target_binaries {
|
|
ld.lib.so
|
|
libc.lib.so
|
|
libc_log.lib.so
|
|
}
|
|
lappend gdb_target_binaries ${gdb_target_binary_name}
|
|
|
|
create_gdb_tar
|
|
create_binary_and_source_tars "gdb_target" ${gdb_target_binaries}
|
|
|
|
create_boot_directory
|
|
|
|
append config {
|
|
<config verbose="yes">
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="LOG"/>
|
|
<service name="CAP"/>
|
|
<service name="RAM"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="PD"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="SIGNAL"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
<route> <any-service> <parent/> </any-service> </route>
|
|
</start>
|
|
|
|
<start name="uart_drv">}
|
|
|
|
# use kernel debugger as UART on Fiasco.OC
|
|
append_if [have_spec foc] config {
|
|
<binary name="kdb_uart_drv"/>}
|
|
|
|
append config {
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides>
|
|
<service name="Uart"/>
|
|
<service name="Terminal"/>
|
|
</provides>
|
|
<config> }
|
|
|
|
# on Fiasco.OC the kdb_uart_drv is always UART 0
|
|
append_if [have_spec foc] config {
|
|
<policy label="terminal_mux" uart="0" detect_size="yes"/> }
|
|
|
|
# on all other kernels, direct terminal_mux to UART 1 (Qemu stdio, see below)
|
|
append_if [expr ![have_spec foc]] config {
|
|
<policy label="terminal_mux" uart="1" detect_size="yes"/> }
|
|
|
|
append config {
|
|
</config>
|
|
<route> <any-service> <parent/> <any-child/> </any-service> </route>
|
|
</start>
|
|
<start name="terminal_mux">
|
|
<resource name="RAM" quantum="3M"/>
|
|
<provides><service name="Terminal"/></provides>
|
|
<route>
|
|
<service name="Terminal"><child name="uart_drv"/></service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
<config>
|
|
<keyboard layout="de"/>
|
|
</config>
|
|
</start>
|
|
<start name="terminal_log">
|
|
<resource name="RAM" quantum="2M"/>
|
|
<provides>
|
|
<service name="LOG"/>
|
|
</provides>
|
|
<route>
|
|
<any-service><child name="terminal_mux"/> <any-child/> <parent/> </any-service>
|
|
</route>
|
|
</start>
|
|
<start name="cli_monitor">
|
|
<resource name="RAM" quantum="3G"/>
|
|
<config>
|
|
<subsystem name="gdb_test" help="GDB test application"> }
|
|
append config "
|
|
<binary name=\"${gdb_target_binary_name}\"/> "
|
|
append config {
|
|
<resource name="RAM" quantum="50M"/>
|
|
</subsystem>
|
|
</config>
|
|
<route>
|
|
<service name="LOG"><child name="terminal_log"/></service>
|
|
<service name="Terminal"><child name="terminal_mux"/></service>
|
|
<any-service><parent/><any-child/></any-service>
|
|
</route>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
install_config $config
|
|
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
exec cp ${genode_dir}/repos/os/src/app/cli_monitor/gdb_command_config bin
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core init timer ld.lib.so noux terminal_mux terminal_crosslink
|
|
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so expat.lib.so
|
|
libc_lock_pipe.lib.so libc_log.lib.so libc_terminal.lib.so
|
|
cli_monitor gdb_monitor terminal_log gdb.tar
|
|
gdb_command_config
|
|
gdb_target.tar
|
|
gdb_target-src.tar
|
|
}
|
|
lappend boot_modules ${gdb_target_binary_name}
|
|
|
|
# platform-specific modules
|
|
lappend_if [expr ![have_spec foc]] boot_modules uart_drv
|
|
lappend_if [have_spec foc] boot_modules kdb_uart_drv
|
|
|
|
set fiasco_serial_esc_arg ""
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
append qemu_args " -nographic "
|
|
|
|
run_genode_until forever
|
|
|
|
exec rm bin/gdb.tar
|