ID:               50140
 Updated by:       basa...@php.net
 Reported By:      basant dot kukreja at gmail dot com
 Status:           Open
 Bug Type:         *General Issues
 Operating System: Linux
 PHP Version:      5.3SVN-2009-11-10 (SVN)
 New Comment:

Here is the snipp from gcc man page :
<man gcc>
"
 -fvisibility=default|internal|hidden|protected
...
          For those adding visibility support to existing code, you may
find #pragma GCC visibility of
           use.  This works by you enclosing the declarations you wish
to set visibility for with (for
           example) #pragma GCC visibility push(hidden) and #pragma GCC
visibility pop. 
...
"


Pusing default visibility before including nsapi.h (and popping after)
would
help in compiling and loading php correctly with nsapi servers.

Here is the patch against recent php 5.3 svn
--------------------------------------------
Index: sapi/nsapi/nsapi.c
===================================================================
--- sapi/nsapi/nsapi.c  (revision 290447)
+++ sapi/nsapi/nsapi.c  (working copy)
@@ -66,7 +66,9 @@
 /*
  * NSAPI includes
  */
+#pragma GCC visibility push(default)
 #include "nsapi.h"
+#pragma GCC visibility pop
 
 #define NSLS_D         struct nsapi_request_context *request_context
 #define NSLS_DC                , NSLS_D
--------------------------------------------




Previous Comments:
------------------------------------------------------------------------

[2009-11-10 18:48:30] basa...@php.net

Here is how symbols looks like :


$ nm .libs/libphp5.so | grep php5
004dcfb7 t php5_auth_trans
004dc661 t php5_close
004dc802 t php5_execute
004dc6d4 t php5_init

Symbols are not exported by default.

If we remove 
-fvisibility=hidden from compilation options then php compiles
fine and server is able to load libphp5.so correctly.


------------------------------------------------------------------------

[2009-11-10 18:46:36] basant dot kukreja at gmail dot com

Description:
------------
On Fedora 11, by default gcc uses 
"-fvisibility=hidden", When we compile it for Sun Web Server using
following
configure options, php compiles fine.
'./configure' '--with-nsapi=<server_path>' '--with-zlib'
'--prefix=/usr/local'

But when we start the web server, we get the following error : 

failure: CORE2253: Error running Init function load-modules: dlsym for
php5_init failed (<path>/lib/libphp5.so: undefined symbol: php5_init)
failure: server initialization failed



Expected result:
----------------
Server should be able to load php correctly.

Actual result:
--------------
Sun Web Server fails to start because of unexported symbols.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=50140&edit=1

Reply via email to