Martin J. Bligh wrote:>>Due to the final link and compress stage, there is a fair amount of idle>>time at the end of the run. Its going to be hard to push that number>>lower by adding cpus.> > I think we need to fix the final phase .... anyone got any ideas> on parallelizing that?The final linking stage in the makefile looks like this:

ld has a "-r" option `--relocateable' Generate relocatable output---i.e., generate an output file that can in turn serve as input to `ld'. This is often called partial linking. As a side effect, in environments that support standard Unix magic numbers, this option also sets the output file's magic number to `OMAGIC'. If this option is not specified, an absolute file is produced. When linking C++ programs, this option will not resolve references to construc­ tors; to do that, use -Ur.

If we link in chunks, we can parallelize this.Image 26 object files: [a-z].o

ld -r -o abcd.o [abcd].old -r -o efgh.o [efgh].o...ld -r -o abcdefgh.o {abcd,efgh,...}.othen, instead of the old final link stage:$(LD) $(ZLINKFLAGS) -o vmlinux {abcdefgh,...}.o piggy.oThe final link will still take a while, but we will have at least broken up SOME of the work. I'm going to see if this will actually work now. Any comments?