Hi Adam,
I tried to compile the c++ program using stl map class with only uclibc++
libraries outside the l4env and got the same compilation error. I have
posted the compilation error both from l4env and non l4env below.
=================================================================================================================================
1) Compilation error from non l4env compilation (i.e just compiling on a
linux box with uclibc++ libraries only and excluding the standard c++
libraries)
$ make mymap.o
g++ -m64 -c -DUSE_UCLIBC=y -DRAM_BASE=0x0 -DSYSTEM_amd64_686_l4v2
-DARCH_amd64 -DCPUTYPE_686 -DL4API_l4v2 -DCONFIG_L4_CALL_SYSCALLS
-DCONFIG_L4_ABS_SYSCALLS -nostdinc
-I/home/karthik/Research/tudos/ubuild/include/amd64/uclibc
-I/home/karthik/Research/tudos/ubuild/include/uclibc
-I/home/karthik/Research/tudos/ubuild/include/uclibc++
-I/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include
-I/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include-fixed -gstabs+ -g -O2
-fno-strict-aliasing -mno-red-zone -Wall -fno-common -fno-stack-protector
mymap.cc -o mymap.o
/home/karthik/Research/tudos/ubuild/include/uclibc++/map: In constructor
‘std::map<Key, T, Compare, Allocator>::map(const Compare&, const Allocator&)
[with Key = std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, T = int, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’:
mymap.cc:10: instantiated from here
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: error: invalid
conversion from ‘const std::basic_string<char, std::char_traits<char>,
std::allocator<char> > (*)(std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>)’ to
‘std::basic_string<char, std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>)’
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: error:
initializing argument 3 of ‘std::__single_associative<Key, ValueType,
Compare, Allocator>::__single_associative(const Compare&, const Allocator&,
typename std::__base_associative<Key, ValueType, Compare,
Allocator>::key_type (*)(typename std::__base_associative<Key, ValueType,
Compare, Allocator>::value_type)) [with Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, ValueType =
std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base: In
constructor ‘std::__base_associative<Key, ValueType, Compare,
Allocator>::__base_associative(const Compare&, const Allocator&, Key
(*)(ValueType)) [with Key = std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, ValueType = std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>, Compare =
std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, Allocator = std::allocator<int>]’:
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:502:
instantiated from ‘std::__single_associative<Key, ValueType, Compare,
Allocator>::__single_associative(const Compare&, const Allocator&, typename
std::__base_associative<Key, ValueType, Compare, Allocator>::key_type
(*)(typename std::__base_associative<Key, ValueType, Compare,
Allocator>::value_type)) [with Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, ValueType =
std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: instantiated
from ‘std::map<Key, T, Compare, Allocator>::map(const Compare&, const
Allocator&) [with Key = std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, T = int, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’
mymap.cc:10: instantiated from here
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:78:
error: invalid conversion from ‘std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>)’ to ‘const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>)’
make: *** [mymap.o] Error 1
=================================================================================================================================
2) Compilation error from l4env compilation (i.e normal compilation during
the creation of l4 packge in tudos/l4/pkg). I have shown only the
compilation error from the long log file.
.................
.................
make[1]: Entering directory
`/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/OBJ-amd64_686-l4v2'
... Compiling mymap.o
LD_PRELOAD=/home/karthik/Research/tudos/ubuild/tool/gendep/libgendep.so
GENDEP_TARGET=mymap.o GENDEP_BINARY=cc1plus g++ -m64 -c -DUSE_UCLIBC=y
-DRAM_BASE=0x0 -DSYSTEM_amd64_686_l4v2 -DARCH_amd64 -DCPUTYPE_686
-DL4API_l4v2 -DCONFIG_L4_CALL_SYSCALLS -DCONFIG_L4_ABS_SYSCALLS
-I/home/karthik/Research/tudos/ubuild/pkg/testmap/idl/OBJ-amd64-l4v2
-I/home/karthik/Research/tudos/ubuild/include/amd64/l4v2
-I/home/karthik/Research/tudos/ubuild/include/l4v2
-I/home/karthik/Research/tudos/ubuild/include/amd64
-I/home/karthik/Research/tudos/ubuild/include
-I/home/karthik/Research/tudos/l4/../dice/include
-I/home/drops/include/amd64/l4v2 -I/home/drops/include/l4v2
-I/home/drops/include/amd64 -I/home/drops/include -nostdinc
-I/home/karthik/Research/tudos/ubuild/include/amd64/uclibc
-I/home/karthik/Research/tudos/ubuild/include/uclibc
-I/home/karthik/Research/tudos/ubuild/include/uclibc++
-I/home/drops/include/amd64/uclibc -I/home/drops/include/uclibc
-I/home/drops/include/uclibc++ -I/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include
-I/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include-fixed -gstabs+ -g -O2
-fno-strict-aliasing -mno-red-zone -Wall -fno-common -fno-stack-protector
/home/karthik/Research/tudos/l4/pkg/testmap/server/src/mymap.cc -o mymap.o
/home/karthik/Research/tudos/ubuild/include/uclibc++/map: In constructor
‘std::map<Key, T, Compare, Allocator>::map(const Compare&, const Allocator&)
[with Key = std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, T = int, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’:
/home/karthik/Research/tudos/l4/pkg/testmap/server/src/mymap.cc:10:
instantiated from here
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: error: invalid
conversion from ‘const std::basic_string<char, std::char_traits<char>,
std::allocator<char> > (*)(std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>)’ to
‘std::basic_string<char, std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>)’
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: error:
initializing argument 3 of ‘std::__single_associative<Key, ValueType,
Compare, Allocator>::__single_associative(const Compare&, const Allocator&,
typename std::__base_associative<Key, ValueType, Compare,
Allocator>::key_type (*)(typename std::__base_associative<Key, ValueType,
Compare, Allocator>::value_type)) [with Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, ValueType =
std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base: In
constructor ‘std::__base_associative<Key, ValueType, Compare,
Allocator>::__base_associative(const Compare&, const Allocator&, Key
(*)(ValueType)) [with Key = std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, ValueType = std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>, Compare =
std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, Allocator = std::allocator<int>]’:
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:502:
instantiated from ‘std::__single_associative<Key, ValueType, Compare,
Allocator>::__single_associative(const Compare&, const Allocator&, typename
std::__base_associative<Key, ValueType, Compare, Allocator>::key_type
(*)(typename std::__base_associative<Key, ValueType, Compare,
Allocator>::value_type)) [with Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, ValueType =
std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: instantiated
from ‘std::map<Key, T, Compare, Allocator>::map(const Compare&, const
Allocator&) [with Key = std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, T = int, Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/l4/pkg/testmap/server/src/mymap.cc:10:
instantiated from here
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:78:
error: invalid conversion from ‘std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>)’ to ‘const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>)’
Makefile.inc:14: *** [mymap.o] Error 1
=================================================================================================================================
>From the logs I think the error is due to uclibc++ library than l4Env. It
would be great it if you could give me some pointers on what is going wrong
there. The source file is the same mymap.cc file discussed in the previous
posts.
Thanks for your time,
karthik