Native Android Runtime Emulation
================================

Why not using the offcial Android emulator
------------------------------------------

* Slow. An old laptop is pushed to its limit even when running a headless emu.
* Restricted. UDP multicast, for instance, is not supported in emu.
* Broken. The offcial gdbserver erroneously sends SIGILL.
* Bionic. It is the synonym of Broken.

What is offered by this tool
----------------------------

* Full stack support for ELF built by Android NDK.
* Seeminglessly native gdb support.
* Link and load shared library.
* Open to extension of different architecture and C runtime. 

ABC
---

    fp = fopen("your_shared_lib.so", "r");
    vm = vm_init();
    elf = elf_load(vm, fp);
    fclose(fp);

    ld.vm = vm;
    ld.elf = elf;

    /* Thread-friendly printf */
    setbuf(stdout,NULL);
    setbuf(stderr,NULL);

    /* Set up the arguments of called function */
    uint32_t args[4] = {0};
    args[0] = 1;
    args[1] = 2;

    /* Entry of the function */
    start = 0x1abc0;

    /* Fire */
    ret = arm_exec(&ld, start, 0, args, 4);
