summaryrefslogtreecommitdiff
path: root/ext/phar/gdbhelp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-03-14 05:42:27 +0000
committer <>2013-04-03 16:25:08 +0000
commitc4dd7a1a684490673e25aaf4fabec5df138854c4 (patch)
tree4d57c44caae4480efff02b90b9be86f44bf25409 /ext/phar/gdbhelp
downloadphp2-master.tar.gz
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/phar/gdbhelp')
-rw-r--r--ext/phar/gdbhelp122
1 files changed, 122 insertions, 0 deletions
diff --git a/ext/phar/gdbhelp b/ext/phar/gdbhelp
new file mode 100644
index 0000000..5411858
--- /dev/null
+++ b/ext/phar/gdbhelp
@@ -0,0 +1,122 @@
+define ___pharglobals
+ if basic_functions_module.zts
+ set $tsrm_ls = ts_resource_ex(0, 0)
+ set $pharglobals = ((zend_phar_globals) (*((void ***) $tsrm_ls))[phar_globals_id-1])
+ else
+ set $pharglobals = phar_globals
+ end
+end
+
+define ____print_pharht
+ set $ht = $arg0
+ set $p = $ht.pListHead
+
+ while $p != 0
+ set $i = $ind
+ while $i > 0
+ printf " "
+ set $i = $i - 1
+ end
+
+ set $temp = *(phar_archive_data*)$p->pDataPtr
+ ____print_str $temp.fname $temp.fname_len
+ printf " => "
+
+ if $arg1 == 0
+
+ printf "%i (alias ", $temp.refcount
+ ____print_str $temp.alias $temp.alias_len
+ printf ")\n"
+ end
+
+ set $p = $p->pListNext
+ end
+end
+
+define print_phar
+ set $ind = 1
+ ___pharglobals
+ printf "{"
+ ____print_pharht $pharglobals.phar_fname_map 0
+ printf "}\n"
+end
+
+document display_phar_globals
+ display phar globals
+end
+
+define display_phar_globals
+ ___pharglobals
+ graph display $phar_globals.$arg0
+end
+
+define print_pharfp
+ ___pharglobals
+ set $ht = $pharglobals.phar_fname_map
+ set $p = $ht.pListHead
+ set $fpcount = 0
+
+ while $p != 0
+ set $pharname = (*(phar_archive_data*)$p->pDataPtr).fname
+ set $pharrefcount = (*(phar_archive_data*)$p->pDataPtr).refcount
+ if (*(phar_archive_data*)$p->pDataPtr).fp != 0
+ set $fpcount = $fpcount + 1
+ printf "phar %s is open (%i)\n", $pharname, $pharrefcount
+ end
+ set $manifest = (*(phar_archive_data*)$p->pDataPtr).manifest
+ set $m = $manifest.pListHead
+ while $m != 0
+ if (*(phar_entry_info *)$m->pData).fp
+ set $fpcount = $fpcount + 1
+ set $a = (*(phar_entry_info *)$m->pData).fp_refcount
+ printf "phar %s file %s is open (%i)\n", $pharname, (*(phar_entry_info *)$m->pData).filename, $a
+ end
+ set $m = $m->pListNext
+ end
+
+ set $p = $p->pListNext
+ end
+ printf "Open file pointers: %d\n", $fpcount
+end
+
+document print_pharfp
+ displays all open file pointers in phar, and the phars plus entries that are open with reference counts
+end
+
+define dump_entry
+ ___pharglobals
+ set $ht = $pharglobals.phar_fname_map
+ set $p = $ht.pListHead
+ set $done = 0
+ while $p != 0
+ set $t = (*(phar_archive_data*)$p->pDataPtr)
+ if $t.fname[0] == $arg0[0] || $t.alias[0] == $arg0[0]
+ set $manifest = (*(phar_archive_data*)$p->pDataPtr).manifest
+ set $m = $manifest.pListHead
+ while $m != 0
+ if (*(phar_entry_info *)$m->pData).filename[0] == $arg1[0]
+ if $argc == 3
+ output *((phar_entry_info *)$m->pData)->fp
+ end
+ if $argc == 2
+ output *(phar_entry_info *)$m->pData
+ end
+ printf "\n"
+ set $done = 1
+ loop_break
+ end
+ set $m = $m->pListNext
+ end
+ end
+ if $done == 1
+ loop_break
+ end
+ set $p = $p->pListNext
+ end
+end
+
+document dump_entry
+ dump_entry "pharname"|"pharalias" "filename" [1]
+ display phar_entry_info for a file within a phar. If the optional third param
+ is passed in, displays the php_stream that is the file's fp
+end \ No newline at end of file