From: Anatol Belski Date: Tue, 17 Feb 2015 18:15:22 +0000 (+0100) Subject: improve debugability in TS debug builds X-Git-Tag: PRE_PHP7_EREG_MYSQL_REMOVALS~128 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d428bf2d4edab232690b64977aaf0a3b15585843;p=php improve debugability in TS debug builds gdb seems to be not always able to fetch the correct context for thread locals. Thus, the "if (TSRMLS_CACHE)" clause causes gdb to show crashes which aren't recognized neither with helgrind nor in release builds. This is reproducable by setting breakpoints on the exact line where PHP has a tsrm_get_ls_cache() call. --- diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index cdb6e87a22..859b3fac01 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -170,7 +170,11 @@ TSRM_API void *tsrm_get_ls_cache(void); #define TSRMG_STATIC(id, type, element) (((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element) #define TSRMLS_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE #define TSRMLS_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE = NULL +#if ZEND_DEBUG +#define TSRMLS_CACHE_UPDATE() TSRMLS_CACHE = tsrm_get_ls_cache() +#else #define TSRMLS_CACHE_UPDATE() if (!TSRMLS_CACHE) TSRMLS_CACHE = tsrm_get_ls_cache() +#endif #define TSRMLS_CACHE _tsrm_ls_cache /* BC only */