Hi Wez, Could you please give me more info about the issue. What is your GCC version? Does it related to GCC version? What error do you have? Is this problem described somewhere?
Thanks. Dmitry. > -----Original Message----- > From: Wez Furlong [mailto:[EMAIL PROTECTED] > Sent: Wednesday, November 07, 2007 6:00 PM > To: Dmitry Stogov > Cc: internals@lists.php.net > Subject: Re: [PHP-DEV] zend.h breaks system headers on OSX in PHP 5.3 > > > This is not an OSX specific issue, it's a symbol leakage issue that > can break potentially any library that uses that feature of gcc. I > just happened to notice it on OSX. > > Better to rename our symbols to avoid conflict. > > --Wez. > > On Nov 7, 2007, at 2:48 AM, Dmitry Stogov wrote: > > > May be it is better to just define always_inline as inline on OSX. > > Something like: > > > > #if defined(__GNUC__) && !defined(OSX) > > ... > > > > Thanks. Dmitry. > > > >> -----Original Message----- > >> From: Wez Furlong [mailto:[EMAIL PROTECTED] > >> Sent: Wednesday, November 07, 2007 7:43 AM > >> To: internals@lists.php.net > >> Subject: [PHP-DEV] zend.h breaks system headers on OSX in PHP 5.3 > >> > >> > >> The system headers on OSX use __attribute__((always_inline)) and > >> zend.h defines always_inline to something else, breaking the build > >> when the compiler tries to resolve that attribute name. > >> > >> A solution is to prefix the defines used in the engine > with zend or > >> ZEND or other similar namespacing token, which I thought was our > >> standard practice, considering everything else in there > has a prefix. > >> > >> If there have been other similar changes elsewhere, they > should also > >> be fixed > >> > >> --Wez. > >> > >> Index: zend.h > >> =================================================================== > >> RCS file: /repository/ZendEngine2/zend.h,v > >> retrieving revision 1.293.2.11.2.9.2.9 > >> diff -u -p -r1.293.2.11.2.9.2.9 zend.h > >> --- zend.h 2 Nov 2007 19:40:37 -0000 1.293.2.11.2.9.2.9 > >> +++ zend.h 7 Nov 2007 04:36:01 -0000 > >> @@ -324,42 +324,42 @@ struct _zval_struct { > >> #define Z_SET_ISREF_TO(z, isref) Z_SET_ISREF_TO_P(&(z), isref) > >> > >> #if defined(__GNUC__) > >> -#define always_inline inline __attribute__((always_inline)) > >> +#define zend_always_inline inline __attribute__((always_inline)) > >> #elif defined(_MSC_VER) > >> -#define always_inline __forceinline > >> +#define zend_always_inline __forceinline > >> #else > >> -#define always_inline inline > >> +#define zend_always_inline inline > >> #endif > >> > >> -static always_inline zend_uint zval_refcount_p(zval* pz) { > >> +static zend_always_inline zend_uint zval_refcount_p(zval* pz) { > >> return pz->refcount__gc; > >> } > >> > >> -static always_inline zend_uint zval_set_refcount_p(zval* pz, > >> zend_uint rc) { > >> +static zend_always_inline zend_uint zval_set_refcount_p(zval* pz, > >> zend_uint rc) { > >> return pz->refcount__gc = rc; > >> } > >> > >> -static always_inline zend_uint zval_addref_p(zval* pz) { > >> +static zend_always_inline zend_uint zval_addref_p(zval* pz) { > >> return ++pz->refcount__gc; > >> } > >> > >> -static always_inline zend_uint zval_delref_p(zval* pz) { > >> +static zend_always_inline zend_uint zval_delref_p(zval* pz) { > >> return --pz->refcount__gc; > >> } > >> > >> -static always_inline zend_bool zval_isref_p(zval* pz) { > >> +static zend_always_inline zend_bool zval_isref_p(zval* pz) { > >> return pz->is_ref__gc; > >> } > >> > >> -static always_inline zend_bool zval_set_isref_p(zval* pz) { > >> +static zend_always_inline zend_bool zval_set_isref_p(zval* pz) { > >> return pz->is_ref__gc = 1; > >> } > >> > >> -static always_inline zend_bool zval_unset_isref_p(zval* pz) { > >> +static zend_always_inline zend_bool zval_unset_isref_p(zval* pz) { > >> return pz->is_ref__gc = 0; > >> } > >> > >> -static always_inline zend_bool zval_set_isref_to_p(zval* pz, > >> zend_bool isref) { > >> +static zend_always_inline zend_bool zval_set_isref_to_p(zval* pz, > >> zend_bool isref) { > >> return pz->is_ref__gc = isref; > >> } > >> > >> -- > >> PHP Internals - PHP Runtime Development Mailing List > >> To unsubscribe, visit: http://www.php.net/unsub.php > >> > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php