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

Reply via email to