← Back to context

Comment by kasabali

5 years ago

...

Not caring amount memory leaks is not the same as not caring about memory consumption. The next line shows exactly why the choice is made.

> It is because most objects that are allocated during an execution of mold are needed until the very end of the program.

Using free would not affect that memory consumption much because most consumption would be freed at the end of the program.

There might be a 'best of both worlds' idea in there: If mold mmaps the input files instead of reading them, the linker would not trash all cached files, and be faster itself as it reuses already cached files.

Now the author seems a smart fellow, so maybe he did just that already, I didn't check the source.

  • mold uses only mmap for file IO. Not only input files but also an output file are mapped to memory using mmap(2).

    • Wouldn't this mean that you need to memcpy around? Maybe async-io (io_uring?) help here by doing zero-copy writes directly from the source. I don't know how much you need to mangle code (GOT/PLT, offsets) and how much it is a straight copy of object to object.