I’ve been getting some rather strange error messages when I try to compile blender from svn source, these messages look like there is something wrong with the assembler, or the assembly code:
/tmp/cc5CkPlg.s: Assembler messages:
/tmp/cc5CkPlg.s:48: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:49: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:68: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:69: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:134: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:135: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:172: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:173: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:204: Error: `(%rsi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:219: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:220: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:222: Error: `(%rsi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:237: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:238: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:279: Error: `(%rsi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:280: Error: `1(%rsi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:296: Error: `(%rdi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:297: Error: suffix or operands invalid for `add'
/tmp/cc5CkPlg.s:298: Error: `(%rsi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:299: Error: `1(%rsi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:315: Error: `(%rdi,%eax)' is not a valid base/index expression
/tmp/cc5CkPlg.s:316: Error: suffix or operands invalid for `add'
It does seem like that it happened during the ffmpeg code compilation. However, the line:
/tmp/cc5CkPlg.s: Assembler messages:
was the very first error message.
There were a bunch of pointer warnings before the
errors though, and here they are:
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c: In function ‘gmc_mmx’:
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:2663: warning: suggest brackets around arithmetic in operand of |
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:2663: warning: suggest brackets around arithmetic in operand of |
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:2664: warning: suggest brackets around arithmetic in operand of |
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:2664: warning: suggest brackets around arithmetic in operand of |
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:2664: warning: suggest brackets around arithmetic in operand of |
In file included from extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:2836:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc22_3dnow’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1359: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc21_3dnow’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1359: warning: dereferencing type-punned pointer will break strict-aliasing rules
... <<< omitting a whole bunch of warnings >>>...
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc21_3dnow’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1364: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc23_3dnow’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1364: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc12_3dnow’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1364: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc32_3dnow’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1364: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc22_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1365: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc21_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1365: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc23_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1365: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc12_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1365: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel4_mc32_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1365: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel8_mc22_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1366: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel8_mc21_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1366: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel8_mc23_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1366: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel8_mc12_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1366: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel8_mc32_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1366: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel16_mc22_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1367: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel16_mc21_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1367: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel16_mc23_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1367: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel16_mc12_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1367: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘put_h264_qpel16_mc32_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1367: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel4_mc22_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1368: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel4_mc21_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1368: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel4_mc23_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1368: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel4_mc12_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1368: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel4_mc32_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1368: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel8_mc22_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1369: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel8_mc21_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1369: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel8_mc23_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1369: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel8_mc12_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1369: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel8_mc32_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1369: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc22_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1370: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc21_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1370: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc23_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1370: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc12_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1370: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c: In function ‘avg_h264_qpel16_mc32_mmx2’:
extern/ffmpeg/libavcodec/i386/h264dsp_mmx.c:1370: warning: dereferencing type-punned pointer will break strict-aliasing rules
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c: In function ‘dsputil_init_mmx’:
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:3625: warning: assignment from incompatible pointer type
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:3627: warning: assignment from incompatible pointer type
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:3633: warning: assignment from incompatible pointer type
extern/ffmpeg/libavcodec/i386/dsputil_mmx.c:3635: warning: assignment from incompatible pointer type
/tmp/ccUzEjDO.s: Assembler messages:
/tmp/ccUzEjDO.s:48: Error: suffix or operands invalid for `add'
/tmp/ccUzEjDO.s:49: Error: suffix or operands invalid for `add'
/tmp/ccUzEjDO.s:68: Error: suffix or operands invalid for `add'
I have not encountered this myself, but from what I can gather, you may need to make sure you have the proper version of the assembler installed - you’ll have to search the net to find out what the right version is, though
^^ that could certainly be the reason, i did an upgrade maybe half an hour before recompiling the latest blender from svn, and that was the first time I got the assembler error …
does anyone else who have the latest nasm that have the same problem?