The compatibility of the operations tied with "vector<bool>" is not compatible between Solaris Studio 12.3 and 12.4, also the 12.5 BETA has the same issue with 12.4.
Compiler env: Solaris Studio 12.3
# /opt/solarisstudio12.3/bin/CC -library=stlport4 -o test2 test2.c
Runtime env: Solaris Studio 12.4 with the following error:
ld.so.1: test2: fatal: relocation error: file test2: symbol __1cDstdGvector4Cbn0AJallocator4Cb___N_M_insert_aux6Mn0AJ_Bit_iter4n0AO_Bit_reference_Cpn0D___b_v_: referenced symbol not found
Check the function in the library in 12.4 and 12.3 as following:
# nm /opt/solarisstudio12.4/lib/stlport4/libstlport.so.1 | grep N_M_insert_aux6Mn0AJ_Bit_iter4n0AO_Bit_reference_Cpn0D___b_v_ | c++filt ==> no output here
# nm /opt/solarisstudio12.3/lib/stlport4/libstlport.so.1 | grep N_M_insert_aux6Mn0AJ_Bit_iter4n0AO_Bit_reference_Cpn0D___b_v_
[9154] | 682528| 1045|FUNC |GLOB |3 |12 |__1cDstdGvector4Cbn0AJallocator4Cb___N_M_insert_aux6Mn0AJ_Bit_iter4n0AO_Bit_reference_Cpn0D___b_v_
# nm /opt/solarisstudio12.3/lib/stlport4/libstlport.so.1 | grep N_M_insert_aux6Mn0AJ_Bit_iter4n0AO_Bit_reference_Cpn0D___b_v_ | c++filt
[9154] | 682528| 1045|FUNC |GLOB |3 |12 |void std::vector<bool>::_M_insert_aux(std::_Bit_iter<std::_Bit_reference,std::_Bit_reference*>,bool)
The code of test2.c is following:
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<bool> v;
bool b = false;
v.push_back(b);
return 0;
}
The above compatibility issue also exists if compiled with 12.3 and run in 12.5 BETA. And as the STLport version of 12.3 and 12.4 are both STLport 4.5.3, so this issue seems not a introduced by open source community but introduced by Solaris Studio 12.4, right?
Thanks in advance