ID: 27104 Updated by: [EMAIL PROTECTED] Reported By: alex dot php at epathology dot com dot au -Status: Assigned +Status: Closed Bug Type: CGI related Operating System: OpenBSD 3.3 -PHP Version: 4CVS, 5CVS +PHP Version: 4.3.4, 5CVS Assigned To: helly New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2004-02-08 12:00:54] [EMAIL PROTECTED] Assigned to Marcus who broke this in both CLI and CGI sapis. ------------------------------------------------------------------------ [2004-02-01 08:35:03] alex dot php at epathology dot com dot au $ gcc -v Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd3.3/2.95.3/specs gcc version 2.95.3 20010125 (prerelease, propolice) This is the default compiler that comes with OpenBSD 3.3. I just checked a draft copy of the ISO C99 specification, and it would seem that defining static optind and optarg variables after including unistd.h, which has extern declarations with the same name, results in undefined behaviour (6.2.2.7). So I guess the code violates standard C regardless of whether it works with some versions GCC. ------------------------------------------------------------------------ [2004-01-31 08:30:08] alex dot php at epathology dot com dot au Description: ------------ Trying to compile PHP 4.3.4 with the CLI SAPI module on OpenBSD 3.3 gives the warnings listed under 'actual result' related to the optind and optarg variables. The CLI binary produced then doesn't interpret its command line arguments properly. Fix: This seems to be due to the static optarg and optind variables in sapi/cli/php_cli.c conflicting with those of the standard library. The problem went away when I renamed these two variables. Reproduce code: --------------- ./configure \ --with-config-file-path=/var/www/conf \ --with-apxs \ --with-openssl \ --with-zlib \ --with-iconv \ --with-gettext \ --with-recode \ --with-pgsql \ --without-mysql \ --without-xml \ --enable-inline-optimization \ --enable-shared \ --enable-dio \ --enable-bcmath \ --enable-calendar \ --enable-sockets \ --disable-static make sapi/cli/php --help Expected result: ---------------- Compilation without problems, with help text shown when running 'sapi/cli/php --help'. Actual result: -------------- When the CLI is being compiled the following warnings appear, and then 'sapi/cli/php --help' ignores the --help argument. /bin/sh /home/alex/src/php-4.3.4/libtool --silent --preserve-dup-deps --mode=compile gcc -Isapi/cli/ -I/home/alex/src/php-4.3.4/sapi/cli/ -DPHP_ATOM_INC -I/home/alex/src/php-4.3.4/include -I/home/alex/src/php-4.3.4/main -I/home/alex/src/php-4.3.4 -I/home/alex/src/php-4.3.4/Zend -I/usr/local/include -I/usr/local/pgsql/include -I/home/alex/src/php-4.3.4/ext/xml/expat -I/home/alex/src/php-4.3.4/TSRM -g -O2 -prefer-pic -c /home/alex/src/php-4.3.4/sapi/cli/php_cli.c -o sapi/cli/php_cli.lo /tmp/ccN17837.s: Assembler messages: /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optind' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optind' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optind' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optind' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optarg' should be global /tmp/ccN17837.s:3786: Warning: GOT relocation burb: `_optind' should be global /bin/sh /home/alex/src/php-4.3.4/libtool --silent --preserve-dup-deps --mode=link gcc -export-dynamic -g -O2 -L/usr/local/lib -L/usr/local/pgsql/lib -R /usr/local/lib -R /usr/local/pgsql/lib ext/openssl/openssl.lo ext/zlib/zlib.lo (many .lo files) main/internal_functions_cli.lo -lrecode -lpq -liconv -lintl -lz -lssl -lcrypto -lm -o sapi/cli/php ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1872 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1742 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1735 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1711 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x16bd ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1661 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x164a ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1609 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1420 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1413 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x11c4 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x11bd ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x1100 ld: sapi/cli/php_cli.lo: relocation must refer to global symbol at 0x10f5 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27104&edit=1
