#include "gc.h"
#include "icf.h"
#include "incremental.h"
+#include "timer.h"
namespace gold
{
Workqueue* workqueue,
Mapfile* mapfile)
{
+ Timer* timer = parameters->timer();
+ if (timer != NULL)
+ timer->stamp(0);
+
// Add any symbols named with -u options to the symbol table.
symtab->add_undefined_symbols_from_command_line(layout);
// Attach sections to segments.
layout->attach_sections_to_segments();
+ // TODO(csilvers): figure out a more principled way to get the target
+ Target* target = const_cast<Target*>(¶meters->target());
if (!parameters->options().relocatable())
{
// Predefine standard symbols.
// Define __start and __stop symbols for output sections where
// appropriate.
layout->define_section_symbols(symtab);
+
+ // Define target-specific symbols.
+ target->define_standard_symbols(symtab, layout);
}
// Make sure we have symbols for any required group signatures.
// When all those tasks are complete, we can start laying out the
// output file.
- // TODO(csilvers): figure out a more principled way to get the target
- Target* target = const_cast<Target*>(¶meters->target());
workqueue->queue(new Task_function(new Layout_task_runner(options,
input_objects,
symtab,
Workqueue* workqueue,
Output_file* of)
{
+ Timer* timer = parameters->timer();
+ if (timer != NULL)
+ timer->stamp(1);
+
int thread_count = options.thread_count_final();
if (thread_count == 0)
thread_count = std::max(2, input_objects->number_of_input_objects());