[LLVMdev] Botan and Android

Jeffrey Walton noloader at gmail.com
Fri Jul 26 01:58:46 PDT 2013


Hi Jack,

I'm almost there with Android..... I've actually got the static and
dynamic libraries built. I'm choking on the test suite.

Do you want to take a shot at working around Android and [embedded,
lame] STLport?

I would try removing the call to rend() in std::map<_Key, _Tp,
_Compare, _Alloc>::rend(). But I really should not modify program
code. Fiddling with a Makefile is one thing, but modifying source code
is another.

Jeff

arm-linux-androideabi-g++
--sysroot=/opt/android-ndk-r8e//platforms/android-14/arch-arm
-I/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/
-Ibuild/include -O2 -D_REENTRANT -Wno-long-long -fpermissive -W -Wall
-c checks/bench.cpp -o build/checks/bench.o
checks/bench.cpp: In function 'void (anonymous
namespace)::report_results(const string&, const
std::map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, double>&)':
checks/bench.cpp:157:102: error: no match for 'operator!=' in 'i !=
std::map<_Key, _Tp, _Compare, _Alloc>::rend() [with _Key = double, _Tp
= std::basic_string<char, std::char_traits<char>, std::allocator<char>
>, _Compare = std::less<double>, _Alloc =
std::allocator<std::pair<double const, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > >, std::map<_Key,
_Tp, _Compare, _Alloc>::reverse_iterator =
std::reverse_iterator<std::priv::_Rb_tree_iterator<std::pair<double
const, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::priv::_MapTraitsT<std::pair<double
const, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > > >]()'
checks/bench.cpp:157:102: note: candidates are:
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1:
note: template<class _Tp, class _Alloc> bool std::operator!=(const
std::deque<_Tp, _Alloc>&, const std::deque<_Tp, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1:
note: template<class _Key, class _Tp, class _Compare, class _Alloc>
bool std::operator!=(const std::multimap<_Key, _Tp, _Compare,
_Alloc>&, const std::multimap<_Key, _Tp, _Compare, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1:
note: template<class _Key, class _Tp, class _Compare, class _Alloc>
bool std::operator!=(const std::map<_Key, _Tp, _Compare, _Alloc>&,
const std::map<_Key, _Tp, _Compare, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1:
note: template<class _Key, class _Compare, class _Value, class
_KeyOfValue, class _Traits, class _Alloc> bool std::operator!=(const
std::priv::_Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits,
_Alloc>&, const std::priv::_Rb_tree<_Key, _Compare, _Value,
_KeyOfValue, _Traits, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1:
note: template<class _Tp, class _Alloc> bool std::operator!=(const
std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_istreambuf_iterator.h:118:24:
note: template<class _CharT, class _Traits> bool std::operator!=(const
std::istreambuf_iterator<_CharT, _Traits>&, const
std::istreambuf_iterator<_CharT, _Traits>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_string_operators.h:473:1:
note: template<class _CharT, class _Traits, class _Alloc> bool
std::operator!=(const std::basic_string<_CharT, _Traits, _Alloc>&,
const _CharT*)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_string_operators.h:465:1:
note: template<class _CharT, class _Traits, class _Alloc> bool
std::operator!=(const _CharT*, const std::basic_string<_CharT,
_Traits, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_string_operators.h:425:1:
note: template<class _CharT, class _Traits, class _Alloc> bool
std::operator!=(const std::basic_string<_CharT, _Traits, _Alloc>&,
const std::basic_string<_CharT, _Traits, _Alloc>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_alloc.h:384:24:
note: template<class _T1, class _T2> bool std::operator!=(const
std::allocator<_T1>&, const std::allocator<_T2>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_iterator.h:124:24:
note: template<class _Iterator> bool std::operator!=(const
std::reverse_iterator<_Iterator>&, const
std::reverse_iterator<_Iterator>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_pair.h:92:24:
note: template<class _T1, class _T2> bool std::operator!=(const
std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_deque.h:247:1:
note: template<class _Tp> bool std::priv::operator!=(const
std::priv::_Deque_iterator_base<_Tp>&, const
std::priv::_Deque_iterator_base<_Tp>&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_bvector.h:150:25:
note: bool std::priv::operator!=(const std::priv::_Bit_iterator_base&,
const std::priv::_Bit_iterator_base&)
/opt/android-ndk-r8e//sources/cxx-stl/stlport/stlport/stl/_bvector.h:150:25:
note:   no known conversion for argument 1 from 'std::map<double,
std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>::const_reverse_iterator {aka
std::reverse_iterator<std::priv::_Rb_tree_iterator<std::pair<double
const, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::priv::_ConstMapTraitsT<std::pair<double
const, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > > >}' to 'const
std::priv::_Bit_iterator_base&'



More information about the llvm-dev mailing list