// 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); }