Bug 15259 - ffmpeg-exe lto link fail
Summary: ffmpeg-exe lto link fail
Status: NEW
Alias: None
Product: binutils
Classification: Unclassified
Component: binutils (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-09 00:58 UTC by vchou79
Modified: 2013-03-09 00:58 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description vchou79 2013-03-09 00:58:41 UTC
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