diff options
author | Sverker Eriksson <sverker@erlang.org> | 2012-03-05 11:05:34 +0100 |
---|---|---|
committer | Sverker Eriksson <sverker@erlang.org> | 2012-03-05 11:05:34 +0100 |
commit | d1e67d51a6d754e5a055c81c9d7447e0d87e982f (patch) | |
tree | 4d0b3a2e180c43876ad4449aac91cbeab9a4b7f5 | |
parent | 1bc4f4c35876a8dcccad66129e68f602751f6e36 (diff) | |
parent | 923535615433a847bb2ff823afec7dcacceb5ba6 (diff) | |
download | otp-d1e67d51a6d754e5a055c81c9d7447e0d87e982f.tar.gz otp-d1e67d51a6d754e5a055c81c9d7447e0d87e982f.tar.bz2 otp-d1e67d51a6d754e5a055c81c9d7447e0d87e982f.zip |
Merge branch 'sverk/etp-ets-tabledump' into maint
* sverk/etp-ets-tabledump:
erts: Fix gdb command etp-ets-tabledump
-rw-r--r-- | erts/etc/unix/etp-commands | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/erts/etc/unix/etp-commands b/erts/etc/unix/etp-commands index 6a01e0b7e0..79e5d6b1d8 100644 --- a/erts/etc/unix/etp-commands +++ b/erts/etc/unix/etp-commands @@ -1883,6 +1883,28 @@ document etp-ets-tables %--------------------------------------------------------------------------- end +define etp-ets-obj +# Args: DbTerm* +# + set $etp_ets_obj_i = 1 + while $etp_ets_obj_i <= (($arg0)->tpl[0] >> 6) + if $etp_ets_obj_i == 1 + printf "{" + else + printf ", " + end + set $etp_ets_elem = ($arg0)->tpl[$etp_ets_obj_i] + if ($etp_ets_elem & 3) == 0 + printf "<compressed>" + else + etp-1 $etp_ets_elem 0 + end + set $etp_ets_obj_i++ + end + printf "}" +end + + define etp-ets-tabledump # Args: int tableindex # @@ -1896,10 +1918,10 @@ define etp-ets-tabledump if $etp_ets_tabledump_t->common.status & 0x130 # Hash table set $etp_ets_tabledump_h = $etp_ets_tabledump_t->hash - printf "%% nitems=%d\n", $etp_ets_tabledump_t->common.nitems - while $etp_ets_tabledump_i < $etp_ets_tabledump_h->nactive - set $etp_ets_tabledump_l = $etp_ets_tabledump_h->seg \ - [$etp_ets_tabledump_i>>8][$etp_ets_tabledump_i&0xFF] + printf "%% nitems=%d\n", (long) $etp_ets_tabledump_t->common.nitems + while $etp_ets_tabledump_i < (long) $etp_ets_tabledump_h->nactive + set $etp_ets_tabledump_seg = ((struct segment**)$etp_ets_tabledump_h->segtab)[$etp_ets_tabledump_i>>8] + set $etp_ets_tabledump_l = $etp_ets_tabledump_seg->buckets[$etp_ets_tabledump_i&0xFF] if $etp_ets_tabledump_l printf "%% Slot %d:\n", $etp_ets_tabledump_i while $etp_ets_tabledump_l @@ -1909,7 +1931,7 @@ define etp-ets-tabledump printf "[" end set $etp_ets_tabledump_n++ - etp-1 ((Eterm)($etp_ets_tabledump_l->dbterm.tpl)|0x2) 0 + etp-ets-obj &($etp_ets_tabledump_l->dbterm) if $etp_ets_tabledump_l->hvalue == ((unsigned long)-1) printf "% *\n" else |