Assembler errors in compiling Blender from svn source

Hi guys,

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'

Would anyone know what’s going on here? :confused:

Thanks a lot.

-D

I guess this happens during the ffmpeg code compilation. Can you post the very first error message?

/Nathan

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'

Thanks a lot for the incredibly fast reply!

-D

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 :confused:

/Nathan

^^ what’s the name of the assembler program?

I’ve been compiling blender from svn source for a few months, and this is the first time I’ve had a problem like this.

The assembler used is nasm.
I guess you are on Linux. Maybe your repo was updated some time ago with a new version that does not like ffmpeg’s code.

^^ 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?