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