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:
parent
6bee838784
commit
67f05c0ce0
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user