lib: intro of the x11 module
[nit.git] / c_src / nitg.main.1.c
1 #include "nitg.main.0.h"
2 #include <signal.h>
3 #define UNW_LOCAL_ONLY
4 #include <libunwind.h>
5 int glob_argc;
6 char **glob_argv;
7 val *glob_sys;
8 void show_backtrace (int signo) {
9 char* opt = getenv("NIT_NO_STACK");
10 unw_cursor_t cursor;
11 if(opt==NULL){
12 unw_context_t uc;
13 unw_word_t ip;
14 char* procname = malloc(sizeof(char) * 100);
15 unw_getcontext(&uc);
16 unw_init_local(&cursor, &uc);
17 printf("-------------------------------------------------\n");
18 printf("-- Stack Trace ------------------------------\n");
19 printf("-------------------------------------------------\n");
20 while (unw_step(&cursor) > 0) {
21 unw_get_proc_name(&cursor, procname, 100, &ip);
22 printf("` %s \n",procname);
23 }
24 printf("-------------------------------------------------\n");
25 free(procname);
26 }
27 exit(signo);
28 }
29 int main(int argc, char** argv) {
30 val* var /* : Sys */;
31 signal(SIGABRT, show_backtrace);
32 signal(SIGFPE, show_backtrace);
33 signal(SIGILL, show_backtrace);
34 signal(SIGINT, show_backtrace);
35 signal(SIGTERM, show_backtrace);
36 signal(SIGSEGV, show_backtrace);
37 glob_argc = argc; glob_argv = argv;
38 initialize_gc_option();
39 var = NEW_kernel__Sys(&type_kernel__Sys);
40 glob_sys = var;
41 ((void (*)(val*))(var->class->vft[COLOR_kernel__Sys__init]))(var) /* init on <var:Sys>*/;
42 ((void (*)(val*))(var->class->vft[COLOR_kernel__Sys__main]))(var) /* main on <var:Sys>*/;
43 return 0;
44 }