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]

Re: Concurrent linking plan for gold


Daniel Jacobowitz <drow@false.org> writes:

> On Sun, Dec 28, 2008 at 02:54:09PM -0800, Ian Lance Taylor wrote:
>> Interface
>
> I like the interface generally.  One thing I disliked; having to
> touch files to inform the incremental linker that they're unchanged.
> How about having a tool "gold-notify" instead, which could use the
> open-writable/close pair?  I think that won't affect modification
> time.  Or if it does, gold-notify could use the pipe instead
> (opening the pipe even while using inotify shouldn't be a problem).

Good idea.  Thanks.


> I spent a little while thinking about the no-files-changed case.
> Because you have a dependency from object files to starting the
> incremental linker, make will always consider the destination program
> changed.

I don't *think* that is correct, because I doubled the dependencies.
The "start link" target also depends on the source files:

foo-concurrent-link: foo.c bar.c
foo.o: foo-concurrent-link foo.c
foo: foo.o bar.o

So if none of the source files have changed, foo-concurrent-link will
not be out of date.

But I have not actually tried this.


>> The more general case, in which the linker can process the files in
>> any order, is more complicated.  Here is a sketch of how it might
>> work.  Naturally these operations are all conditional on doing a
>> concurrent link.  This more general approach will not work when using
>> a linker script.
>
> This approach also causes each build to produce a different output
> file.  That means concurrent linking with this approach is only
> suitable during development, not for deployment.  Our workflow here
> does mostly deployable builds, so I wonder if there's any middle
> ground to take advantage of concurrency but still produce stable
> output.

Good point, and I'm not sure.

Ian


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