This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 2/2] gold: add a task in incremental build that can be used to check which inputs were modified


  This patch adds a task that can be later used in an incremental
build to check if a full build is needed and what files needs to be
included. In an incremental build, it will be executed after all
Read_symbols and before Add_symbols, Add_archive_symbols and
Read_script. In non-incremental build, the order shouldn't change.
  There are two issues. Doing it after Read_symbols is suboptimal, as
it already loaded symbols from object files, including the ones that
were not modified. Later, I can divide this task into two and plug the
input checker between detecting the type of file and loading symbols.
A bigger problem is that we do it before Read_scripts thus we won't
see input files included by scripts. This can be fixed by dividing the
a Read_script task into one that reads script and another the applies
it to the layout. Before doing this, as a hack, I could treat every
file included by a script as modified.
  I don't know how plug-ins interacts with this - when do plugins add
input objects? Currently I print an error if they do it too late.
  BTW, `make check` in gold fails (in ver_test_4 assertion failed in
parameters.h:84 - gold_assert(this->options_valid())), but it also
fails without my patches - it's probably caused by an earlier patch. I
could try to look into it tomorrow.

2009-03-17  Mikolaj Zalewski  <mikolajz@google.com>
	* gold.cc (queue_initial_tasks): add Incremental_input_checker task.
	* incremental.cc (Incremental_input::report_archive): new method.
	(Incremental_inputs::report_object): new method.
	(Incremental_inputs::report_script): new method.
	(Incremental_inputs_checker::run): new method.
	* incremental.h: new file.
	* layout.cc (Layout::Layout): handle new incremental_inputs_.
	* layout.h (Layout::incremental_inputs): new method.
	(Layout::incremental_inputs_): new field.
	* plugin.cc (Plugin_manager::add_input_file): check incremental build state.
	* readsyms.cc (Read_symbols::locks): lock the Incremental_build_checker if any.
	(Read_symbols::do_read_symbols): use layout->incremental_inputs().
	* script.cc (read_input_scipt): add comment.

Attachment: 0002-gold-add-a-task-in-incremental-build-that-can-be-used-to-check-which-inputs-were-modifed.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]