mirror of
https://github.com/php/php-src.git
synced 2025-08-16 14:08:47 +02:00
Don't fiddle with NDEBUG in C code (GH-16511)
* Don't fiddle with NDEBUG in C code It is way to late to do this in php.h, since assert.h has already been included. Even pushing that down to zend_portability.h may not have the desired effect. Instead we define or undefine NDEBUG as CFLAG, so that it works in all circumstances. As a last resort we fail at build time, if `NDEBUG` is defined when `ZEND_DEBUG` is enabled. We also remove the useless workaround in zend_test to include assert.h again, since that usually won't have any effect anyway. Co-authored-by: Arnaud Le Blanc <arnaud.lb@gmail.com>
This commit is contained in:
parent
361fb400ef
commit
836a162089
5 changed files with 10 additions and 14 deletions
|
@ -47,6 +47,9 @@
|
||||||
#include "../TSRM/TSRM.h"
|
#include "../TSRM/TSRM.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#if ZEND_DEBUG && defined(NDEBUG)
|
||||||
|
# error "NDEBUG must not be defined when ZEND_DEBUG is enabled"
|
||||||
|
#endif
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
|
|
@ -799,6 +799,8 @@ PHP_ARG_ENABLE([debug],
|
||||||
AS_VAR_IF([PHP_DEBUG], [yes], [
|
AS_VAR_IF([PHP_DEBUG], [yes], [
|
||||||
PHP_DEBUG=1
|
PHP_DEBUG=1
|
||||||
ZEND_DEBUG=yes
|
ZEND_DEBUG=yes
|
||||||
|
CFLAGS="$CFLAGS -UNDEBUG"
|
||||||
|
CXXFLAGS="$CXXFLAGS -UNDEBUG"
|
||||||
PHP_REMOVE_OPTIMIZATION_FLAGS
|
PHP_REMOVE_OPTIMIZATION_FLAGS
|
||||||
dnl Add -O0 only if GCC or ICC is used.
|
dnl Add -O0 only if GCC or ICC is used.
|
||||||
if test "$GCC" = "yes" || test "$ICC" = "yes"; then
|
if test "$GCC" = "yes" || test "$ICC" = "yes"; then
|
||||||
|
@ -817,6 +819,8 @@ AS_VAR_IF([PHP_DEBUG], [yes], [
|
||||||
], [
|
], [
|
||||||
PHP_DEBUG=0
|
PHP_DEBUG=0
|
||||||
ZEND_DEBUG=no
|
ZEND_DEBUG=no
|
||||||
|
CFLAGS="$CFLAGS -DNDEBUG"
|
||||||
|
CXXFLAGS="$CXXFLAGS -DNDEBUG"
|
||||||
])
|
])
|
||||||
|
|
||||||
PHP_ARG_ENABLE([debug-assertions],
|
PHP_ARG_ENABLE([debug-assertions],
|
||||||
|
@ -829,6 +833,8 @@ PHP_ARG_ENABLE([debug-assertions],
|
||||||
AS_VAR_IF([PHP_DEBUG_ASSERTIONS], [yes], [
|
AS_VAR_IF([PHP_DEBUG_ASSERTIONS], [yes], [
|
||||||
PHP_DEBUG=1
|
PHP_DEBUG=1
|
||||||
ZEND_DEBUG=yes
|
ZEND_DEBUG=yes
|
||||||
|
CFLAGS="$CFLAGS -UNDEBUG"
|
||||||
|
CXXFLAGS="$CXXFLAGS -UNDEBUG"
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_ARG_ENABLE([zts],
|
AC_ARG_ENABLE([zts],
|
||||||
|
|
|
@ -38,12 +38,6 @@
|
||||||
#include "zend_exceptions.h"
|
#include "zend_exceptions.h"
|
||||||
#include "zend_mm_custom_handlers.h"
|
#include "zend_mm_custom_handlers.h"
|
||||||
|
|
||||||
// `php.h` sets `NDEBUG` when not `PHP_DEBUG` which will make `assert()` from
|
|
||||||
// assert.h a no-op. In order to have `assert()` working on NDEBUG builds, we
|
|
||||||
// undefine `NDEBUG` and re-include assert.h
|
|
||||||
#undef NDEBUG
|
|
||||||
#include "assert.h"
|
|
||||||
|
|
||||||
#if defined(HAVE_LIBXML) && !defined(PHP_WIN32)
|
#if defined(HAVE_LIBXML) && !defined(PHP_WIN32)
|
||||||
# include <libxml/globals.h>
|
# include <libxml/globals.h>
|
||||||
# include <libxml/parser.h>
|
# include <libxml/parser.h>
|
||||||
|
|
|
@ -109,13 +109,6 @@ typedef int pid_t;
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PHP_DEBUG
|
|
||||||
#undef NDEBUG
|
|
||||||
#else
|
|
||||||
#ifndef NDEBUG
|
|
||||||
#define NDEBUG
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#ifdef HAVE_UNIX_H
|
#ifdef HAVE_UNIX_H
|
||||||
|
|
|
@ -3429,7 +3429,7 @@ function toolset_setup_common_libs()
|
||||||
function toolset_setup_build_mode()
|
function toolset_setup_build_mode()
|
||||||
{
|
{
|
||||||
if (PHP_DEBUG == "yes") {
|
if (PHP_DEBUG == "yes") {
|
||||||
ADD_FLAG("CFLAGS", "/LDd /MDd /Od /D ZEND_DEBUG=1 " +
|
ADD_FLAG("CFLAGS", "/LDd /MDd /Od /U NDebug /U NDEBUG /D ZEND_DEBUG=1 " +
|
||||||
(TARGET_ARCH == 'x86'?"/ZI":"/Zi"));
|
(TARGET_ARCH == 'x86'?"/ZI":"/Zi"));
|
||||||
ADD_FLAG("LDFLAGS", "/debug");
|
ADD_FLAG("LDFLAGS", "/debug");
|
||||||
// Avoid problems when linking to release libraries that use the release
|
// Avoid problems when linking to release libraries that use the release
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue