1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-29 19:30:36 +02:00
guile/gdbinit
Brennan Vincent 0ace611196
Fix gbt command in gdbinit
In 2009 when this was written, SCM_UNDEFINED was 0x704. Now it's 0x904.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-10-20 21:22:22 +02:00

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