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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: purerory at hotmail dot com
New email:
PHP Version: OS:

 

 [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 15:01:30 2024 UTC