aregm / nff-go

NFF-Go -Network Function Framework for GO (former YANFF)
BSD 3-Clause "New" or "Revised" License
1.38k stars 156 forks source link

Errors building NFF-Go using gollvm #711

Closed sitilge closed 4 years ago

sitilge commented 4 years ago

When trying to compile NFF-Go with gollvm (go1.14.2 gollvm LLVM 11.0.00git linux/amd64) I am getting errors such as:

make -C nff-go-base 
make[1]: Entering directory '/home/eglitis/nff-go/nff-go-base'
Checking for AVX support... AVX and AVX2
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/eglitis/nff-go/nff-go-base'
make -C dpdk 
make[1]: Entering directory '/home/eglitis/nff-go/dpdk'
Checking for AVX support... AVX and AVX2
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/eglitis/nff-go/dpdk'
make -C test 
make[1]: Entering directory '/home/eglitis/nff-go/test'
make -C stability 
make -C performance 
make -C stash 
make -C framework 
make[2]: Entering directory '/home/eglitis/nff-go/test/stability'
make[2]: Entering directory '/home/eglitis/nff-go/test/performance'
make[2]: Entering directory '/home/eglitis/nff-go/test/stash'
make[2]: Entering directory '/home/eglitis/nff-go/test/framework'
make -C testMerge 
make -C testSingleWorkingFF 
make -C testCksum 
make -C main 
make[3]: Entering directory '/home/eglitis/nff-go/test/stability/testMerge'
Checking for AVX support... AVX and AVX2make[3]: Entering directory '/home/eglitis/nff-go/test/stability/testSingleWorkingFF'
Checking for AVX support... AVX and AVX2

make[3]: Entering directory '/home/eglitis/nff-go/test/stability/testCksum'
go build  -tags "" perf_light.go 
go build  -tags "" forwardingTestL3.go 
go build  -tags "" perf_main.go 
go build  -tags "" sendback.go 
Checking for AVX support... AVX and AVX2
Checking for AVX support... AVX and AVX2
make[3]: Entering directory '/home/eglitis/nff-go/test/framework/main'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/eglitis/nff-go/test/framework/main'
Checking for AVX support... AVX and AVX2
make[2]: Leaving directory '/home/eglitis/nff-go/test/framework'
go build  -tags "" perf_seq.go 
go build  -tags "" testMerge.go 
go build  -tags "" testSingleWorkingFF.go 
go build  -tags "" testCksum.go 
# github.com/intel-go/nff-go/asm
../../asm/asm.s: Assembler messages:
../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../asm/asm.s:13: Error: junk `(FP)' after expression
../../asm/asm.s:13: Error: too many memory references for `movq'
../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../asm/asm.s:17: Error: junk `(FP)' after expression
../../asm/asm.s:17: Error: too many memory references for `movq'
../../asm/asm.s:18: Error: junk `(FP)' after expression
../../asm/asm.s:18: Error: too many memory references for `movq'
../../asm/asm.s:19: Error: junk `(FP)' after expression
../../asm/asm.s:19: Error: too many memory references for `movq'
../../asm/asm.s:20: Error: junk `(FP)' after expression
../../asm/asm.s:20: Error: too many memory references for `movq'
../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../asm/asm.s:25: Error: too many memory references for `vpand'
../../asm/asm.s:26: Error: too many memory references for `vptest'
../../asm/asm.s:27: Error: junk `(FP)' after expression
../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
../../mk/leaf.mk:19: recipe for target 'forwardingTestL3' failed
make[2]: *** [forwardingTestL3] Error 2
make[2]: *** Waiting for unfinished jobs....
go build  -tags "" ipsec.go 
# github.com/intel-go/nff-go/asm
../../asm/asm.s: Assembler messages:
../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../asm/asm.s:13: Error: junk `(FP)' after expression
../../asm/asm.s:13: Error: too many memory references for `movq'
../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../asm/asm.s:17: Error: junk `(FP)' after expression
../../asm/asm.s:17: Error: too many memory references for `movq'
../../asm/asm.s:18: Error: junk `(FP)' after expression
../../asm/asm.s:18: Error: too many memory references for `movq'
../../asm/asm.s:19: Error: junk `(FP)' after expression
../../asm/asm.s:19: Error: too many memory references for `movq'
../../asm/asm.s:20: Error: junk `(FP)' after expression
../../asm/asm.s:20: Error: too many memory references for `movq'
../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../asm/asm.s:25: Error: too many memory references for `vpand'
../../asm/asm.s:26: Error: too many memory references for `vptest'
../../asm/asm.s:27: Error: junk `(FP)' after expression
../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
# github.com/intel-go/nff-go/asm
../../asm/asm.s: Assembler messages:
../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../asm/asm.s:13: Error: junk `(FP)' after expression
../../asm/asm.s:13: Error: too many memory references for `movq'
../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../asm/asm.s:17: Error: junk `(FP)' after expression
../../asm/asm.s:17: Error: too many memory references for `movq'
../../asm/asm.s:18: Error: junk `(FP)' after expression
../../asm/asm.s:18: Error: too many memory references for `movq'
../../asm/asm.s:19: Error: junk `(FP)' after expression
../../asm/asm.s:19: Error: too many memory references for `movq'
../../asm/asm.s:20: Error: junk `(FP)' after expression
../../asm/asm.s:20: Error: too many memory references for `movq'
../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../asm/asm.s:25: Error: too many memory references for `vpand'
../../asm/asm.s:26: Error: too many memory references for `vptest'
../../asm/asm.s:27: Error: junk `(FP)' after expression
../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
# github.com/intel-go/nff-go/asm
../../../asm/asm.s: Assembler messages:
../../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../../asm/asm.s:13: Error: junk `(FP)' after expression
../../../asm/asm.s:13: Error: too many memory references for `movq'
../../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../../asm/asm.s:17: Error: junk `(FP)' after expression
../../../asm/asm.s:17: Error: too many memory references for `movq'
../../../asm/asm.s:18: Error: junk `(FP)' after expression
../../../asm/asm.s:18: Error: too many memory references for `movq'
../../../asm/asm.s:19: Error: junk `(FP)' after expression
../../../asm/asm.s:19: Error: too many memory references for `movq'
../../../asm/asm.s:20: Error: junk `(FP)' after expression
../../../asm/asm.s:20: Error: too many memory references for `movq'
../../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../../asm/asm.s:25: Error: too many memory references for `vpand'
../../../asm/asm.s:26: Error: too many memory references for `vptest'
../../../asm/asm.s:27: Error: junk `(FP)' after expression
../../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
# github.com/intel-go/nff-go/asm
../../asm/asm.s: Assembler messages:
../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../asm/asm.s:13: Error: junk `(FP)' after expression
../../asm/asm.s:13: Error: too many memory references for `movq'
../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../asm/asm.s:17: Error: junk `(FP)' after expression
../../asm/asm.s:17: Error: too many memory references for `movq'
../../asm/asm.s:18: Error: junk `(FP)' after expression
../../asm/asm.s:18: Error: too many memory references for `movq'
../../asm/asm.s:19: Error: junk `(FP)' after expression
../../asm/asm.s:19: Error: too many memory references for `movq'
../../asm/asm.s:20: Error: junk `(FP)' after expression
../../asm/asm.s:20: Error: too many memory references for `movq'
../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../asm/asm.s:25: Error: too many memory references for `vpand'
../../asm/asm.s:26: Error: too many memory references for `vptest'
../../asm/asm.s:27: Error: junk `(FP)' after expression
../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
# github.com/intel-go/nff-go/asm
../../asm/asm.s: Assembler messages:
../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../asm/asm.s:13: Error: junk `(FP)' after expression
../../asm/asm.s:13: Error: too many memory references for `movq'
../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../asm/asm.s:17: Error: junk `(FP)' after expression
../../asm/asm.s:17: Error: too many memory references for `movq'
../../asm/asm.s:18: Error: junk `(FP)' after expression
../../asm/asm.s:18: Error: too many memory references for `movq'
../../asm/asm.s:19: Error: junk `(FP)' after expression
../../asm/asm.s:19: Error: too many memory references for `movq'
../../asm/asm.s:20: Error: junk `(FP)' after expression
../../asm/asm.s:20: Error: too many memory references for `movq'
../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../asm/asm.s:25: Error: too many memory references for `vpand'
../../asm/asm.s:26: Error: too many memory references for `vptest'
../../asm/asm.s:27: Error: junk `(FP)' after expression
../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
../../mk/leaf.mk:19: recipe for target 'perf_light' failed
make[2]: *** [perf_light] Error 2
../../mk/leaf.mk:19: recipe for target 'sendback' failed
make[2]: *** [sendback] Error 2
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/home/eglitis/nff-go/test/stash'
../mk/intermediate.mk:16: recipe for target 'stash' failed
make[1]: *** [stash] Error 2
make[1]: *** Waiting for unfinished jobs....
../../../mk/leaf.mk:19: recipe for target 'testCksum' failed
make[3]: *** [testCksum] Error 2
make[3]: Leaving directory '/home/eglitis/nff-go/test/stability/testCksum'
../../mk/intermediate.mk:16: recipe for target 'testCksum' failed
make[2]: *** [testCksum] Error 2
make[2]: *** Waiting for unfinished jobs....
# github.com/intel-go/nff-go/asm
../../../asm/asm.s: Assembler messages:
../../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../../asm/asm.s:13: Error: junk `(FP)' after expression
../../../asm/asm.s:13: Error: too many memory references for `movq'
../../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../../asm/asm.s:17: Error: junk `(FP)' after expression
../../../asm/asm.s:17: Error: too many memory references for `movq'
../../../asm/asm.s:18: Error: junk `(FP)' after expression
../../../asm/asm.s:18: Error: too many memory references for `movq'
../../../asm/asm.s:19: Error: junk `(FP)' after expression
../../../asm/asm.s:19: Error: too many memory references for `movq'
../../../asm/asm.s:20: Error: junk `(FP)' after expression
../../../asm/asm.s:20: Error: too many memory references for `movq'
../../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../../asm/asm.s:25: Error: too many memory references for `vpand'
../../../asm/asm.s:26: Error: too many memory references for `vptest'
../../../asm/asm.s:27: Error: junk `(FP)' after expression
../../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
# github.com/intel-go/nff-go/asm
../../../asm/asm.s: Assembler messages:
../../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../../asm/asm.s:13: Error: junk `(FP)' after expression
../../../asm/asm.s:13: Error: too many memory references for `movq'
../../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../../asm/asm.s:17: Error: junk `(FP)' after expression
../../../asm/asm.s:17: Error: too many memory references for `movq'
../../../asm/asm.s:18: Error: junk `(FP)' after expression
../../../asm/asm.s:18: Error: too many memory references for `movq'
../../../asm/asm.s:19: Error: junk `(FP)' after expression
../../../asm/asm.s:19: Error: too many memory references for `movq'
../../../asm/asm.s:20: Error: junk `(FP)' after expression
../../../asm/asm.s:20: Error: too many memory references for `movq'
../../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../../asm/asm.s:25: Error: too many memory references for `vpand'
../../../asm/asm.s:26: Error: too many memory references for `vptest'
../../../asm/asm.s:27: Error: junk `(FP)' after expression
../../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
../../mk/leaf.mk:19: recipe for target 'perf_seq' failed
make[2]: *** [perf_seq] Error 2
../../mk/leaf.mk:19: recipe for target 'perf_main' failed
make[2]: *** [perf_main] Error 2
../../../mk/leaf.mk:19: recipe for target 'testSingleWorkingFF' failed
make[3]: *** [testSingleWorkingFF] Error 2
make[3]: Leaving directory '/home/eglitis/nff-go/test/stability/testSingleWorkingFF'
../../mk/intermediate.mk:16: recipe for target 'testSingleWorkingFF' failed
make[2]: *** [testSingleWorkingFF] Error 2
../../../mk/leaf.mk:19: recipe for target 'testMerge' failed
make[3]: *** [testMerge] Error 2
make[3]: Leaving directory '/home/eglitis/nff-go/test/stability/testMerge'
../../mk/intermediate.mk:16: recipe for target 'testMerge' failed
make[2]: *** [testMerge] Error 2
make[2]: Leaving directory '/home/eglitis/nff-go/test/stability'
../mk/intermediate.mk:16: recipe for target 'stability' failed
make[1]: *** [stability] Error 2
# github.com/intel-go/nff-go/asm
../../asm/asm.s: Assembler messages:
../../asm/asm.s:6: Error: no such instruction: `text ·RteCompilerRmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:9: Error: no such instruction: `text ·RteCompilerWmb(SB),NOSPLIT,$0-0'
../../asm/asm.s:12: Error: no such instruction: `text ·Prefetcht0(SB),NOSPLIT,$0-8'
../../asm/asm.s:13: Error: junk `(FP)' after expression
../../asm/asm.s:13: Error: too many memory references for `movq'
../../asm/asm.s:16: Error: no such instruction: `text ·GenerateMask(SB),NOSPLIT,$0-33'
../../asm/asm.s:17: Error: junk `(FP)' after expression
../../asm/asm.s:17: Error: too many memory references for `movq'
../../asm/asm.s:18: Error: junk `(FP)' after expression
../../asm/asm.s:18: Error: too many memory references for `movq'
../../asm/asm.s:19: Error: junk `(FP)' after expression
../../asm/asm.s:19: Error: too many memory references for `movq'
../../asm/asm.s:20: Error: junk `(FP)' after expression
../../asm/asm.s:20: Error: too many memory references for `movq'
../../asm/asm.s:21: Error: too many memory references for `vmovdqu'
../../asm/asm.s:22: Error: too many memory references for `vmovdqu'
../../asm/asm.s:23: Error: too many memory references for `vmovdqu'
../../asm/asm.s:24: Error: too many memory references for `vpcmpeqb'
../../asm/asm.s:25: Error: too many memory references for `vpand'
../../asm/asm.s:26: Error: too many memory references for `vptest'
../../asm/asm.s:27: Error: junk `(FP)' after expression
../../asm/asm.s:27: Error: invalid instruction suffix for `sete'
../../asm/asm.s:28: Error: too many memory references for `vmovdqu'
../../mk/leaf.mk:19: recipe for target 'ipsec' failed
make[2]: *** [ipsec] Error 2
make[2]: Leaving directory '/home/eglitis/nff-go/test/performance'
../mk/intermediate.mk:16: recipe for target 'performance' failed
make[1]: *** [performance] Error 2
make[1]: Leaving directory '/home/eglitis/nff-go/test'
mk/intermediate.mk:16: recipe for target 'test' failed
make: *** [test] Error 2
aregm commented 4 years ago

NFF-Go is not designed initially for gollvm build, especially the assembler part.