http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59582
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> --- Works for me: [hjl@gnu-6 pr59582]$ cat main.c int callback() { return 0; } int main() { return s_func(); } [hjl@gnu-6 pr59582]$ cat ext.c __attribute__((weak)) int callback() { return 1; } int s_func() { return callback(); } [hjl@gnu-6 pr59582]$ make /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -c -o ext.o ext.c /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -flto -c -o main.o main.c /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -flto ext.o main.o -o e [hjl@gnu-6 pr59582]$ ld -V GNU ld (GNU Binutils) 2.24.51.20131224 Supported emulations: elf_x86_64 elf32_x86_64 elf_i386 i386linux elf_l1om elf_k1om [hjl@gnu-6 pr59582]$ /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -v Using built-in specs. COLLECT_GCC=/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc Target: x86_64-unknown-linux-gnu Configured with: /export/gnu/import/git/gcc/configure --enable-languages=c,c++,fortran --disable-bootstrap --prefix=/usr/gcc-4.9.0 --with-local-prefix=/usr/local --enable-gnu-indirect-function --with-fpmath=sse Thread model: posix gcc version 4.9.0 20131223 (experimental) (GCC) [hjl@gnu-6 pr59582]$