// gold.cc -- main linker functions
-// Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012
-// Free Software Foundation, Inc.
+// Copyright (C) 2006-2016 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
plugins->layout_deferred_objects();
}
+ // Finalize the .eh_frame section.
+ layout->finalize_eh_frame_section();
+
/* If plugins have specified a section order, re-arrange input sections
according to a specified section order. If --section-ordering-file is
also specified, do not do anything here. */
if (!any_postprocessing_sections)
{
input_sections_blocker = new Task_token(true);
+ // Write_symbols_task, Relocate_tasks.
+ input_sections_blocker->add_blocker();
input_sections_blocker->add_blockers(input_objects->number_of_relobjs());
}
// Queue a task to write out the output sections.
workqueue->queue(new Write_sections_task(layout, of, output_sections_blocker,
+ input_sections_blocker,
final_blocker));
// Queue a task to write out everything else.
}
// Create tasks for tree-style build ID computation, if necessary.
- final_blocker = layout->queue_build_id_tasks(workqueue, final_blocker, of);
-
- // Queue a task to close the output file. This will be blocked by
- // FINAL_BLOCKER.
- workqueue->queue(new Task_function(new Close_task_runner(&options, layout,
- of),
- final_blocker,
- "Task_function Close_task_runner"));
+ if (strcmp(options.build_id(), "tree") == 0)
+ {
+ // Queue a task to compute the build id. This will be blocked by
+ // FINAL_BLOCKER, and will in turn schedule the task to close
+ // the output file.
+ workqueue->queue(new Task_function(new Build_id_task_runner(&options,
+ layout,
+ of),
+ final_blocker,
+ "Task_function Build_id_task_runner"));
+ }
+ else
+ {
+ // Queue a task to close the output file. This will be blocked by
+ // FINAL_BLOCKER.
+ workqueue->queue(new Task_function(new Close_task_runner(&options, layout,
+ of, NULL, 0),
+ final_blocker,
+ "Task_function Close_task_runner"));
+ }
+
}
} // End namespace gold.