Thinking about it some more, if the linker didn't drop unused functions, it would be a nightmare for anyone compiling for a low memory device. You would have people forking libraries left and right, trying to minimize the footprint for their needs, resulting in a confusing mess for anyone trying to get the functions required.