error with using %lld in Genode::printf or sprintf and including sstream

정복득 bd.jeong at ...60...
Tue Jul 10 13:57:51 CEST 2012



Hi,

I have two problems with compiling my program.
One is that I cannot get correct output with Genode::printf or sprintf for (unsigend) long long values.
Below is my code:
#include <base/printf.h>
#include <stdio.h>
#include <sys/types.h>

int main()
{
    char test_buf[24];
    uint64_t llu_var = 1234567801234ULL;
    sprintf(test_buf, "%llu", llu_var);
    Genode::printf("result of test_buf:%s\n", test_buf);
    Genode::printf("llu_var:%llu\n", llu_var);
    return 0;
}

I compiled this with "LIBS += env cxx libc" in target.mk and built it for foc_pbxa9 on QEMU.
The result is strange:
 [init->mytest] result of test_buf:2153943278813471
 [init->mytest] llu_var:8212781840017129473


Another one is that I get compilation errors as below:

source codes:
#include <base/printf.h>
#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <sstream>

using namespace std;
template <class T>
inline string to_string(const T& t)
{
   stringstream ss;
   ss << t;
   return ss.str();
}

int main()
{
   int64_t value = 1023456LL;
   Genode::printf("sstream value:%lld, to_string:%s\n", value, to_string(value).c_str());
   return 0;
}

in target.mk
LIBS += stdcxx env cxx libc
CC_OPT += -D_GLIBCXX_HAVE_MBSTATE_T

error message:
/usr/local/genode-gcc/bin/../lib/gcc/arm-elf-eabi/4.6.1/../../../../arm-elf-eabi/lib/libstdc++.a(eh_catch.o): In function '__cxa_begin_catch':
(.text.__cxa_begin_catch+0xc0): undefined reference to '__Unwind_Complete'
/usr/local/genode-gcc/bin/../lib/gcc/arm-elf-eabi/4.6.1/../../../../arm-elf-eabi/lib/libstdc++.a(eh_catch.o): In function '__cxa_end_catch':
(.text.__cxa_end_catch+0x30): undefined reference to '__Unwind_DeleteException'
/usr/local/genode-gcc/bin/../lib/gcc/arm-elf-eabi/4.6.1/../../../../arm-elf-eabi/lib/libstdc++.a(eh_catch.o): In function '__cxa_end_catch':
(.text.__cxa_end_catch+0xdc): undefined reference to '__Unwind_DeleteException'
collect2: ld returned 1 exit status
make[2]: *** [mytest] Error 1

 Does any one know how to fix these? 
Thanks.


More information about the users mailing list