summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2015-04-10 14:51:43 +0000
committerDamien Doligez <damien.doligez-inria.fr>2015-04-10 14:51:43 +0000
commit86f0bd52e45c5981f6b24acc3731973ddedda1ba (patch)
tree277d6fd6d4caa5803ac973ecfe1b7aa8c3080fbd /tools
parenteb7be167da4708466f29c3ea2cc799414ff8e010 (diff)
downloadocaml-86f0bd52e45c5981f6b24acc3731973ddedda1ba.tar.gz
gdb-macros: make `caml` work on any argument type
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15989 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'tools')
-rw-r--r--tools/gdb-macros19
1 files changed, 11 insertions, 8 deletions
diff --git a/tools/gdb-macros b/tools/gdb-macros
index b90ce787f0..9d51aeb18d 100644
--- a/tools/gdb-macros
+++ b/tools/gdb-macros
@@ -184,11 +184,13 @@ define camlblock
while $count < $mysize && $count < 10
set $adr = $arg0 + $camlwordsize * $count
set $field = * (unsigned long *) $adr
- printf "%#lx: [%d] %#016lx ", $adr, $count, $field
+ printf "%#lx: [%d] 0x%016lx ", $adr, $count, $field
if ($field & 7) == 0 && $isvalues
camlheap $field
printf " "
- camlheader $field
+ if $field != 0
+ camlheader $field
+ end
end
if ($field & 1) == 1
camlint $field
@@ -203,14 +205,15 @@ define camlblock
end
define caml
- if ($arg0 & 1) == 1
- camlint $arg0
+ set $caml_argument = (long) $arg0
+ if ($caml_argument & 1) == 1
+ camlint $caml_argument
printf "\n"
end
- if ($arg0 & 7) == 0
- camlblock $arg0
+ if ($caml_argument & 7) == 0
+ camlblock $caml_argument
end
- if ($arg0 & 7) != 0 && ($arg0 & 1) != 1
- printf "invalid pointer: %#016lx\n", $arg0
+ if ($caml_argument & 7) != 0 && ($caml_argument & 1) != 1
+ printf "invalid pointer: %#016lx\n", $caml_argument
end
end