The ARM linker for the 3DO will link each and every function in the source file if only one function in a file was used. It was common practice in the 80s and 90s to write library code with each function in its own source file to get around the problem of accidental code bloat. Look to the early GNU stdlib implementation and you'll notice they did the same thing. Modern linkers with Link Time Code Generation don't suffer from this issue since they will remove every piece of dead or unused code wherever it is, which is why Burgerlib 5 is in a lot fewer source files than Burgerlib 1, 2 or 3.