php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #20677 Compile fail w/DB2 on AIX: Macro cannot be redefined
Submitted: 2002-11-27 09:50 UTC Modified: 2003-01-04 12:57 UTC
From: purerory at hotmail dot com Assigned:
Status: Not a bug Package: ODBC related
PHP Version: 4CVS-2002-11-27 (dev) OS: AIX 5.1L
Private report: No CVE-ID: None
 [2002-11-27 09:50 UTC] purerory at hotmail dot com
AIX 5.1L , ibm VAC 6.0 compiler
xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192
DB2 7.1
11-27 CVS 

packaged "configure" deleted, rebuilt using buildconf
Configured as:
./configure --with-apxs=/usr/sbin/apxs \
        --enable-track-vars --enable-versioning \
        --with-ibm-db2=/home/db2inst1/sqllib --sysconfdir=/etc \
        --enable-force-cgi-redirect --enable-c9x-inline\
        --with-mysql=/opt/freeware/
Configure works fine (no warnings or errors), make fails with:
# make
        /bin/sh libtool --silent --mode=compile xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -qnolm  -Iext/ctype/ -I/usr/purerory/php4cvs/ext/ctype/ -DPHP_ATOM_INC -I/usr/purerory/php4cvs/include -I/usr/purerory/php4cvs/main -I/usr/purerory/php4cvs -I/usr/purerory/php4cvs/Zend -I/opt/freeware//include/mysql -I/usr/purerory/php4cvs/ext/xml/expat  -I /usr/local/include -DAIX=43 -DUSE_PTHREAD_SERIALIZED_ACCEPT -DAIX_BIND_PROCESSOR -DUSE_HSREGEX -I/usr/purerory/php4cvs/TSRM  -I /usr/local/include  -prefer-pic -c /usr/purerory/php4cvs/ext/ctype/ctype.c -o ext/ctype/ctype.lo 
"/usr/include/alloca.h", line 20.1: 1506-224 (I) Incorrect pragma ignored.
        /bin/sh libtool --silent --mode=compile xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -qnolm  -Iext/mysql/ -I/usr/purerory/php4cvs/ext/mysql/ -DPHP_ATOM_INC -I/usr/purerory/php4cvs/include -I/usr/purerory/php4cvs/main -I/usr/purerory/php4cvs -I/usr/purerory/php4cvs/Zend -I/opt/freeware//include/mysql -I/usr/purerory/php4cvs/ext/xml/expat  -I /usr/local/include -DAIX=43 -DUSE_PTHREAD_SERIALIZED_ACCEPT -DAIX_BIND_PROCESSOR -DUSE_HSREGEX -I/usr/purerory/php4cvs/TSRM  -I /usr/local/include  -prefer-pic -c /usr/purerory/php4cvs/ext/mysql/php_mysql.c -o ext/mysql/php_mysql.lo 
"/usr/include/alloca.h", line 20.1: 1506-224 (I) Incorrect pragma ignored.
        /bin/sh libtool --silent --mode=compile xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -qnolm -I/home/db2inst1/sqllib/include -Iext/odbc/ -I/usr/purerory/php4cvs/ext/odbc/ -DPHP_ATOM_INC -I/usr/purerory/php4cvs/include -I/usr/purerory/php4cvs/main -I/usr/purerory/php4cvs -I/usr/purerory/php4cvs/Zend -I/opt/freeware//include/mysql -I/usr/purerory/php4cvs/ext/xml/expat  -I /usr/local/include -DAIX=43 -DUSE_PTHREAD_SERIALIZED_ACCEPT -DAIX_BIND_PROCESSOR -DUSE_HSREGEX -I/usr/purerory/php4cvs/TSRM  -I /usr/local/include  -prefer-pic -c /usr/purerory/php4cvs/ext/odbc/php_odbc.c -o ext/odbc/php_odbc.lo 
"/usr/include/alloca.h", line 20.1: 1506-224 (I) Incorrect pragma ignored.
"/usr/purerory/php4cvs/ext/standard/php_image.h", line 48.21: 1506-275 (S) Unexpected text ',' encountered.
"/home/db2inst1/sqllib/include/sqlcli.h", line 718.9: 1506-213 (S) Macro name ODBCVER cannot be redefined.
"/home/db2inst1/sqllib/include/sqlcli.h", line 718.9: 1506-358 (I) "ODBCVER" is defined on line 27 of /usr/purerory/php4cvs/ext/odbc/php_odbc.h.
"/home/db2inst1/sqllib/include/sqlcli1.h", line 126.10: 1506-213 (S) Macro name SQL_EXT_API_LAST cannot be redefined.
"/home/db2inst1/sqllib/include/sqlcli1.h", line 126.10: 1506-358 (I) "SQL_EXT_API_LAST" is defined on line 621 of /home/db2inst1/sqllib/include/sqlext.h.
"/home/db2inst1/sqllib/include/sqlcli1.h", line 207.10: 1506-213 (S) Macro name SQL_OJ_CAPABILITIES cannot be redefined.
"/home/db2inst1/sqllib/include/sqlcli1.h", line 207.10: 1506-358 (I) "SQL_OJ_CAPABILITIES" is defined on line 764 of /home/db2inst1/sqllib/include/sqlext.h.
"/home/db2inst1/sqllib/include/sqlcli1.h", line 219.9: 1506-213 (S) Macro name SQL_INFO_LAST cannot be redefined.
"/home/db2inst1/sqllib/include/sqlcli1.h", line 219.9: 1506-358 (I) "SQL_INFO_LAST" is defined on line 776 of /home/db2inst1/sqllib/include/sqlext.h.
"/usr/purerory/php4cvs/ext/odbc/php_odbc.c", line 199.30: 1506-280 (S) Function argument assignment between types "long" and "void*" is not allowed.
... last item repeats 55 times on different lines of php_odbc.c, as above

Same compile error on PHP 4.2.3 and 11-27 Stable
Problem is similar to bug #13695, which was closed as "no feedback"

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-12-02 09:30 UTC] purerory at hotmail dot com
removing "-ma" from CCFLAGS gets rid of the incorrect pragma errors.
No effect on the other problems.
Reset problem type to "Compile Failure" (original intent)
 [2002-12-02 18:57 UTC] sniper@php.net
Reclassified as ODBC related problem since that's where the bug is..

 [2002-12-02 23:28 UTC] kalowsky@php.net
Well the CCFLAG isn't set inside of the ODBC config.m4.

Does this happen with only the --with-ibm-db2 option choosen?  Aka whats the minimal amount of configure options that causes this to not happen.

I don't see anything glaringly wrong... the only thing that comes to mind is the ODBCVER issue which hasn't been a problem in the past.
 [2002-12-03 14:50 UTC] purerory at hotmail dot com
This happens only with "--with-ibm-db2" option in the configure.
When I remove this option and the compile completes, although theres quite a few 'function argument assignment between types "const unsigned char*" and "char*" is not allowed"'
type errors, they don't prevent the make
 [2002-12-05 19:53 UTC] kalowsky@php.net
Okay so when you do a ./configure --with-ibm-db2=/path you get this error?
 [2003-01-02 09:37 UTC] purerory at hotmail dot com
(To answer the question previously posed, yes, I got the error with JUST the ibm-db2 option on the configure line)
However
Got some help from an IBM compiler expert. Found two environment problems:
1) space between -L and the parameter in LDFLAGS
2) no ANSI setting on the command line
The following environment settings allow the compile to complete successfully:
export CC="xlc_r -qlanglvl=extended -qansialias -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-DEAPI -I/usr/local/include -v "
export LDFLAGS="-L/usr/local/lib "
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS
then...
./configure --with-apxs=/opt/freeware/apache/bin/apxs \
        --enable-track-vars --enable-versioning \
        --with-ibm-db2=/home/db2inst1/sqllib --sysconfdir=/etc \
        --enable-force-cgi-redirect --enable-c9x-inline\
        --with-mysql=/opt/freeware/
make clean
make
make install
Compiles! Works as a command line interpreter!
Coredumps as an apache module (d'oh)
/usr/sbin/apachectl[163]: 29560 Segmentation fault(coredump)
# dbx /opt/freeware/apache/bin/httpd core
Type 'help' for help.
reading symbolic information ...
[using memory image in core]

Segmentation fault in php_xbithack_handler_52_28 at 0xd4d68cd4 ($t1)
0xd4d68cd4 (php_xbithack_handler_52_28+0xdc) 800c0000        lwz   r0,0x0(r12)
(dbx) where     
php_xbithack_handler_52_28() at 0xd4d68cd4
php_create_dir() at 0xd4d675b8
ap_single_module_configure() at 0x1000eae0
load_module() at 0x10043a8c
invoke_cmd() at 0x1000b414
ap_handle_command() at 0x1000cdfc
ap_srm_command_loop() at 0x1000eb5c
ap_process_resource_config() at 0x1000d7e0
ap_read_config() at 0x1000e9c4
http_main.main() at 0x10000740
(dbx)
 [2003-01-04 12:57 UTC] kalowsky@php.net
Okay I believe this wasn't a PHP error on the compile issue at all since the -L space is nowhere to be found in the config.m4 for DB2.  Marking this as bogus for that part.

As far as the xbithack_handler section goes, you may want to open a new bug with this in mind.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 10:01:28 2024 UTC