On Fri, Jun 1, 2012 at 3:57 PM, Davide Ferraretto <femudevelopm...@gmail.com> wrote: > I tried to insert " printf("exit\n"); ", but qemu dosen't write to monitor.
printf should not write to monitor (if you mean QEMU monitor), it should go to stdout. I don't have ARM compiler set up ATM, but x86_64 with the following patch does what I describe: $ git diff diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 20d2a74..ccb71dc 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5052,6 +5052,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, switch(num) { case TARGET_NR_exit: + fprintf(stderr, "TARGET_NR_exit\n"); #ifdef CONFIG_USE_NPTL /* In old applications this may be used to implement _exit(2). However in threaded applictions it is used for thread termination, @@ -6833,6 +6834,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, #ifdef __NR_exit_group /* new thread calls */ case TARGET_NR_exit_group: + fprintf(stderr, "TARGET_NR_exit_group\n"); #ifdef TARGET_GPROF _mcleanup(); #endif $ cat a.c #include <stdio.h> int main() { printf("Hello, world\n"); return 0; } $ gcc -static a.c -o a $ qemu-all/root/bin/qemu-x86_64 ./a Hello, world TARGET_NR_exit_group > On 06/01/12 13:43, Max Filippov wrote: >> >> On Fri, Jun 1, 2012 at 3:16 PM, Davide Ferraretto >> <femudevelopm...@gmail.com> wrote: >>> >>> In arm user mode, where does qemu exit? Where is last qemu's instruction? >>> >>> I.E. >>> int main (){return 0;} >>> in what file does qemu run "return 0"?? >> >> Simulated code reaches the point where libc calls 'exit' or 'exit_group' >> syscall >> and then QEMU goes to the do_syscall in the linux-user/syscall.c to >> terminate >> the process. >> > -- Thanks. -- Max