Summary: | Too small .bss stack | ||
---|---|---|---|
Product: | gcc | Reporter: | Christian Marillat <marillat> |
Component: | c | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | normal | CC: | gcc-bugs, laurent, sje, T-Bone |
Priority: | P3 | ||
Version: | 4.4.1 | ||
Target Milestone: | --- | ||
See Also: | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42040 | ||
Host: | Target: | ia64-linux-gnu | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | ||
Bug Depends on: | |||
Bug Blocks: | 42086 | ||
Attachments: |
preprocessed mpeg12enc.i
preprocessed msmpeg4 |
Description
Christian Marillat
2009-10-04 13:13:11 UTC
Created attachment 18702 [details]
preprocessed mpeg12enc.i
Tell me if you want another preprocessed files.
gcc is 4.4.1 and not 4.3.4 You can find more compilation logs here (near the bottom). Click on (stderr) link to see error messages. http://fate.multimedia.cx/ Also mplayer doesn't build with gcc 4.1.3, 4.2.4 and 4.3.4 with the same error. ccache cc -DHAVE_AV_CONFIG_H -I. -I"/build/buildd/ffmpeg-dmo-0.5+svn20090928" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -Wall -g -fPIC -DPIC -Wall -g -fPIC -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/usr/include/dirac -I/usr/include/schroedinger-1.0 -I/usr/include/liboil-0.3 -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -O3 -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -MMD -MF libavcodec/mpeg12enc.d -MT libavcodec/mpeg12enc.o -c -o libavcodec/mpeg12enc.o libavcodec/mpeg12enc.c Here's additional input for this bug, focusing on the ffmpeg commit which first triggered this error (r18553): $ gcc-4.4 -v Using built-in specs. Target: ia64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.1-4' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --disable-libssp --enable-mpfr --enable-objc-gc --with-system-libunwind --enable-checking=release --build=ia64-linux-gnu --host=ia64-linux-gnu --target=ia64-linux-gnu Thread model: posix gcc version 4.4.1 (Debian 4.4.1-4) $ uname -a Linux tic 2.6.27.35 #1 SMP Wed Sep 30 19:42:26 CEST 2009 ia64 GNU/Linux $ cat /proc/cpuinfo processor : 0 vendor : GenuineIntel arch : IA-64 family : 31 model : 1 model name : Madison revision : 5 archrev : 0 features : branchlong cpu number : 0 cpu regs : 4 cpu MHz : 1300.000 itc MHz : 1300.000000 BogoMIPS : 1946.41 siblings : 1 physical id: 0 [...] gcc-4.4 -save-temps -DHAVE_AV_CONFIG_H -I. -I"/home/varenet/ffmpeg" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -std=c99 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -O3 -fno-math-errno -fno-signed-zeros -fPIC -DPIC -c -o libavcodec/msmpeg4.o libavcodec/msmpeg4.c [...] gcc-4.4 -save-temps -shared -Wl,-soname,libavutil.so.50 -L"/home/varenet/ffmpeg"/libavcodec -L"/home/varenet/ffmpeg"/libavdevice -L"/home/varenet/ffmpeg"/libavfilter -L"/home/varenet/ffmpeg"/libavformat -L"/home/varenet/ffmpeg"/libavutil -L"/home/varenet/ffmpeg"/libpostproc -L"/home/varenet/ffmpeg"/libswscale -Wl,--warn-common -Wl,--as-needed -Wl,-rpath-link,"/home/varenet/ffmpeg"/libpostproc -Wl,-rpath-link,"/home/varenet/ffmpeg"/libswscale -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavfilter -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavdevice -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavformat -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavcodec -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavutil -Wl,-Bsymbolic -o libavutil/libavutil.so.50 libavutil/adler32.o libavutil/aes.o libavutil/avstring.o libavutil/base64.o libavutil/crc.o libavutil/des.o libavutil/fifo.o libavutil/intfloat_readwrite.o libavutil/lfg.o libavutil/lls.o libavutil/log.o libavutil/lzo.o libavutil/mathematics.o libavutil/md5.o libavutil/mem.o libavutil/random_seed.o libavutil/rational.o libavutil/rc4.o libavutil/sha1.o libavutil/tree.o libavutil/utils.o -lz -lbz2 -lm -ldl cd ./libavutil/ && ln -sf libavutil.so.50 libavutil.so gcc-4.4 -save-temps -shared -Wl,-soname,libavcodec.so.52 -L"/home/varenet/ffmpeg"/libavcodec -L"/home/varenet/ffmpeg"/libavdevice -L"/home/varenet/ffmpeg"/libavfilter -L"/home/varenet/ffmpeg"/libavformat -L"/home/varenet/ffmpeg"/libavutil -L"/home/varenet/ffmpeg"/libpostproc -L"/home/varenet/ffmpeg"/libswscale -Wl,--warn-common -Wl,--as-needed -Wl,-rpath-link,"/home/varenet/ffmpeg"/libpostproc -Wl,-rpath-link,"/home/varenet/ffmpeg"/libswscale -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavfilter -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavdevice -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavformat -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavcodec -Wl,-rpath-link,"/home/varenet/ffmpeg"/libavutil -Wl,-Bsymbolic -o libavcodec/libavcodec.so.52 libavcodec/allcodecs.o libavcodec/audioconvert.o libavcodec/avpacket.o libavcodec/bitstream.o libavcodec/bitstream_filter.o libavcodec/dsputil.o libavcodec/eval.o libavcodec/faanidct.o libavcodec/imgconvert.o libavcodec/jrevdct.o libavcodec/opt.o libavcodec/options.o libavcodec/parser.o libavcodec/raw.o libavcodec/resample.o libavcodec/resample2.o libavcodec/simple_idct.o libavcodec/utils.o libavcodec/aandcttab.o libavcodec/faandct.o libavcodec/jfdctfst.o libavcodec/jfdctint.o libavcodec/fft.o libavcodec/golomb.o libavcodec/mdct.o libavcodec/rdft.o libavcodec/aac.o libavcodec/aactab.o libavcodec/mpeg4audio.o libavcodec/aac_parser.o libavcodec/aac_ac3_parser.o libavcodec/aasc.o libavcodec/msrledec.o libavcodec/ac3enc.o libavcodec/ac3tab.o libavcodec/ac3.o libavcodec/alac.o libavcodec/alacenc.o libavcodec/lpc.o libavcodec/sp5xdec.o libavcodec/mjpegdec.o libavcodec/mjpeg.o libavcodec/apedec.o libavcodec/asv1.o libavcodec/mpeg12data.o libavcodec/atrac3.o libavcodec/avs.o libavcodec/bethsoftvideo.o libavcodec/bfi.o libavcodec/bmp.o libavcodec/bmpenc.o libavcodec/c93.o libavcodec/cavs.o libavcodec/cavsdec.o libavcodec/cavsdsp.o libavcodec/mpegvideo.o libavcodec/cinepak.o libavcodec/cljr.o libavcodec/cook.o libavcodec/cscd.o libavcodec/cyuv.o libavcodec/dca.o libavcodec/dnxhddec.o libavcodec/dnxhddata.o libavcodec/dnxhdenc.o libavcodec/mpegvideo_enc.o libavcodec/motion_est.o libavcodec/ratecontrol.o libavcodec/dsicinav.o libavcodec/dvbsubdec.o libavcodec/dvbsub.o libavcodec/dvdsubdec.o libavcodec/dvdsubenc.o libavcodec/dv.o libavcodec/dxa.o libavcodec/eacmv.o libavcodec/eatgq.o libavcodec/eaidct.o libavcodec/eatgv.o libavcodec/eatqi.o libavcodec/mpeg12.o libavcodec/error_resilience.o libavcodec/8bps.o libavcodec/8svx.o libavcodec/escape124.o libavcodec/ffv1.o libavcodec/rangecoder.o libavcodec/huffyuv.o libavcodec/flacdec.o libavcodec/flacdata.o libavcodec/flac.o libavcodec/flacenc.o libavcodec/flashsv.o libavcodec/flashsvenc.o libavcodec/flicvideo.o libavcodec/h263dec.o libavcodec/h263.o libavcodec/4xm.o libavcodec/fraps.o libavcodec/huffman.o libavcodec/gifdec.o libavcodec/lzw.o libavcodec/gif.o libavcodec/h261dec.o libavcodec/h261.o libavcodec/h261enc.o libavcodec/h263_parser.o libavcodec/h264.o libavcodec/h264idct.o libavcodec/h264pred.o libavcodec/h264_parser.o libavcodec/cabac.o libavcodec/idcinvideo.o libavcodec/imc.o libavcodec/indeo2.o libavcodec/indeo3.o libavcodec/dpcm.o libavcodec/interplayvideo.o libavcodec/jpeglsdec.o libavcodec/jpegls.o libavcodec/jpeglsenc.o libavcodec/kmvc.o libavcodec/ljpegenc.o libavcodec/mjpegenc.o libavcodec/loco.o libavcodec/mace.o libavcodec/mdec.o libavcodec/mimic.o libavcodec/mjpegbdec.o libavcodec/mlpdec.o libavcodec/mlp_parser.o libavcodec/mlp.o libavcodec/mmvideo.o libavcodec/motionpixels.o libavcodec/mpegaudiodec.o libavcodec/mpegaudiodecheader.o libavcodec/mpegaudio.o libavcodec/mpegaudiodata.o libavcodec/mpegaudioenc.o libavcodec/mpc7.o libavcodec/mpc.o libavcodec/mpc8.o libavcodec/mpegvideo_xvmc.o libavcodec/mpeg12enc.o libavcodec/mpeg4video_parser.o libavcodec/msmpeg4.o libavcodec/msmpeg4data.o libavcodec/msrle.o libavcodec/msvideo1.o libavcodec/lcldec.o libavcodec/nellymoserdec.o libavcodec/nellymoser.o libavcodec/nellymoserenc.o libavcodec/nuv.o libavcodec/rtjpeg.o libavcodec/pnmenc.o libavcodec/pnm.o libavcodec/pcx.o libavcodec/pcxenc.o libavcodec/png.o libavcodec/pngdec.o libavcodec/pngenc.o libavcodec/ptx.o libavcodec/qcelpdec.o libavcodec/qcelp_lsp.o libavcodec/celp_math.o libavcodec/celp_filters.o libavcodec/acelp_vectors.o libavcodec/qdm2.o libavcodec/qdrw.o libavcodec/qpeg.o libavcodec/qtrle.o libavcodec/qtrleenc.o libavcodec/ra144.o libavcodec/ra288.o libavcodec/rawdec.o libavcodec/rawenc.o libavcodec/rl2.o libavcodec/roqvideodec.o libavcodec/roqvideo.o libavcodec/roqvideoenc.o libavcodec/elbg.o libavcodec/roqaudioenc.o libavcodec/rpza.o libavcodec/rv10.o libavcodec/rv30.o libavcodec/rv34.o libavcodec/rv30dsp.o libavcodec/rv40.o libavcodec/rv40dsp.o libavcodec/sgidec.o libavcodec/sgienc.o libavcodec/rle.o libavcodec/shorten.o libavcodec/smacker.o libavcodec/smc.o libavcodec/snow.o libavcodec/sonic.o libavcodec/sunrast.o libavcodec/svq1dec.o libavcodec/svq1.o libavcodec/svq1enc.o libavcodec/targa.o libavcodec/targaenc.o libavcodec/vp3.o libavcodec/xiph.o libavcodec/vp3dsp.o libavcodec/tiertexseqv.o libavcodec/tiff.o libavcodec/faxcompr.o libavcodec/tiffenc.o libavcodec/lzwenc.o libavcodec/truemotion1.o libavcodec/truemotion2.o libavcodec/truespeech.o libavcodec/tscc.o libavcodec/tta.o libavcodec/txd.o libavcodec/s3tc.o libavcodec/ulti.o libavcodec/vb.o libavcodec/vc1.o libavcodec/vc1data.o libavcodec/vc1dsp.o libavcodec/intrax8.o libavcodec/intrax8dsp.o libavcodec/vcr1.o libavcodec/vmdav.o libavcodec/vmnc.o libavcodec/vorbis_dec.o libavcodec/vorbis.o libavcodec/vorbis_data.o libavcodec/vorbis_enc.o libavcodec/vp5.o libavcodec/vp56.o libavcodec/vp56data.o libavcodec/vp6.o libavcodec/vp6dsp.o libavcodec/vqavideo.o libavcodec/wavpack.o libavcodec/wmadec.o libavcodec/wma.o libavcodec/wmaenc.o libavcodec/wmv2dec.o libavcodec/wmv2.o libavcodec/wmv2enc.o libavcodec/wnv1.o libavcodec/ws-snd1.o libavcodec/xan.o libavcodec/xl.o libavcodec/xsubdec.o libavcodec/lclenc.o libavcodec/zmbv.o libavcodec/zmbvenc.o libavcodec/pcm.o libavcodec/adpcm.o libavcodec/adxdec.o libavcodec/adxenc.o libavcodec/g726.o libavcodec/ac3_parser.o libavcodec/cavs_parser.o libavcodec/dca_parser.o libavcodec/dirac_parser.o libavcodec/dnxhd_parser.o libavcodec/dvbsub_parser.o libavcodec/dvdsub_parser.o libavcodec/h261_parser.o libavcodec/mjpeg_parser.o libavcodec/mpegaudio_parser.o libavcodec/mpegvideo_parser.o libavcodec/pnm_parser.o libavcodec/vc1_parser.o libavcodec/vp3_parser.o libavcodec/dump_extradata_bsf.o libavcodec/h264_mp4toannexb_bsf.o libavcodec/imx_dump_header_bsf.o libavcodec/mjpega_dump_header_bsf.o libavcodec/movsub_bsf.o libavcodec/mp3_header_compress_bsf.o libavcodec/mp3_header_decompress_bsf.o libavcodec/noise_bsf.o libavcodec/remove_extradata_bsf.o -lavutil -lz -lbz2 -lm -ldl libavcodec/msmpeg4.o: In function `ff_msmpeg4_decode_init': /home/varenet/ffmpeg/libavcodec/msmpeg4.c:1071: relocation truncated to fit: GPREL22 against `.bss' /home/varenet/ffmpeg/libavcodec/msmpeg4.c:1071: relocation truncated to fit: GPREL22 against `.bss' /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: ld returned 1 exit status make: *** [libavcodec/libavcodec.so.52] Error 1 In case this matters, the full tarball of the build with logs and everything is available at http://www.pateam.org/archive/tmp/ffmpeg.tar.bz2 Created attachment 18709 [details]
preprocessed msmpeg4
Andrew, did you reproduce it? If not what's missing/would help? I tried (and failed) to reproduce this using msmpeg4.i and compiling with: gcc -shared -pthread -std=c99 -fomit-frame-pointer -g -O3 -fno-math-errno -fno-signed-zeros -fPIC -fno-tree-vectorize msmpeg4.i -o x.so I tried ToT, 4.4 and 4.3 GCC compilers and was unable to reproduce the bug. I wonder if it only happens when linking in all the objects together. I also wonder what linker you were using, I was using the latest 2.20 linker. Subject: Re: Too small .bss stack On Fri, Oct 30, 2009 at 9:15 PM, sje at cup dot hp dot com <gcc-bugzilla@gcc.gnu.org> wrote: > > > ------- Comment #7 from sje at cup dot hp dot com 2009-10-30 20:15 ------- > I tried (and failed) to reproduce this using msmpeg4.i and compiling with: > > gcc -shared -pthread -std=c99 -fomit-frame-pointer -g -O3 -fno-math-errno > -fno-signed-zeros -fPIC -fno-tree-vectorize msmpeg4.i -o x.so > > I tried ToT, 4.4 and 4.3 GCC compilers and was unable to reproduce the bug. > > I wonder if it only happens when linking in all the objects together. I thought the report and log was clear enough on the fact that this is indeed a problem that only arises during the final link. If not, then now it is ;) > I also wonder what linker you were using, I was using the latest 2.20 linker. ld --version GNU ld (GNU Binutils for Debian) 2.20 > I thought the report and log was clear enough on the fact that this is
> indeed a problem that only arises during the final link. If not, then
> now it is ;)
I guess the point I was trying to make is that I don't think it is possible to reproduce this by just compiling and linking msmpeg4.i. I think it is necessary to have all the objects that are being linked into the final library in order to get the error.
I am not sure if this would help or not but it might be interesting to try the -mno-sdata flag on the compilation to see if that helps. By default GCC on IA64 will use .sbss (short bss) and .bss (normal bss) sections. -mno-sdata will turn off the use of .sbss. Adding -mno-sdata does not help. Note that the error messages are always referring to .bss, never to .sbss. Try dropping -Bsymbolic Removing -Bsymbolic caused many more of those messages. This is a linker bug. Recompiling without -g, so as to get error messages without the unhelpful symbolic interpretation, I can reproduce msmpeg4.c:(.text.unlikely+0xbe2): relocation truncated to fit: GPREL22 against `.bss' msmpeg4.c:(.text.unlikely+0xc80): relocation truncated to fit: GPREL22 against `.bss' Matching these offsets up with the object file, we see 000000000be2 000400000086 R_IA64_LTOFF22X 0000000000000000 .bss + 29658 000000000c80 000400000086 R_IA64_LTOFF22X 0000000000000000 .bss + 2a560 Notice these are *not* GPREL22 relocations, but LTOFF22X relocations. These LTOFF22X relocations are supposed to be relaxed to GPREL22 relocations by the linker, but ONLY IF the address is in range; otherwise they are to be interpreted as LTOFF22 relocations which store the full address in the GOT. Unfortunately, the ia64 linker doesn't implement --no-relax, like other targets do, so it's not easy to work around this bug. Also, it would be extremely helpful if there was a linker switch that disabled symbolic interpretation of section+offset. I spent a lot of time looking at the wrong addresses... I've created http://sourceware.org/bugzilla/show_bug.cgi?id=10955 to track this problem. You'll need to create new bugzilla accounts on the sourceware system in order to get CC'd. Closing this as not-a-gcc-bug. |