29 lines
770 B
Cheetah
29 lines
770 B
Cheetah
|
set $lastcs = -1
|
||
|
|
||
|
# This fails on Darwin because the default gdb has no ELF support
|
||
|
# echo + symbol-file obj/kern/kernel\n
|
||
|
# symbol-file obj/kern/kernel
|
||
|
|
||
|
define hook-stop
|
||
|
# There doesn't seem to be a good way to detect if we're in 16- or
|
||
|
# 32-bit mode, but in 32-bit mode we always run with CS == 8 in the
|
||
|
# kernel and CS == 35 in user space
|
||
|
if $cs == 8 || $cs == 35
|
||
|
if $lastcs != 8 && $lastcs != 35
|
||
|
set architecture i386
|
||
|
end
|
||
|
x/i $pc
|
||
|
else
|
||
|
if $lastcs == -1 || $lastcs == 8 || $lastcs == 35
|
||
|
set architecture i8086
|
||
|
end
|
||
|
# Translate the segment:offset into a physical address
|
||
|
printf "[%4x:%4x] ", $cs, $eip
|
||
|
x/i $cs*16+$eip
|
||
|
end
|
||
|
set $lastcs = $cs
|
||
|
end
|
||
|
|
||
|
echo + target remote localhost:1234\n
|
||
|
target remote localhost:1234
|