Bug 1414348
| Summary: | undefined symbol: __cxa_throw_bad_array_new_length | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Developer Toolset | Reporter: | Remi Collet <rcollet> | ||||||
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||||
| Status: | CLOSED NOTABUG | QA Contact: | Martin Cermak <mcermak> | ||||||
| Severity: | unspecified | Docs Contact: | |||||||
| Priority: | unspecified | ||||||||
| Version: | DTS 6.1 RHEL 7 | CC: | fedora, law, mcermak, mnewsome, mpolacek, ohudlick, rcollet | ||||||
| Target Milestone: | alpha | ||||||||
| Target Release: | 6.1 | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | 2017-01-18 11:34:07 UTC | Type: | Bug | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Attachments: |
|
||||||||
That symbol is provided in libstdc++_nonshared.a, so the above looks like a bug in how the intl.so plugin is linked. Are you sure you are linking it with g++ ... -shared ... rather than say ld -shared? Created attachment 1242113 [details]
build.log.gz
Full build.log
From above output, link uses libtool command: /bin/sh /builddir/build/BUILD/php-7.1.1/build-cgi/libtool --silent --preserve-dup-deps --mode=link cc ... -mode=link cc ... that is of course a bug, if the module is written in C++, it should have been c++ or g++ instead of cc. Great thanks for given information which helps a lot on this issue, which indeed should be fixed in PHP.
Simple patch:
--- a/ext/intl/config.m4
+++ b/ext/intl/config.m4
@@ -86,7 +86,7 @@ if test "$PHP_INTL" != "no"; then
breakiterator/codepointiterator_methods.cpp \
uchar/uchar.c \
idn/idn.c \
- $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
+ $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1,cxx)
PHP_ADD_BUILD_DIR($ext_builddir/collator)
PHP_ADD_BUILD_DIR($ext_builddir/converter)
PHP_ADD_BUILD_DIR($ext_builddir/common)
Going to report/fix it upstream
|
Created attachment 1242110 [details] info.txt Description of problem: Undefined symbol trying to run PHP build against GCC 6.2 Version-Release number of selected component (if applicable): 6.2.1-3.1.el7 How reproducible: Steps to Reproduce: 1. build PHP 7.1 with devtoolset-6-toolchain installed 2. run php -v 3. Actual results: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/intl.so' - /usr/lib64/php/modules/intl.so: undefined symbol: __cxa_throw_bad_array_new_length in Unknown on line 0 Expected results: No error Additional info: See attachement (with diff of missing symbols between 4.8 and 6.2 build), so __cxa_throw_bad_array_new_length seems to be the only missing one.