Get rid of main
authorBrian Demsky <briandemsky@plrg-dock.ics.uci.edu>
Fri, 6 Dec 2019 23:02:15 +0000 (15:02 -0800)
committerBrian Demsky <briandemsky@plrg-dock.ics.uci.edu>
Fri, 6 Dec 2019 23:02:15 +0000 (15:02 -0800)
main.cc
model.cc
params.h

diff --git a/main.cc b/main.cc
index ea97d32..f218b3e 100644 (file)
--- a/main.cc
+++ b/main.cc
@@ -166,44 +166,3 @@ static void install_trace_analyses(ModelExecution *execution)
                ta->actionAtInstallation();
        }
 }
-
-/**
- * Main function.  Just initializes snapshotting library and the
- * snapshotting library calls the model_main function.
- */
-int main(int argc, char **argv)
-{
-       /*
-        * If this printf statement is removed, C11Tester will fail on an
-        * assert on some versions of glibc.  The first time printf is
-        * called, it allocated internal buffers.  We can't easily snapshot
-        * libc since we also use it.
-        */
-
-       printf("C11Tester\n"
-                                "Copyright (c) 2013 and 2019 Regents of the University of California. All rights reserved.\n"
-                                "Distributed under the GPLv2\n"
-                                "Written by Weiyu Luo, Brian Norris, and Brian Demsky\n\n");
-
-
-       //Initialize snapshotting library and model checker object
-       if (!model) {
-               snapshot_system_init(10000, 1024, 1024, 40000);
-               model = new ModelChecker();
-               model->startChecker();
-       }
-
-       /* Configure output redirection for the model-checker */
-       redirect_output();
-       register_plugins();
-
-       //Stash command line options
-       model_params *params = model->getParams();
-       params->argc = argc;
-       params->argv = argv;
-
-       install_trace_analyses(model->get_execution());
-
-       model->startMainThread();
-       DEBUG("Exiting\n");
-}
index b5e5586..69df0d2 100644 (file)
--- a/model.cc
+++ b/model.cc
 
 ModelChecker *model = NULL;
 
-/** Wrapper to run the user's main function, with appropriate arguments */
-void user_main_wrapper(void *)
-{
-       user_main(model->params.argc, model->params.argv);
-}
-
 /** @brief Constructor */
 ModelChecker::ModelChecker() :
        /* Initialize default scheduler */
@@ -39,17 +33,25 @@ ModelChecker::ModelChecker() :
        trace_analyses(),
        inspect_plugin(NULL)
 {
+       printf("C11Tester\n"
+              "Copyright (c) 2013 and 2019 Regents of the University of California. All rights reserved.\n"
+              "Distributed under the GPLv2\n"
+              "Written by Weiyu Luo, Brian Norris, and Brian Demsky\n\n");
        memset(&stats,0,sizeof(struct execution_stats));
-       init_thread = new Thread(execution->get_next_id(), (thrd_t *) model_malloc(sizeof(thrd_t)), &user_main_wrapper, NULL, NULL);
+       init_thread = new Thread(execution->get_next_id(), (thrd_t *) model_malloc(sizeof(thrd_t)), NULL, NULL, NULL);
 #ifdef TLS
        init_thread->setTLS((char *)get_tls_addr());
 #endif
        execution->add_thread(init_thread);
        scheduler->set_current_thread(init_thread);
+       register_plugins();
        execution->setParams(&params);
        param_defaults(&params);
        parse_options(&params);
        initRaceDetector();
+       /* Configure output redirection for the model-checker */
+       redirect_output();
+       install_trace_analyses(model->get_execution());
 }
 
 /** @brief Destructor */
index 7f749ca..d6f5ec9 100644 (file)
--- a/params.h
+++ b/params.h
@@ -12,12 +12,6 @@ struct model_params {
 
        /** @brief Verbosity (0 = quiet; 1 = noisy; 2 = noisier) */
        int verbose;
-
-       /** @brief Command-line argument count to pass to user program */
-       int argc;
-
-       /** @brief Command-line arguments to pass to user program */
-       char **argv;
 };
 
 void param_defaults(struct model_params *params);