php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #74265 Build problems after 7.0.17 release: undefined reference to `isfinite'
Submitted: 2017-03-17 18:50 UTC Modified: 2017-03-22 13:59 UTC
Votes:2
Avg. Score:3.5 ± 0.5
Reproduced:2 of 2 (100.0%)
Same Version:1 (50.0%)
Same OS:1 (50.0%)
From: deferraz at terra dot com dot br Assigned: nikic
Status: Closed Package: Compile Failure
PHP Version: 7.0.17 OS: CentOS-5
Private report: No CVE-ID:
 [2017-03-17 18:50 UTC] deferraz at terra dot com dot br
Description:
------------
After the release 7.0.17 I cant build this release because on compilation time it cant find any reference to isfinite:

ext/standard/.libs/var.o: In function `php_var_export_ex':
/usr/src/redhat/BUILD/php-7.0.17/ext/standard/var.c:469: undefined reference to `isfinite'
main/.libs/php_variables.o: In function `zend_dval_to_lval':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zendi_smart_strcmp':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.c:2774: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zend_dval_to_lval':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o:/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: more undefined references to `isfinite' follow
collect2: ld returned 1 exit status
make: *** [sapi/cli/php7] Error 1
make: *** Waiting for unfinished jobs....
ext/standard/.libs/var.o: In function `php_var_export_ex':
/usr/src/redhat/BUILD/php-7.0.17/ext/standard/var.c:469: undefined reference to `isfinite'
main/.libs/php_variables.o: In function `zend_dval_to_lval':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zendi_smart_strcmp':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.c:2774: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zend_dval_to_lval':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o:/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: more undefined references to `isfinite' follow
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1
ext/standard/.libs/var.o: In function `php_var_export_ex':
/usr/src/redhat/BUILD/php-7.0.17/ext/standard/var.c:469: undefined reference to `isfinite'
main/.libs/php_variables.o: In function `zend_dval_to_lval':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zendi_smart_strcmp':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.c:2774: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zend_dval_to_lval':
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o:/usr/src/redhat/BUILD/php-7.0.17/Zend/zend_operators.h:117: more undefined references to `isfinite' follow
collect2: ld returned 1 exit status
make: *** [sapi/phpdbg/phpdbg] Error 1

I tried to build against a pristine vm to see if any package that we use created this problem but on a fresh vm the problem persists

I think that this problem is related to commit https://github.com/php/php-src/commit/714d825b62e719447686da6efe3b4063c2f25749


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2017-03-17 19:14 UTC] nikic@php.net
From AC_CHECK_DECLS documentation:

> Unlike the other ‘AC_CHECK_*S’ macros, when a symbol is not declared, HAVE_DECL_symbol is defined to ‘0’ instead of leaving HAVE_DECL_symbol undeclared.

Presumably that's the culprit, we're checking for definedness.
 [2017-03-17 19:22 UTC] nikic@php.net
Automatic comment on behalf of nikita.ppv@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=2e8308260513015dbf80ff0239eca79dbca4f36e
Log: Fix bug #74265
 [2017-03-17 19:22 UTC] nikic@php.net
-Status: Open +Status: Closed
 [2017-03-17 19:23 UTC] nikic@php.net
-Assigned To: +Assigned To: nikic
 [2017-03-17 19:23 UTC] nikic@php.net
Can you please verify that https://github.com/php/php-src/commit/2e8308260513015dbf80ff0239eca79dbca4f36e does indeed resolve the build failure?
 [2017-03-17 19:34 UTC] deferraz at terra dot com dot br
-Status: Closed +Status: Assigned
 [2017-03-17 19:34 UTC] deferraz at terra dot com dot br
Hi,

unfortunately i had the same problem on the rpm build and on a different vm using ./configure ; make after applying the patch
 [2017-03-17 19:50 UTC] nikic@php.net
Did you run ./buildconf --force prior to running ./configure?
 [2017-03-17 20:48 UTC] deferraz at terra dot com dot br
Indeed, the buildconf --force solved the problem , but i only got a successfull build against the upstream source without any patches , on my rpm spec build the problem persisted and the buildconf --force executes for every build.

There is something that I can analyze to catch the possible problem on my rpm build? The patch had applied and buildconf executes without problem, right now I am without any clues

Thanks in advance
 [2017-03-17 21:01 UTC] deferraz at terra dot com dot br
I think that i found the possible issue, on the vanilla build the config.log says that isfinite is not found, and my other build server that i do my rpm builds finds the function:

Upstream config.log snippet:
configure:131360: $? = 0
configure:131362: ./conftest
configure:131365: $? = 0
configure:131384: result: no
configure:131398: checking whether isfinite is declared
configure:131423: cc -c -I/usr/include -g -O2 -fvisibility=hidden  conftest.c >&5
conftest.c: In function 'main':
conftest.c:383: error: 'isfinite' undeclared (first use in this function)
conftest.c:383: error: (Each undeclared identifier is reported only once
conftest.c:383: error: for each function it appears in.)
configure:131429: $? = 1


My rpm build server:

configure:95014: checking whether isfinite is declared
configure:95014: cc -c -I/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fno-strict-aliasing -Wno-pointer-sign -fvisibility=hidden  conftest.c >&5
configure:95014: $? = 0
configure:95014: result: yes


The funny thing on this situation that for what I understand those functions are related to math.h and math library that I use the original ones from CentOS distro
 [2017-03-17 22:27 UTC] deferraz at terra dot com dot br
I think i found the problem on the rpm build server:

In the new pristine server i had installed autoconf-2.59-12 m4-1.4.5-3 , and in the rpm build server i had installed autoconf-2.65 and m4-1.4.13, for that reason , on CentOS 5 that chack for isfinite function using autoconf2.65 that test doesnt fail and with autoconf-2.59 it fails (Right now I can't say why).

Using the distribution vanilla packages of autoconf/m4 that isfinite test fails and the patch that you sent builds successfully.

I am including this information on this bug report so anyone with the same problem can fix the situation

Thanks for the quick patch response and information about this issue
 [2017-03-22 13:59 UTC] kaplan@php.net
-Status: Assigned +Status: Closed
 [2017-03-22 13:59 UTC] kaplan@php.net
I had the problem with PHP 7.1.3 on AIX, and the patch fixed it. thanks.
 [2017-04-05 05:03 UTC] adi at ddns dot com dot au
ext/standard/.libs/var.o: In function `php_var_export_ex':
/root/adi/work/src/php-7.0.18RC1/ext/standard/var.c:469: undefined reference to `isfinite'
main/.libs/php_variables.o: In function `zend_dval_to_lval':
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zendi_smart_strcmp':
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.c:2774: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zend_dval_to_lval':
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: undefined reference to `isfinite'
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o:/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: more undefined references to `isfinite' follow
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
 [2017-04-05 05:05 UTC] adi at ddns dot com dot au
Sorry for the previous, incomplete comment. Still having problems building 7.0.18RC1 on CentOS 5:
ext/standard/.libs/var.o: In function `php_var_export_ex':
/root/adi/work/src/php-7.0.18RC1/ext/standard/var.c:469: undefined reference to `isfinite'
main/.libs/php_variables.o: In function `zend_dval_to_lval':
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zendi_smart_strcmp':
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.c:2774: undefined reference to `isfinite'
Zend/.libs/zend_operators.o: In function `zend_dval_to_lval':
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: undefined reference to `isfinite'
/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: undefined reference to `isfinite'
Zend/.libs/zend_operators.o:/root/adi/work/src/php-7.0.18RC1/Zend/zend_operators.h:117: more undefined references to `isfinite' follow
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Tue Apr 25 14:01:39 2017 UTC