diff options
| author | Damien Doligez <damien.doligez-inria.fr> | 2015-04-10 14:51:43 +0000 |
|---|---|---|
| committer | Damien Doligez <damien.doligez-inria.fr> | 2015-04-10 14:51:43 +0000 |
| commit | 86f0bd52e45c5981f6b24acc3731973ddedda1ba (patch) | |
| tree | 277d6fd6d4caa5803ac973ecfe1b7aa8c3080fbd /tools | |
| parent | eb7be167da4708466f29c3ea2cc799414ff8e010 (diff) | |
| download | ocaml-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-macros | 19 |
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 |
