Cross compiler ld fail. Target: x86_64-w64-mingw32 gcc version 4.8.0 20130308 (experimental) [gcc-4_8-trunk revision 196532] (w64-mingw32 rev 5627) /tmp/ccCwgkHO.ltrans0.ltrans.o:ccCwgkHO.ltrans0.o:(.data+0x2b9c0): undefined reference to `ff_mlp_firorder_0' /tmp/ccCwgkHO.ltrans0.ltrans.o:ccCwgkHO.ltrans0.o:(.data+0x2b9c8): undefined reference to `ff_mlp_firorder_1' /home/slave/local/xmingw-4_8-trunk-w64-seh/lib/gcc/x86_64-w64-mingw32/4.8.0/../../../../x86_64-w64-mingw32/bin/ld: /tmp/ccCwgkHO.ltrans0.ltrans.o: bad reloc address 0x2b9c8 in section `.data' /home/slave/local/xmingw-4_8-trunk-w64-seh/lib/gcc/x86_64-w64-mingw32/4.8.0/../../../../x86_64-w64-mingw32/bin/ld: final link failed: Invalid operation collect2: error: ld returned 1 exit status binutils cvs HEAD LD final link FFmpeg.exe fail. The ld link fine without lto. firtable.619744: .quad ff_mlp_firorder_0 .quad ff_mlp_firorder_1 .quad ff_mlp_firorder_2 .quad ff_mlp_firorder_3 .quad ff_mlp_firorder_4 .quad ff_mlp_firorder_5 .quad ff_mlp_firorder_6 .quad ff_mlp_firorder_7 .quad ff_mlp_firorder_8 .globl iirtable.619755 .align 32 The above is found in ffmpeg_g.ltrans0.s. bash-4.1$ ls ffmpeg_g* ffmpeg_g.ltrans.out ffmpeg_g.ltrans10.o ffmpeg_g.ltrans12.s ffmpeg_g.ltrans15.o ffmpeg_g.ltrans17.s ffmpeg_g.ltrans2.o ffmpeg_g.ltrans21.s ffmpeg_g.ltrans24.o ffmpeg_g.ltrans26.s ffmpeg_g.ltrans29.o ffmpeg_g.ltrans30.s ffmpeg_g.ltrans5.o ffmpeg_g.ltrans7.s ffmpeg_g.ltrans0.o ffmpeg_g.ltrans10.s ffmpeg_g.ltrans13.o ffmpeg_g.ltrans15.s ffmpeg_g.ltrans18.o ffmpeg_g.ltrans2.s ffmpeg_g.ltrans22.o ffmpeg_g.ltrans24.s ffmpeg_g.ltrans27.o ffmpeg_g.ltrans29.s ffmpeg_g.ltrans31.o ffmpeg_g.ltrans5.s ffmpeg_g.ltrans8.o ffmpeg_g.ltrans0.s ffmpeg_g.ltrans11.o ffmpeg_g.ltrans13.s ffmpeg_g.ltrans16.o ffmpeg_g.ltrans18.s ffmpeg_g.ltrans20.o ffmpeg_g.ltrans22.s ffmpeg_g.ltrans25.o ffmpeg_g.ltrans27.s ffmpeg_g.ltrans3.o ffmpeg_g.ltrans31.s ffmpeg_g.ltrans6.o ffmpeg_g.ltrans8.s ffmpeg_g.ltrans1.o ffmpeg_g.ltrans11.s ffmpeg_g.ltrans14.o ffmpeg_g.ltrans16.s ffmpeg_g.ltrans19.o ffmpeg_g.ltrans20.s ffmpeg_g.ltrans23.o ffmpeg_g.ltrans25.s ffmpeg_g.ltrans28.o ffmpeg_g.ltrans3.s ffmpeg_g.ltrans4.o ffmpeg_g.ltrans6.s ffmpeg_g.ltrans9.o ffmpeg_g.ltrans1.s ffmpeg_g.ltrans12.o ffmpeg_g.ltrans14.s ffmpeg_g.ltrans17.o ffmpeg_g.ltrans19.s ffmpeg_g.ltrans21.o ffmpeg_g.ltrans23.s ffmpeg_g.ltrans26.o ffmpeg_g.ltrans28.s ffmpeg_g.ltrans30.o ffmpeg_g.ltrans4.s ffmpeg_g.ltrans7.o ffmpeg_g.ltrans9.s And in libavcodec/libavcodec.a mlpdsp.o: 0000000000000000 b .bss 0000000000000000 d .data 0000000000000000 r .gnu.lto_.decls.aacc956eacabc2bb 0000000000000000 r .gnu.lto_.inline.aacc956eacabc2bb 0000000000000000 r .gnu.lto_.jmpfuncs.aacc956eacabc2bb 0000000000000000 r .gnu.lto_.opts 0000000000000000 r .gnu.lto_.pureconst.aacc956eacabc2bb 0000000000000000 r .gnu.lto_.refs.aacc956eacabc2bb 0000000000000000 r .gnu.lto_.symbol_nodes.aacc956eacabc2bb 0000000000000000 r .gnu.lto_.symtab.aacc956eacabc2bb 0000000000000000 r .gnu.lto_ff_mlpdsp_init_x86.aacc956eacabc2bb 0000000000000000 r .gnu.lto_mlp_filter_channel_x86.aacc956eacabc2bb 0000000000000000 p .pdata 0000000000000000 p .pdata.unlikely 0000000000000000 r .rdata 0000000000000000 r .rdata$zzz 0000000000000000 t .text 0000000000000000 t .text.unlikely 0000000000000000 r .xdata 0000000000000000 r .xdata.unlikely 0000000000000001 C __gnu_lto_v1 00000000000000be t ff_mlp_firorder_0 00000000000000b4 t ff_mlp_firorder_1 00000000000000a9 t ff_mlp_firorder_2 000000000000009e t ff_mlp_firorder_3 000000000000008f t ff_mlp_firorder_4 0000000000000080 t ff_mlp_firorder_5 0000000000000071 t ff_mlp_firorder_6 0000000000000062 t ff_mlp_firorder_7 0000000000000053 t ff_mlp_firorder_8 0000000000000109 t ff_mlp_iirorder_0 00000000000000f7 t ff_mlp_iirorder_1 00000000000000e5 t ff_mlp_iirorder_2 00000000000000d3 t ff_mlp_iirorder_3 00000000000000c1 t ff_mlp_iirorder_4 0000000000000000 T ff_mlpdsp_init_x86 0000000000000040 r firtable 0000000000000000 r iirtable 0000000000000000 t mlp_filter_channel_x86 bash-4.1$ grep -r ff_mlp_firorder ffmpeg/ ffmpeg/-lshell32.res:223 aacc956eacabc2bb UNDEF ff_mlp_firorder_0 ffmpeg/-lshell32.res:226 aacc956eacabc2bb UNDEF ff_mlp_firorder_1 ffmpeg/-lshell32.res:229 aacc956eacabc2bb UNDEF ff_mlp_firorder_2 ffmpeg/-lshell32.res:232 aacc956eacabc2bb UNDEF ff_mlp_firorder_3 ffmpeg/-lshell32.res:235 aacc956eacabc2bb UNDEF ff_mlp_firorder_4 ffmpeg/-lshell32.res:238 aacc956eacabc2bb UNDEF ff_mlp_firorder_5 ffmpeg/-lshell32.res:241 aacc956eacabc2bb UNDEF ff_mlp_firorder_6 ffmpeg/-lshell32.res:244 aacc956eacabc2bb UNDEF ff_mlp_firorder_7 ffmpeg/-lshell32.res:247 aacc956eacabc2bb UNDEF ff_mlp_firorder_8 Binary file ffmpeg/ffmpeg_g.ltrans0.o matches Binary file ffmpeg/ffmpeg_g.ltrans9.o matches Binary file ffmpeg/libavcodec/libavcodec.a matches ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_8; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_7; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_6; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_5; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_4; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_3; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_2; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_1; ffmpeg/libavcodec/x86/mlpdsp.c:extern char ff_mlp_firorder_0; ffmpeg/libavcodec/x86/mlpdsp.c:static const void *firtable[9] = { &ff_mlp_firorder_0, &ff_mlp_firorder_1, ffmpeg/libavcodec/x86/mlpdsp.c: &ff_mlp_firorder_2, &ff_mlp_firorder_3, ffmpeg/libavcodec/x86/mlpdsp.c: &ff_mlp_firorder_4, &ff_mlp_firorder_5, ffmpeg/libavcodec/x86/mlpdsp.c: &ff_mlp_firorder_6, &ff_mlp_firorder_7, ffmpeg/libavcodec/x86/mlpdsp.c: &ff_mlp_firorder_8 }; ffmpeg/libavcodec/x86/mlpdsp.c: FIRMUL (ff_mlp_firorder_8, 0x1c ) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMUL (ff_mlp_firorder_7, 0x18 ) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMUL (ff_mlp_firorder_6, 0x14 ) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMUL (ff_mlp_firorder_5, 0x10 ) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMUL (ff_mlp_firorder_4, 0x0c ) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMULREG(ff_mlp_firorder_3, 0x08,10) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMULREG(ff_mlp_firorder_2, 0x04, 9) ffmpeg/libavcodec/x86/mlpdsp.c: FIRMULREG(ff_mlp_firorder_1, 0x00, 8) ffmpeg/libavcodec/x86/mlpdsp.c: LABEL_MANGLE(ff_mlp_firorder_0)":\n\t" Binary file ffmpeg/libavcodec/x86/mlpdsp.o matches ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_8: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_7: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_6: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_5: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_4: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_3: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_2: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_1: ffmpeg/ffmpeg_g.ltrans9.s: ff_mlp_firorder_0: ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_0 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_1 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_2 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_3 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_4 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_5 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_6 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_7 ffmpeg/ffmpeg_g.ltrans0.s: .quad ff_mlp_firorder_8 In file ffmpeg/-lshell32.res libavcodec/libavcodec.a@0x265c99a 15 195 aacc956eacabc2bb PREVAILING_DEF_IRONLY ff_mlpdsp_init_x86 255 aacc956eacabc2bb UNDEF ff_mlp_iirorder_0 258 aacc956eacabc2bb UNDEF ff_mlp_iirorder_1 261 aacc956eacabc2bb UNDEF ff_mlp_iirorder_2 264 aacc956eacabc2bb UNDEF ff_mlp_iirorder_3 267 aacc956eacabc2bb UNDEF ff_mlp_iirorder_4 223 aacc956eacabc2bb UNDEF ff_mlp_firorder_0 226 aacc956eacabc2bb UNDEF ff_mlp_firorder_1 229 aacc956eacabc2bb UNDEF ff_mlp_firorder_2 232 aacc956eacabc2bb UNDEF ff_mlp_firorder_3 235 aacc956eacabc2bb UNDEF ff_mlp_firorder_4 238 aacc956eacabc2bb UNDEF ff_mlp_firorder_5 241 aacc956eacabc2bb UNDEF ff_mlp_firorder_6 244 aacc956eacabc2bb UNDEF ff_mlp_firorder_7 247 aacc956eacabc2bb UNDEF ff_mlp_firorder_8