From ff34a5147b67a23e61dcd0962dfdf0fdc7e99269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Thu, 31 May 2001 14:27:30 +0200 Subject: [PATCH] Added support for some tracing of the startup code. Fixed bug in the support for -dc. Rev: src/main.c:1.127 --- src/main.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index 74d7f4cabb..ff079f9f09 100644 --- a/src/main.c +++ b/src/main.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: main.c,v 1.126 2001/05/16 23:35:52 hubbe Exp $"); +RCSID("$Id: main.c,v 1.127 2001/05/31 12:27:30 grubba Exp $"); #include "fdlib.h" #include "backend.h" #include "module.h" @@ -57,6 +57,14 @@ RCSID("$Id: main.c,v 1.126 2001/05/16 23:35:52 hubbe Exp $"); int try_use_mmx; #endif +/* Define this to trace the execution of main(). */ +/* #define TRACE_MAIN */ + +#ifdef TRACE_MAIN +#define TRACE(X) fprintf X +#else /* !TRACE_MAIN */ +#define TRACE(X) +#endif /* TRACE_MAIN */ char *master_file; char **ARGV; @@ -70,9 +78,9 @@ PMOD_EXPORT int default_t_flag=0; PMOD_EXPORT int a_flag=0; PMOD_EXPORT int l_flag=0; PMOD_EXPORT int p_flag=0; -#ifdef YYDEBUG +#if defined(YYDEBUG) || defined(PIKE_DEBUG) extern int yydebug; -#endif /* YYDEBUG */ +#endif /* YYDEBUG || PIKE_DEBUG */ static long instructions_left; #define MASTER_COOKIE "(#*&)@(*&$Master Cookie:" @@ -179,6 +187,8 @@ int dbm_main(int argc, char **argv) extern char **environ; #endif + TRACE((stderr, "dbm_main()\n")); + /* Attempt to make sure stderr is unbuffered. */ #ifdef HAVE_SETVBUF setvbuf(stderr, NULL, _IONBF, 0); @@ -187,19 +197,27 @@ int dbm_main(int argc, char **argv) setbuf(stderr, NULL); #endif /* HAVE_SETBUF */ #endif /* HAVE_SETVBUF */ + + TRACE((stderr, "Init CPU lib...\n")); init_pike_cpulib(); #ifdef TRY_USE_MMX + TRACE((stderr, "Init MMX...\n")); + try_use_mmx=mmx_ok(); #endif #ifdef OWN_GETHRTIME /* initialize our own gethrtime conversion /Mirar */ + TRACE((stderr, "Init gethrtime...\n")); + own_gethrtime_init(); #endif ARGV=argv; + TRACE((stderr, "Main init...\n")); + fd_init(); { extern void init_mapping_blocks(void); @@ -221,6 +239,8 @@ int dbm_main(int argc, char **argv) } #ifdef SHARED_NODES + TRACE((stderr, "Init shared nodes...\n")); + node_hash.table = malloc(sizeof(node *)*32831); if (!node_hash.table) { fatal("Out of memory!\n"); @@ -247,6 +267,8 @@ int dbm_main(int argc, char **argv) #endif #endif + TRACE((stderr, "Init master...\n")); + master_file = 0; #ifdef HAVE_GETENV @@ -271,8 +293,12 @@ int dbm_main(int argc, char **argv) master_file=master_location; } + TRACE((stderr, "Default master at \"%s\"...\n", master_file)); + for(e=1; e<argc; e++) { + TRACE((stderr, "Parse argument %d:\"%s\"...\n", e, argv[e])); + if(argv[e][0]=='-') { for(p=argv[e]+1; *p;) @@ -376,9 +402,9 @@ int dbm_main(int argc, char **argv) case 'c': p++; -#ifdef YYDEBUG +#if defined(YYDEBUG) || defined(PIKE_DEBUG) yydebug++; -#endif /* YYDEBUG */ +#endif /* YYDEBUG || PIKE_DEBUG */ break; case 's': @@ -469,6 +495,8 @@ int dbm_main(int argc, char **argv) #define RLIMIT_NOFILE RLIMIT_OFILE #endif + TRACE((stderr, "Init C stack...\n")); + Pike_interpreter.stack_top = (char *)&argv; /* Adjust for anything already pushed on the stack. @@ -605,8 +633,12 @@ int dbm_main(int argc, char **argv) #endif #endif + TRACE((stderr, "Init time...\n")); + GETTIMEOFDAY(¤t_time); + TRACE((stderr, "Init interpreter...\n")); + init_shared_string_table(); init_interpreter(); init_types(); @@ -616,11 +648,18 @@ int dbm_main(int argc, char **argv) init_object(); low_th_init(); + TRACE((stderr, "Init modules...\n")); + init_modules(); + + TRACE((stderr, "Init master...\n")); + master(); call_callback(& post_master_callbacks, 0); free_callback_list(& post_master_callbacks); + TRACE((stderr, "Call master->_main()...\n")); + if(SETJMP(back)) { if(throw_severity == THROW_EXIT) @@ -656,6 +695,8 @@ int dbm_main(int argc, char **argv) } UNSETJMP(back); + TRACE((stderr, "Exit %s...\n", num)); + pike_do_exit(num); return num; /* avoid warning */ } -- GitLab