mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
105 lines
3.4 KiB
C
105 lines
3.4 KiB
C
/*
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) The PHP Group |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 3.01 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available through the world-wide-web at the following url: |
|
|
| https://www.php.net/license/3_01.txt |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
| Author: |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef PHP_TEST_H
|
|
#define PHP_TEST_H
|
|
|
|
#include "fiber.h"
|
|
|
|
extern zend_module_entry zend_test_module_entry;
|
|
#define phpext_zend_test_ptr &zend_test_module_entry
|
|
|
|
#define PHP_ZEND_TEST_VERSION "0.1.0"
|
|
|
|
#ifdef ZTS
|
|
#include "TSRM.h"
|
|
#endif
|
|
|
|
#if defined(ZTS) && defined(COMPILE_DL_ZEND_TEST)
|
|
ZEND_TSRMLS_CACHE_EXTERN()
|
|
#endif
|
|
|
|
ZEND_BEGIN_MODULE_GLOBALS(zend_test)
|
|
int observer_enabled;
|
|
int observer_show_output;
|
|
int observer_observe_all;
|
|
int observer_observe_includes;
|
|
int observer_observe_functions;
|
|
int observer_observe_declaring;
|
|
zend_array *observer_observe_function_names;
|
|
int observer_show_return_type;
|
|
int observer_show_return_value;
|
|
int observer_show_init_backtrace;
|
|
int observer_show_opcode;
|
|
char *observer_show_opcode_in_user_handler;
|
|
int observer_nesting_depth;
|
|
int observer_fiber_init;
|
|
int observer_fiber_switch;
|
|
int observer_fiber_destroy;
|
|
int observer_execute_internal;
|
|
HashTable global_weakmap;
|
|
int replace_zend_execute_ex;
|
|
int register_passes;
|
|
bool print_stderr_mshutdown;
|
|
zend_long limit_copy_file_range;
|
|
int observe_opline_in_zendmm;
|
|
zend_mm_heap* zend_orig_heap;
|
|
zend_mm_heap* zend_test_heap;
|
|
zend_test_fiber *active_fiber;
|
|
zend_long quantity_value;
|
|
zend_string *str_test;
|
|
zend_string *not_empty_str_test;
|
|
int zend_mm_custom_handlers_enabled;
|
|
|
|
// the previous heap that was found in ZendMM
|
|
zend_mm_heap* original_heap;
|
|
// the custom handlers that might have been found in the previous heap
|
|
void* (*custom_malloc)(size_t ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
|
|
void (*custom_free)(void* ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
|
|
void* (*custom_realloc)(void *, size_t ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
|
|
size_t (*custom_gc)(void);
|
|
void (*custom_shutdown)(bool, bool);
|
|
// this is our heap that we install our custom handlers on and inject into
|
|
// ZendMM
|
|
zend_mm_heap* observed_heap;
|
|
ZEND_END_MODULE_GLOBALS(zend_test)
|
|
|
|
extern ZEND_DECLARE_MODULE_GLOBALS(zend_test)
|
|
|
|
#define ZT_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(zend_test, v)
|
|
|
|
struct bug79096 {
|
|
uint64_t a;
|
|
uint64_t b;
|
|
};
|
|
|
|
#ifdef PHP_WIN32
|
|
# define PHP_ZEND_TEST_API __declspec(dllexport)
|
|
#elif defined(__GNUC__) && __GNUC__ >= 4
|
|
# define PHP_ZEND_TEST_API __attribute__ ((visibility("default")))
|
|
#else
|
|
# define PHP_ZEND_TEST_API
|
|
#endif
|
|
|
|
PHP_ZEND_TEST_API int ZEND_FASTCALL bug78270(const char *str, size_t str_len);
|
|
|
|
PHP_ZEND_TEST_API struct bug79096 bug79096(void);
|
|
PHP_ZEND_TEST_API void bug79532(off_t *array, size_t elems);
|
|
|
|
extern PHP_ZEND_TEST_API int *(*bug79177_cb)(void);
|
|
PHP_ZEND_TEST_API void bug79177(void);
|
|
|
|
#endif
|