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
$