Opened 10 years ago

Closed 8 years ago

Last modified 8 years ago

#7985 closed Support Requests (wontfix)

regex fails to compile on AIX7 XLC11 with _LARGE_FILES support

Reported by: Kevin Burge <kevin.burge@…> Owned by: John Maddock
Milestone: To Be Determined Component: regex
Version: Boost 1.53.0 Severity: Problem
Keywords: Cc:

Description

AIX version: 7100.01.05.1228 VACPP version: 11.1.0.12

When compiling the regex library with vacpp toolset, with -D_LARGE_FILES defined, the attached output is received. Note: I normally have many other compiler switches specified, but I narrowed it down to this switch that was causing compilation to fail. I cannot figure out why large file support would cause this to break, but, it has been my experience that the macros that are defined whenever large file support is turn on, on AIX, wreaks havoc in a lot of code (we frequently have to customize libraries to get them to build correctly because of this.)

Creating this ticket because I cannot figure out how this switch ultimately affects std::basic_string usage in the regex library. (Note: I am able to bypass the error by specifying all of the template parameters to std::basic_string here, but this inevitably causes the same "not enough template parameters" to pop up elsewhere.)

  • has_icu builds : no

... vacpp.compile.c++ ../../../bin.v2/libs/regex/build/vacpp/debug/c_regex_traits.o vacpp.compile.c++ ../../../bin.v2/libs/regex/build/vacpp/debug/cpp_regex_traits.o vacpp.compile.c++ ../../../bin.v2/libs/regex/build/vacpp/debug/cregex.o "../../../boost/regex/v4/sub_match.hpp", line 365.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/sub_match.hpp", line 374.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/sub_match.hpp", line 400.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/sub_match.hpp", line 409.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/sub_match.hpp", line 418.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/regex_format.hpp", line 1129.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/basic_regex.hpp", line 484.22: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/match_results.hpp", line 73.39: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/regex_replace.hpp", line 73.19: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/regex_merge.hpp", line 54.50: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/regex_merge.hpp", line 61.26: 1540-0711 (S) Too few template arguments have been specified. "../../../boost/regex/v4/regex_merge.hpp", line 70.26: 1540-0711 (S) Too few template arguments have been specified.

xlC -c -DBOOST_ALL_NO_LIB=1 -DBOOST_REGEX_DYN_LINK=1 -qcpluscmt -qNOOPTimize -qnoinline -g -qfullpath -qfuncsect -qeh -qrtti -I"../../.." -o "../../../bin.v2/libs/regex/build/vacpp/debug/cregex.o" "../../../libs/regex/build/../src/cregex.cpp"

...failed vacpp.compile.c++ ../../../bin.v2/libs/regex/build/vacpp/debug/cregex.o... vacpp.compile.c++ ../../../bin.v2/libs/regex/build/vacpp/debug/fileiter.o vacpp.compile.c++ ../../../bin.v2/libs/regex/build/vacpp/debug/icu.o

Attachments (1)

vac.cfg (61 bytes ) - added by Kevin Burge <kevin.burge@…> 10 years ago.
Use via export XLC_USR_CONFIG="$HOME/vac.cfg"

Download all attachments as: .zip

Change History (4)

by Kevin Burge <kevin.burge@…>, 10 years ago

Attachment: vac.cfg added

Use via export XLC_USR_CONFIG="$HOME/vac.cfg"

comment:1 by John Maddock, 10 years ago

I don't have access to AIX and have no real knowledge of xlc and _LARGE_FILES so any help I can give will be very limited I'm afraid :-(

Whatever defining _LARGE_FILES does, if std::basic_string loses it's default template parameters then that's a std lib bug, and the changes required to support that are likely to be quite far reaching.

What happens if you preprocess the source - what do the declarations/definitions for basic_string look like? From a quick Google around the NET it looks like the headers may forward to different implementations (different namespaces?) when this macro is in effect?

One quick and dirty hack might be to forward declare basic_string with the default param reinserted. But that would break as soon as IBM fix their headers. IMO it's worth filing an xlc bug report on this if you're able to do so as well.

comment:2 by John Maddock, 8 years ago

Resolution: wontfix
Status: newclosed

comment:3 by anonymous, 8 years ago

I must have missed the original email. XLC 13 is out. I may try this again after we upgrade. Thank you!

Note: See TracTickets for help on using tickets.