https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91677
Bug ID: 91677 Summary: -fbuiltin (default) breaks static link against lto libc Product: gcc Version: lto Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: 12f8219 at gmail dot com CC: marxin at gcc dot gnu.org Target Milestone: --- Created attachment 46836 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46836&action=edit testcase $ echo 'extern int puts(char *s); int _e() { return puts("hit"); }' > t.c $ echo 'int puts(char *s) { return 123; }' > l.c $ gcc -ffreestanding -flto -c l.c $ gcc-ar rc l.a l.o $ gcc -flto -fuse-linker-plugin -static -nostartfiles -e _e ./t.c ./l.a /usr/lib/gcc/x86_64-gentoo-linux-musl/9.2.0/../../../../x86_64-gentoo-linux-musl/bin/ld: /tmp/ccAbnIBL.ltrans0.ltrans.o: in function `_e': <artificial>:(.text+0xa): undefined reference to `puts' collect2: error: ld returned 1 exit status $ gcc -flto -fuse-linker-plugin -static -nostartfiles -e _e -fno-builtin ./t.c ./l.a $