user, libraries, system, i expect my code to fail, libraries to fail in unexpected ways and system stuff rarely.
i sort of assumed that the system parts were correct as well. we need a bite me in *** smilely

not quite sure why or how, but do we just lump the total library in and let the linker take want it wants ?
was it a fail in trying to be aggressive in the linking ?
in handling the warning/error messages?
can the visibility of such messages be increased ?

a missing symbol is an error rather than a warning?
i've seen the missing __end in the compile/link messages, i use 'most' most of the time, 'all' if i've an issue and
now i know what to look for as well.

i did notice there was a small code change to avoid a missing symbol e.g. end/__end
and how to fix such things

there was a lot of posts about the software configuration, massive permutations and defining it down to a workable 'set'.
normally it's reproduce the issue using an as small as possible example, for this not sure how you could do that.

Even the Adafruit libs seems vary in quality quite a lot. I don't know if Limor write them all, but the coding style seems to be different when you look at different libraries in the Adafruit repo. So I suspect although they seem to have header blocks saying she wrote them, I'm not totally convinced.