One thing you mentioned -
also you must use fat-lto-object or otherwise esptool(2) can't handle the resulting object file.- I have never used this setting and have never had a problem with either esptool version. Maybe you need it because of one of the other linker settings? Maybe it's the
-fuse-linker-pluginsetting?
Also while looking at the effect of no-check-sections I came across options to demangle names. I'll have a try with those to see if they help when lto is on.