From:             sbraun at emlix dot com
Operating system: linux
PHP version:      5.3.0
PHP Bug Type:     Dynamic loading
Bug description:  cross compile fails to find dlopen, libdl, HAVE_DLOPEN, 
HAVE_LIBDL

Description:
------------
I cross compile libphp5.so in a i486-pc-linux-gnu chroot, the compiler is
an i486-pc-linux-gnu-gcc that produces code for an i686-pc-linux-gnu target
(the compile runs as part of an embedded systems build system).

When I load the libphp5.so into apache, it fails with:
httpd: Syntax error on line 54 of /etc/httpd/conf/httpd.conf: Cannot load
/usr/lib/apache/libphp5.so into server: /usr/lib/apache/libphp5.so:
undefined symbol: php_load_extension 

php_load_extension from dl.c is guarded by #ifdef HAVE_LIBDL

objdump -x libphp5.so:
00000000         *UND*  00000000              php_load_extension

In my cross_compile situtation, the #defines for dlopen and libdl are not
set, thus HAVE_DLOPEN and HAVE_LIBDL are not in main/php_config.h, yet my
system provides dlopen() via dl.so.

Naturally, dl.so is there in my chroot and provides dlopen(), and the
configure script finds this fact when searching for dlopen() respectively
__dlopen(), yet then it throws the findings away, the relevant lines in the
configure script are:
------------------
  if test "$found" = "yes"; then
    ac_libs=$LIBS
    LIBS="$LIBS -ldl"
    if test "$cross_compiling" = yes; then
  found=no
else
------------------
Later, writing the #defines HAVE_DLOPEN and HAVE_LIBDL is guarded by: 
------------------
  if test "$found" = "yes"; then
------------------




Reproduce code:
---------------
autoconf configure.in > configure
build_platform=i486-pc-linux-gnu
target_platform=i486-pc-linux-gnu
PKG_CONFIG_PATH=${sysroot}/usr/lib/pkgconfig \
./configure \
        --prefix=${_prefix} \
        --build=${build_platform} \
        --host=${target_platform} \
        --target=${target_platform} \
        --mandir=${_mandir} \
        --with-apxs2="${sysroot}${_sbindir}/apxs" \
        --with-libxml-dir="${sysroot}${_prefix}" \
        --with-openssl \
        --without-iconv \
        --disable-cli \
        ;

start apache with a line in httpd.conf:
LoadModule php5_module /usr/lib/apache/libphp5.so

you get the error described above

Expected result:
----------------
well, it should load and stuff

Actual result:
--------------
Instead I will provide some bugfix suggestion:

I am not so much a friend of autoconf, so i think i am maybe not the right
person to provide a patch directly. Maybe there is a reason for the
behaviour. I am going to comment the problematic line out in my project,
patch would be welcome.

# phps configure mysteriously refuses to use found libdl
#    if test "$cross_compiling" = yes; then
#  found=no

regards
Simon Braunschmidt


-- 
Edit bug report at http://bugs.php.net/?id=49314&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=49314&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=49314&r=trysnapshot53
Try a snapshot (PHP 6.0):            
http://bugs.php.net/fix.php?id=49314&r=trysnapshot60
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=49314&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=49314&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=49314&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=49314&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=49314&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=49314&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=49314&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=49314&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=49314&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=49314&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=49314&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=49314&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=49314&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=49314&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=49314&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=49314&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=49314&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=49314&r=mysqlcfg

Reply via email to