break on the physical address of brkfunc

The kernel may panic early when paging is not yet configured. Breaking only on
the virtual address of brkfunc does not work in this case and leads to timeouts
during 'make grade'.

Signed-off-by: Junjie Mao <eternal.n08@gmail.com>
This commit is contained in:
Junjie Mao 2015-03-12 16:02:32 +08:00
parent 6bee838784
commit 67f05c0ce0
8 changed files with 32 additions and 8 deletions

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -345,4 +349,3 @@ quick_check 'check ticks' \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -337,4 +341,3 @@ quick_check 'check ticks' \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -361,4 +365,3 @@ quick_check 'check ticks' \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -365,4 +369,3 @@ quick_check 'check initproc' \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -552,4 +556,3 @@ run_test -prog 'forktree' -check default_check \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -578,4 +582,3 @@ run_test -prog 'priority' -check default_check \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -632,4 +636,3 @@ run_test -prog 'matrix' -check default_check \
## print final-score ## print final-score
show_final show_final

View File

@ -146,9 +146,13 @@ run_qemu() {
if [ -n "$brkfun" ]; then if [ -n "$brkfun" ]; then
# find the address of the kernel $brkfun function # find the address of the kernel $brkfun function
brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'` brkaddr=`$grep " $brkfun\$" $sym_table | $sed -e's/ .*$//g'`
brkaddr_phys=`echo $brkaddr | sed "s/^c0/00/g"`
( (
echo "target remote localhost:$gdbport" echo "target remote localhost:$gdbport"
echo "break *0x$brkaddr" echo "break *0x$brkaddr"
if [ "$brkaddr" != "$brkaddr_phys" ]; then
echo "break *0x$brkaddr_phys"
fi
echo "continue" echo "continue"
) > $gdb_in ) > $gdb_in
@ -636,4 +640,3 @@ run_test -prog 'matrix' -check default_check \
## print final-score ## print final-score
show_final show_final