ID: 50140 Updated by: theta...@php.net Reported By: basant dot kukreja at gmail dot com Status: Feedback Bug Type: iPlanet related Operating System: Linux PHP Version: 5.3SVN-2009-11-10 (SVN) -Assigned To: +Assigned To: thetaphi New Comment:
I'll take care. Thanks for the patch! Will commit this to 5.3 and trunk. Previous Comments: ------------------------------------------------------------------------ [2009-11-17 19:58:46] basa...@php.net Here is the link to the patch (submitted in previous comments) : http://bitbucket.org/basantk/phpbugs/raw/d3b5e6d6e344/php_gcc_nsapi_fix.txt ------------------------------------------------------------------------ [2009-11-11 17:39:51] basa...@php.net Thanks Jani for your suggestion. Based on your suggestion, I have revised the patch. Here is the new patch : --------------------------------------------- Index: sapi/nsapi/nsapi.c =================================================================== --- sapi/nsapi/nsapi.c (revision 290447) +++ sapi/nsapi/nsapi.c (working copy) @@ -67,6 +67,11 @@ * NSAPI includes */ #include "nsapi.h" +/* fix for gcc4 visibility issue */ +#ifndef PHP_WIN32 +# undef NSAPI_PUBLIC +# define NSAPI_PUBLIC PHPAPI +#endif #define NSLS_D struct nsapi_request_context *request_context #define NSLS_DC , NSLS_D ------------------------------------------- With this patch, when I preprocess the file, on linux I get following for php5_init : int __attribute__ ((visibility("default"))) php5_init(pblock *pb, Session *sn, Request *rq) ------------------------------------------- The above correctly export the symbols. ------------------------------------------------------------------------ [2009-11-11 12:35:11] j...@php.net Check how this is fixed for Apache: sapi/apache2handler/php_apache.h and search for "visibility". I think you should do that instead of using any #pragma's. ------------------------------------------------------------------------ [2009-11-10 19:20:57] basa...@php.net >From nsapi.h : #ifdef XP_UNIX #define NSAPI_PUBLIC ... It seems NSAPI_PUBLIC is expanded to empty string. -------------------------------------------- When I expanded after preprocessing nsapi.c, here is what I got : # 915 ".../php-src-5.3/sapi/nsapi/nsapi.c" int php5_init(pblock *pb, Session *sn, Request *rq) -------------------------------------- So we need to tell gcc to export the NSAPI_PUBLIC symbols. ------------------------------------------------------------------------ [2009-11-10 19:14:51] basa...@php.net The previous patch didn't resolve the problem, here is what helped resolved the issue. NSAPI_PUBLIC should have made the symbols public but it seems it doesn't. Index: sapi/nsapi/nsapi.c =================================================================== --- sapi/nsapi/nsapi.c (revision 290447) +++ sapi/nsapi/nsapi.c (working copy) @@ -67,6 +67,7 @@ * NSAPI includes */ #include "nsapi.h" +#pragma GCC visibility push(default) #define NSLS_D struct nsapi_request_context *request_context #define NSLS_DC , NSLS_D ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/50140 -- Edit this bug report at http://bugs.php.net/?id=50140&edit=1