This is effectively a data store for use while linking. It takes ownership of all the input data
that we read, which allows the linking stages to borrow that data. Dropping this struct might be
expensive, so the caller of the linker might want to think about when best to drop it - probably
together with the LinkerOutput. Note, calling exit without dropping this struct is an
option, but likely won’t save any time, since the bulk of the work done during drop (unmapping
pages) will still happen anyway.
Sets up whatever tracing, if any, is indicated by the supplied arguments. This can only be
called once and only if nothing else has already set the global tracing dispatcher. Calling this
is optional. If it isn’t called, no tracing-based features will function. e.g. –time.