https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87207
--- Comment #2 from blastrock at free dot fr --- This seems to be due to this symbol in each .o file: 0000000000000000 W shared::shared<async_resumable<toto()::{lambda()#1}>(toto()::{lambda()#1}&&)::{lambda()#1}>(toto()::{lambda()#1})::{lambda()#1}::~shared() It is weak and global, but I think it should be local since it depends on toto() which is static.