mirror of
https://github.com/php/php-src.git
synced 2024-09-27 12:57:26 +00:00
Merge phpdbg into PHP-5.6
Conflicts: sapi/phpdbg/phpdbg.c sapi/phpdbg/phpdbg_prompt.c
This commit is contained in:
parent
e7ddcbcb86
commit
35d90d3858
4
phpdbg.c
4
phpdbg.c
@ -1343,7 +1343,7 @@ phpdbg_main:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* setup remote server if necessary */
|
/* setup remote server if necessary */
|
||||||
if (!cleaning && listen > 0) {
|
if (cleaning <= 0 && listen > 0) {
|
||||||
server = phpdbg_open_socket(address, listen TSRMLS_CC);
|
server = phpdbg_open_socket(address, listen TSRMLS_CC);
|
||||||
if (-1 > server || phpdbg_remote_init(address, listen, server, &socket, &stream TSRMLS_CC) == FAILURE) {
|
if (-1 > server || phpdbg_remote_init(address, listen, server, &socket, &stream TSRMLS_CC) == FAILURE) {
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -1466,7 +1466,7 @@ phpdbg_main:
|
|||||||
|
|
||||||
if (exec) { /* set execution context */
|
if (exec) { /* set execution context */
|
||||||
PHPDBG_G(exec) = phpdbg_resolve_path(exec TSRMLS_CC);
|
PHPDBG_G(exec) = phpdbg_resolve_path(exec TSRMLS_CC);
|
||||||
PHPDBG_G(exec_len) = strlen(PHPDBG_G(exec));
|
PHPDBG_G(exec_len) = strlen(exec);
|
||||||
|
|
||||||
free(exec);
|
free(exec);
|
||||||
exec = NULL;
|
exec = NULL;
|
||||||
|
5
phpdbg.h
5
phpdbg.h
@ -29,8 +29,12 @@
|
|||||||
# define PHPDBG_API
|
# define PHPDBG_API
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef PHP_WIN32
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
# include <stddef.h>
|
# include <stddef.h>
|
||||||
|
#else
|
||||||
|
# include "win32/php_stdint.h"
|
||||||
|
#endif
|
||||||
#include "php.h"
|
#include "php.h"
|
||||||
#include "php_globals.h"
|
#include "php_globals.h"
|
||||||
#include "php_variables.h"
|
#include "php_variables.h"
|
||||||
@ -50,7 +54,6 @@
|
|||||||
#if defined(_WIN32) && !defined(__MINGW32__)
|
#if defined(_WIN32) && !defined(__MINGW32__)
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include "config.w32.h"
|
# include "config.w32.h"
|
||||||
# include "win32/php_stdint.h"
|
|
||||||
# undef strcasecmp
|
# undef strcasecmp
|
||||||
# undef strncasecmp
|
# undef strncasecmp
|
||||||
# define strcasecmp _stricmp
|
# define strcasecmp _stricmp
|
||||||
|
@ -653,6 +653,10 @@ PHPDBG_COMMAND(run) /* {{{ */
|
|||||||
EG(opline_ptr) = orig_opline;
|
EG(opline_ptr) = orig_opline;
|
||||||
EG(return_value_ptr_ptr) = orig_retval_ptr;
|
EG(return_value_ptr_ptr) = orig_retval_ptr;
|
||||||
|
|
||||||
|
if (PHPDBG_G(flags) & PHPDBG_IS_QUITTING) {
|
||||||
|
zend_bailout();
|
||||||
|
}
|
||||||
|
|
||||||
if (!(PHPDBG_G(flags) & PHPDBG_IS_STOPPING)) {
|
if (!(PHPDBG_G(flags) & PHPDBG_IS_STOPPING)) {
|
||||||
phpdbg_error("stop", "type=\"bailout\"", "Caught exit/error from VM");
|
phpdbg_error("stop", "type=\"bailout\"", "Caught exit/error from VM");
|
||||||
restore = 0;
|
restore = 0;
|
||||||
@ -1143,6 +1147,7 @@ PHPDBG_COMMAND(quit) /* {{{ */
|
|||||||
/* don't allow this to loop, ever ... */
|
/* don't allow this to loop, ever ... */
|
||||||
if (!(PHPDBG_G(flags) & PHPDBG_IS_STOPPING)) {
|
if (!(PHPDBG_G(flags) & PHPDBG_IS_STOPPING)) {
|
||||||
PHPDBG_G(flags) |= PHPDBG_IS_QUITTING;
|
PHPDBG_G(flags) |= PHPDBG_IS_QUITTING;
|
||||||
|
PHPDBG_G(flags) &= ~(PHPDBG_IS_RUNNING | PHPDBG_IS_CLEANING);
|
||||||
zend_bailout();
|
zend_bailout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1438,7 +1443,7 @@ void phpdbg_execute_ex(zend_op_array *op_array TSRMLS_DC) /* {{{ */
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((PHPDBG_G(flags) & (PHPDBG_IS_STOPPING | PHPDBG_IS_RUNNING)) == PHPDBG_IS_STOPPING) {
|
if ((PHPDBG_G(flags) & PHPDBG_IS_STOPPING) && !(PHPDBG_G(flags) & PHPDBG_IS_RUNNING)) {
|
||||||
zend_bailout();
|
zend_bailout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,30 +33,31 @@ SigIoWatcherThread(VOID *p)
|
|||||||
struct win32_sigio_watcher_data *swd = (struct win32_sigio_watcher_data *)p;
|
struct win32_sigio_watcher_data *swd = (struct win32_sigio_watcher_data *)p;
|
||||||
#ifdef ZTS
|
#ifdef ZTS
|
||||||
void ***tsrm_ls = swd->tsrm_ls;
|
void ***tsrm_ls = swd->tsrm_ls;
|
||||||
top:
|
|
||||||
(void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1, tsrm_ls);
|
|
||||||
#else
|
|
||||||
top:
|
|
||||||
(void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
top:
|
||||||
|
(void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1 TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
if (3 == sig) {
|
if (3 == sig) {
|
||||||
printf("signaled, got %d", sig);
|
|
||||||
/* XXX completely not sure it is done right here */
|
/* XXX completely not sure it is done right here */
|
||||||
if (swd->flags & PHPDBG_IS_INTERACTIVE) {
|
if (PHPDBG_G(flags) & PHPDBG_IS_INTERACTIVE) {
|
||||||
if (raise(sig)) {
|
if (raise(sig)) {
|
||||||
/* just out*/
|
goto top;
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (swd->flags & PHPDBG_IS_SIGNALED) {
|
if (PHPDBG_G(flags) & PHPDBG_IS_SIGNALED) {
|
||||||
phpdbg_set_sigsafe_mem(&sig TSRMLS_CC);
|
phpdbg_set_sigsafe_mem(&sig TSRMLS_CC);
|
||||||
zend_try {
|
zend_try {
|
||||||
phpdbg_force_interruption(TSRMLS_C);
|
phpdbg_force_interruption(TSRMLS_C);
|
||||||
} zend_end_try();
|
} zend_end_try();
|
||||||
phpdbg_clear_sigsafe_mem(TSRMLS_C);
|
phpdbg_clear_sigsafe_mem(TSRMLS_C);
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
|
if (!(PHPDBG_G(flags) & PHPDBG_IS_INTERACTIVE)) {
|
||||||
|
PHPDBG_G(flags) |= PHPDBG_IS_SIGNALED;
|
||||||
|
}
|
||||||
|
end:
|
||||||
/* XXX set signaled flag to the caller thread, question is - whether it's needed */
|
/* XXX set signaled flag to the caller thread, question is - whether it's needed */
|
||||||
ExitThread(sig);
|
ExitThread(sig);
|
||||||
} else {
|
} else {
|
||||||
@ -74,8 +75,6 @@ sigio_watcher_start(void)
|
|||||||
TSRMLS_FETCH();
|
TSRMLS_FETCH();
|
||||||
|
|
||||||
PHPDBG_G(swd).fd = PHPDBG_G(io)[PHPDBG_STDIN].fd;
|
PHPDBG_G(swd).fd = PHPDBG_G(io)[PHPDBG_STDIN].fd;
|
||||||
PHPDBG_G(swd).running = 1;
|
|
||||||
PHPDBG_G(swd).flags = PHPDBG_G(flags);
|
|
||||||
#ifdef ZTS
|
#ifdef ZTS
|
||||||
PHPDBG_G(swd).tsrm_ls = tsrm_ls;
|
PHPDBG_G(swd).tsrm_ls = tsrm_ls;
|
||||||
#endif
|
#endif
|
||||||
@ -113,8 +112,6 @@ sigio_watcher_stop(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PHPDBG_G(swd).fd = -1;
|
PHPDBG_G(swd).fd = -1;
|
||||||
PHPDBG_G(swd).running = 0;
|
|
||||||
PHPDBG_G(swd).flags = 0;
|
|
||||||
PHPDBG_G(sigio_watcher_thread) = INVALID_HANDLE_VALUE;
|
PHPDBG_G(sigio_watcher_thread) = INVALID_HANDLE_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,12 +25,10 @@
|
|||||||
#include "phpdbg_io.h"
|
#include "phpdbg_io.h"
|
||||||
|
|
||||||
struct win32_sigio_watcher_data {
|
struct win32_sigio_watcher_data {
|
||||||
zend_ulong flags;
|
|
||||||
#ifdef ZTS
|
#ifdef ZTS
|
||||||
void ***tsrm_ls;
|
void ***tsrm_ls;
|
||||||
#endif
|
#endif
|
||||||
int fd;
|
int fd;
|
||||||
zend_uchar running;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user