diff options
Diffstat (limited to 'gold/main.cc')
-rw-r--r-- | gold/main.cc | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gold/main.cc b/gold/main.cc new file mode 100644 index 0000000..ea65c2d --- /dev/null +++ b/gold/main.cc @@ -0,0 +1,57 @@ +// main.cc -- gold main function. + +#include "gold.h" + +#include "options.h" +#include "dirsearch.h" +#include "workqueue.h" +#include "object.h" +#include "symtab.h" +#include "layout.h" + +using namespace gold; + +int +main(int argc, char** argv) +{ +#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) + setlocale (LC_MESSAGES, ""); +#endif +#if defined (HAVE_SETLOCALE) + setlocale (LC_CTYPE, ""); +#endif + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + program_name = argv[0]; + + // Handle the command line options. + Command_line command_line; + command_line.process(argc - 1, argv + 1); + + // The work queue. + Workqueue workqueue(command_line.options()); + + // The list of input objects. + Input_objects input_objects; + + // The symbol table. + Symbol_table symtab; + + // The layout object. + Layout layout(command_line.options()); + + // Get the search path from the -L options. + Dirsearch search_path; + search_path.add(&workqueue, command_line.options().search_path()); + + // Queue up the first set of tasks. + queue_initial_tasks(command_line.options(), search_path, + command_line, &workqueue, &input_objects, + &symtab, &layout); + + // Run the main task processing loop. + workqueue.process(); + + gold_exit(true); +} |