62 lines
2.2 KiB
Plaintext
62 lines
2.2 KiB
Plaintext
##########################################################################
|
|
# Copyright (c) 2007, 2008, 2009, 2013, ETH Zurich.
|
|
# All rights reserved.
|
|
#
|
|
# This file is distributed under the terms in the attached LICENSE file.
|
|
# If you do not find this file, copies can be found by writing to:
|
|
# ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
|
|
##########################################################################
|
|
|
|
set architecture i386:x86-64
|
|
|
|
# Command to debug a kernel on hardware connected through conserver
|
|
# $arg0 is the name of the relevant console
|
|
define debug_hw
|
|
target remote | console -f $arg0
|
|
end
|
|
|
|
# Resets kernel symbols previously set with debug_kernel_at.
|
|
# Used when context switching to a different user binary.
|
|
define reset_kernel_symbols_fn
|
|
file $arg0
|
|
symbol-file
|
|
add-symbol-file $arg0 $text_addr -s .rodata $rodata_addr -s .data $data_addr -s .data.rel $data_rel_addr -s .data.rel.local $data_rel_local_addr -s .bss $bss_addr
|
|
end
|
|
|
|
# Helper function that uses the stored kernel filename.
|
|
define reset_kernel_symbols
|
|
source barrelfish_reset_kernel_symbols.tmp
|
|
end
|
|
|
|
# Command to debug kernel at an arbitrary location. $arg0 specifies
|
|
# kernel binary file name. $arg1 specifies position of kernel in
|
|
# memory (kernel prints this at startup).
|
|
define debug_kernel_at
|
|
set $rodata_offset = 0x0000000000121000 - 0x100000
|
|
set $data_offset = 0x0000000000127638 - 0x100000
|
|
set $data_rel_offset = 0x0000000000127840 - 0x100000
|
|
set $data_rel_local_offset = 0x0000000000127828 - 0x100000
|
|
set $bss_offset = 0x0000000000128a68 - 0x100000
|
|
|
|
set $text_addr = $arg1
|
|
set $rodata_addr = $arg1 + $rodata_offset
|
|
set $data_addr = $arg1 + $data_offset
|
|
set $data_rel_addr = $arg1 + $data_rel_offset
|
|
set $data_rel_local_addr = $arg1 + $data_rel_local_offset
|
|
set $bss_addr = $arg1 + $bss_offset
|
|
|
|
shell echo reset_kernel_symbols_fn $arg0 > barrelfish_reset_kernel_symbols.tmp
|
|
reset_kernel_symbols
|
|
end
|
|
|
|
define get_section_start
|
|
shell echo set \$cur_section_start = 0x`objdump -h $arg1 | awk "\\$2 == \"$arg0\" { print \\$4 }"` > barrelfish_debug.tmp
|
|
source barrelfish_debug.tmp
|
|
end
|
|
|
|
define switch-user-binary
|
|
reset_kernel_symbols
|
|
get_section_start .text $arg0
|
|
add-symbol-file $arg0 $cur_section_start
|
|
end
|