Browse Source

disassembler: don't dump builtin functions

git-svn-id: svn://svn.lighttpd.net/xcache/trunk@709 c26eb9a1-5813-0410-bd6c-c2e55f420ca7
3.0
Xuefer 11 years ago
parent
commit
555d112674
  1. 1
      ChangeLog
  2. 25
      disassembler.c

1
ChangeLog

@ -11,6 +11,7 @@ ChangeLog
1.3.2 2011-??-??
========
* disassembler: don't dump builtin functions
* fix win32 build against win32 native gnu tools
* compatibility fix: fix segv on shutdown when ionCube Loader is loaded
* fixed undefined index for xcache.count=1 and xcache.var_size>1

25
disassembler.c

@ -5,10 +5,17 @@
#define return_value dst
/* sandbox {{{ */
#undef TG
#undef OG
#define TG(x) (sandbox->tmp_##x)
#define OG(x) (sandbox->orig_##x)
/* }}} */
#ifndef HAVE_XCACHE_OPCODE_SPEC_DEF
#error disassembler cannot be built without xcache/opcode_spec_def.h
#endif
static void xc_dasm(zval *dst, zend_op_array *op_array TSRMLS_DC) /* {{{ */
static void xc_dasm(xc_sandbox_t *sandbox, zval *dst, zend_op_array *op_array TSRMLS_DC) /* {{{ */
{
Bucket *b;
zval *zv, *list;
@ -32,13 +39,21 @@ static void xc_dasm(zval *dst, zend_op_array *op_array TSRMLS_DC) /* {{{ */
ALLOC_INIT_ZVAL(list);
array_init(list);
xc_dasm_HashTable_zend_function(list, CG(function_table) TSRMLS_CC);
b = TG(internal_function_tail) ? TG(internal_function_tail)->pListNext : TG(function_table).pListHead;
for (; b; b = b->pListNext) {
ALLOC_INIT_ZVAL(zv);
array_init(zv);
xc_dasm_zend_function(zv, b->pData TSRMLS_CC);
add_u_assoc_zval_ex(list, BUCKET_KEY_TYPE(b), b->arKey, b->nKeyLength, zv);
}
add_assoc_zval_ex(dst, ZEND_STRS("function_table"), list);
buf = emalloc(bufsize);
ALLOC_INIT_ZVAL(list);
array_init(list);
for (b = CG(class_table)->pListHead; b; b = b->pListNext) {
b = TG(internal_class_tail) ? TG(internal_class_tail)->pListNext : TG(class_table).pListHead;
for (; b; b = b->pListNext) {
ALLOC_INIT_ZVAL(zv);
array_init(zv);
xc_dasm_zend_class_entry(zv, CestToCePtr(*(xc_cest_t *)b->pData) TSRMLS_CC);
@ -96,7 +111,7 @@ void xc_dasm_string(zval *dst, zval *source TSRMLS_DC) /* {{{ */
goto err_compile;
}
xc_dasm(dst, op_array TSRMLS_CC);
xc_dasm(&sandbox, dst, op_array TSRMLS_CC);
/* free */
efree(eval_name);
@ -141,7 +156,7 @@ void xc_dasm_file(zval *dst, const char *filename TSRMLS_DC) /* {{{ */
goto err_compile;
}
xc_dasm(dst, op_array TSRMLS_CC);
xc_dasm(&sandbox, dst, op_array TSRMLS_CC);
/* free */
#ifdef ZEND_ENGINE_2

Loading…
Cancel
Save