mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 11:10:32 +02:00
In 2009 when this was written, SCM_UNDEFINED was 0x704. Now it's 0x904. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
204 lines
3.2 KiB
Text
204 lines
3.2 KiB
Text
# -*- GDB-Script -*-
|
|
|
|
handle SIGPWR noprint nostop
|
|
handle SIGXCPU noprint nostop
|
|
|
|
define newline
|
|
call (void)scm_newline (scm_current_error_port ())
|
|
end
|
|
|
|
define pp
|
|
call (void)scm_call_1 (scm_variable_ref (scm_c_module_lookup (scm_c_resolve_module ("ice-9 pretty-print"), "pretty-print")), $arg0)
|
|
end
|
|
|
|
define gdisplay
|
|
call (void)scm_display ($arg0, scm_current_error_port ())
|
|
newline
|
|
end
|
|
|
|
define gwrite
|
|
call (void)scm_write ($arg0, scm_current_error_port ())
|
|
newline
|
|
end
|
|
|
|
define sputs
|
|
call (void)scm_puts ($arg0, scm_current_error_port ())
|
|
end
|
|
|
|
define gslot
|
|
print ((SCM**)$arg0)[1][$arg1]
|
|
end
|
|
|
|
define pslot
|
|
gslot $arg0 $arg1
|
|
gwrite $
|
|
end
|
|
|
|
define lforeach
|
|
set $l=$arg0
|
|
while $l != 0x404
|
|
set $x=scm_car($l)
|
|
$arg1 $x
|
|
set $l = scm_cdr($l)
|
|
end
|
|
end
|
|
|
|
define modsum
|
|
modname $arg0
|
|
gslot $arg0 1
|
|
set $uses=$
|
|
output "uses:\n"
|
|
lforeach $uses modname
|
|
end
|
|
|
|
define moduses
|
|
pslot $arg0 1
|
|
end
|
|
|
|
define modname
|
|
pslot $arg0 5
|
|
end
|
|
|
|
define modkind
|
|
pslot $arg0 6
|
|
end
|
|
|
|
define car
|
|
call scm_car ($arg0)
|
|
end
|
|
|
|
define cdr
|
|
call scm_cdr ($arg0)
|
|
end
|
|
|
|
define smobwordtox
|
|
set $x=((SCM*)$arg0)[$arg1]
|
|
end
|
|
|
|
define smobdatatox
|
|
smobwordtox $arg0 1
|
|
end
|
|
|
|
define program_objcode
|
|
smobdatatox $arg0
|
|
set $objcode=$x
|
|
smobdatatox $objcode
|
|
p *(struct scm_objcode*)$x
|
|
end
|
|
|
|
define proglocals
|
|
set $i=bp->nlocs
|
|
while $i > 0
|
|
set $i=$i-1
|
|
gwrite fp[bp->nargs+$i]
|
|
end
|
|
end
|
|
|
|
define progstack
|
|
set $x=sp
|
|
while $x > stack_base
|
|
gwrite *$x
|
|
set $x=$x-1
|
|
end
|
|
end
|
|
|
|
define tc16
|
|
p ((scm_t_bits)$arg0) & 0xffff
|
|
end
|
|
|
|
define smobdescriptor
|
|
p scm_smobs[0xff & (((scm_t_bits)$arg0) >> 8)]
|
|
end
|
|
|
|
define vmstackinit
|
|
set $vmsp=sp
|
|
set $vmstack_base=stack_base
|
|
set $vmfp=fp
|
|
set $vmbp=bp
|
|
set $vmframe=0
|
|
end
|
|
|
|
define nextframe
|
|
set $orig_vmsp=$vmsp
|
|
while $vmsp > $vmstack_base
|
|
output $orig_vmsp - $vmsp
|
|
sputs "\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
gwrite *$vmsp
|
|
set $vmsp=$vmsp-1
|
|
end
|
|
newline
|
|
sputs "Frame "
|
|
output $vmframe
|
|
newline
|
|
sputs "ra:\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
output (SCM*)*$vmsp
|
|
set $vmsp=$vmsp-1
|
|
newline
|
|
sputs "mvra:\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
output (SCM*)*$vmsp
|
|
set $vmsp=$vmsp-1
|
|
newline
|
|
sputs "dl:\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
set $vmdl=(SCM*)(*$vmsp)
|
|
output $vmdl
|
|
newline
|
|
set $vmsp=$vmsp-1
|
|
set $vmnlocs=(int)$vmbp->nlocs
|
|
while $vmnlocs > 0
|
|
sputs "loc #"
|
|
output $vmnlocs
|
|
sputs ":\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
gwrite *$vmsp
|
|
set $vmsp=$vmsp-1
|
|
set $vmnlocs=$vmnlocs-1
|
|
end
|
|
set $vmnargs=(int)$vmbp->nargs
|
|
while $vmnargs > 0
|
|
sputs "arg #"
|
|
output $vmnargs
|
|
sputs ":\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
gwrite *$vmsp
|
|
set $vmsp=$vmsp-1
|
|
set $vmnargs=$vmnargs-1
|
|
end
|
|
sputs "prog:\t"
|
|
output $vmsp
|
|
sputs "\t"
|
|
gwrite *$vmsp
|
|
set $vmsp=$vmsp-1
|
|
newline
|
|
if $vmdl
|
|
set $vmfp=$vmdl
|
|
set $vmbp=(struct scm_objcode*)((SCM*)(((SCM*)($vmfp[-1]))[1])[1])
|
|
set $vmstack_base=$vmfp+$vmbp->nargs+$vmbp->nlocs+4
|
|
set $vmframe=$vmframe+1
|
|
newline
|
|
end
|
|
end
|
|
|
|
define vmstack
|
|
vmstackinit
|
|
while $vmsp > vp->stack_base
|
|
nextframe
|
|
end
|
|
end
|
|
|
|
define inst
|
|
p scm_instruction_table[$arg0]
|
|
end
|
|
|
|
define gbt
|
|
call scm_display_backtrace (scm_make_stack(0x404,0x304), scm_current_error_port (), 0x904, 0x904)
|
|
end
|