cathugger/mkp224o

Unable to compile.

Closed this issue · 5 comments

I ran the following commands.

$ ./autogen.sh
$ ./configure --enable-amd64-51-30k                                                                                                                                                          
checking for gcc... gcc                                                                                                                                                                                            
checking whether the C compiler works... yes                                                                                                                                                                       
checking for C compiler default output file name... a.out                                                                                                                                                          
checking for suffix of executables...                                                                                                                                                                              
checking whether we are cross compiling... no                                                                                                                                                                      
checking for suffix of object files... o                                                                                                                                                                           
checking whether we are using the GNU C compiler... yes                                                                                                                                                            
checking whether gcc accepts -g... yes                                                                                                                                                                             
checking for gcc option to accept ISO C89... none needed                                                                                                                                                           
checking whether CC supports -march=native... yes                                                                                                                                                                  
checking whether CC supports -fomit-frame-pointer... yes                                                                                                                                                           
checking whether CC supports -nopie... no                                                                                                                                                                          
checking whether CC supports -no-pie... yes
checking whether CC supports -std=c99... yes
checking whether CC supports -Wall... yes
checking whether CC supports -Wextra... yes
checking whether CC supports -Wno-maybe-uninitialized... yes
checking whether CC supports -pedantic... yes
checking whether CC supports and needs -Wno-format -Wno-pedantic-ms-format... no
checking whether CC supports -Wmissing-prototypes... yes
checking whether CC supports -Wstrict-prototypes... yes
checking whether ARGON2ID13 is supported by libsodium... yes
configure: creating ./config.status
config.status: creating GNUmakefile
$ make
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o main.c.o.tmp
 main.c && mv main.c.o.tmp main.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o worker.c.o.$
mp worker.c && mv worker.c.o.tmp worker.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o yaml.c.o.tm$
 yaml.c && mv yaml.c.o.tmp yaml.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o vec.c.o.tmp
vec.c && mv vec.c.o.tmp vec.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o cpucount.c.$
.tmp cpucount.c && mv cpucount.c.o.tmp cpucount.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o base32_to.c$
o.tmp base32_to.c && mv base32_to.c.o.tmp base32_to.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o base32_from$
c.o.tmp base32_from.c && mv base32_from.c.o.tmp base32_from.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o base64_to.c$
o.tmp base64_to.c && mv base64_to.c.o.tmp base64_to.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o base64_from$
c.o.tmp base64_from.c && mv base64_from.c.o.tmp base64_from.c.o
gcc -std=c99 -Wall -Wextra -Wno-maybe-uninitialized -pedantic -Wmissing-prototypes -Wstrict-prototypes -O3 -march=native -fomit-frame-pointer  -DED25519_amd64_51_30k  -DSTATISTICS -DPASSPHRASE -c -o ioutil.c.o.$
mp ioutil.c && mv ioutil.c.o.tmp ioutil.c.o
…
gcc  -c -o ed25519/amd64-51-30k/heap_rootreplaced.s.o.tmp ed25519/amd64-51-30k/heap_rootreplaced.s && mv ed25519/amd64-51-30k/heap_rootreplaced.s.o.tmp ed25519/amd64-51-30k/heap_rootreplaced.s.o         [25/216]
ed25519/amd64-51-30k/heap_rootreplaced.s: Assembler messages:
ed25519/amd64-51-30k/heap_rootreplaced.s:103: Error: bad register name `%rsp'
ed25519/amd64-51-30k/heap_rootreplaced.s:104: Error: bad register name `%r11'
ed25519/amd64-51-30k/heap_rootreplaced.s:105: Error: bad register name `%r11'
ed25519/amd64-51-30k/heap_rootreplaced.s:106: Error: bad register name `%r11'
ed25519/amd64-51-30k/heap_rootreplaced.s:111: Error: bad register name `%r11'
ed25519/amd64-51-30k/heap_rootreplaced.s:116: Error: bad register name `%r12'
ed25519/amd64-51-30k/heap_rootreplaced.s:121: Error: bad register name `%r13'
ed25519/amd64-51-30k/heap_rootreplaced.s:126: Error: bad register name `%r14'
ed25519/amd64-51-30k/heap_rootreplaced.s:131: Error: bad register name `%r15'
ed25519/amd64-51-30k/heap_rootreplaced.s:136: Error: bad register name `%rbx'
ed25519/amd64-51-30k/heap_rootreplaced.s:141: Error: bad register name `%rbp'
ed25519/amd64-51-30k/heap_rootreplaced.s:146: Error: bad register name `%rcx'
ed25519/amd64-51-30k/heap_rootreplaced.s:154: Error: bad register name `%rcx'
ed25519/amd64-51-30k/heap_rootreplaced.s:159: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:164: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:169: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:174: Error: bad register name `%r9'
ed25519/amd64-51-30k/heap_rootreplaced.s:179: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:188: Error: bad register name `%rdi'
ed25519/amd64-51-30k/heap_rootreplaced.s:193: Error: bad register name `%rax'
ed25519/amd64-51-30k/heap_rootreplaced.s:198: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:203: Error: bad register name `%rdi'
ed25519/amd64-51-30k/heap_rootreplaced.s:208: Error: bad register name `%r10'
ed25519/amd64-51-30k/heap_rootreplaced.s:213: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:218: Error: bad register name `%r10)'
ed25519/amd64-51-30k/heap_rootreplaced.s:223: Error: bad register name `%r10)'
ed25519/amd64-51-30k/heap_rootreplaced.s:228: Error: bad register name `%r10)'
ed25519/amd64-51-30k/heap_rootreplaced.s:233: Error: bad register name `%r10)'
ed25519/amd64-51-30k/heap_rootreplaced.s:238: Error: bad register name `%rax)'
ed25519/amd64-51-30k/heap_rootreplaced.s:243: Error: bad register name `%rax)'
ed25519/amd64-51-30k/heap_rootreplaced.s:248: Error: bad register name `%rax)'
ed25519/amd64-51-30k/heap_rootreplaced.s:253: Error: bad register name `%rax)'
ed25519/amd64-51-30k/heap_rootreplaced.s:258: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:263: Error: bad register name `%rax'
ed25519/amd64-51-30k/heap_rootreplaced.s:268: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:273: Error: bad register name `%r10'
ed25519/amd64-51-30k/heap_rootreplaced.s:278: Error: bad register name `%rdi'
ed25519/amd64-51-30k/heap_rootreplaced.s:283: Error: bad register name `%r10'
ed25519/amd64-51-30k/heap_rootreplaced.s:288: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:293: Error: bad register name `%r9'
ed25519/amd64-51-30k/heap_rootreplaced.s:305: Error: bad register name `%rcx'
ed25519/amd64-51-30k/heap_rootreplaced.s:310: Error: bad register name `%rcx'
ed25519/amd64-51-30k/heap_rootreplaced.s:315: Error: bad register name `%rcx'
ed25519/amd64-51-30k/heap_rootreplaced.s:320: Error: bad register name `%rsi'
ed25519/amd64-51-30k/heap_rootreplaced.s:329: Error: bad register name `%rdi'
ed25519/amd64-51-30k/heap_rootreplaced.s:334: Error: bad register name `%rdi'
ed25519/amd64-51-30k/heap_rootreplaced.s:339: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:344: Error: bad register name `%r9'
ed25519/amd64-51-30k/heap_rootreplaced.s:349: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:354: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:359: Error: bad register name `%r9)'
ed25519/amd64-51-30k/heap_rootreplaced.s:364: Error: bad register name `%r9)'
ed25519/amd64-51-30k/heap_rootreplaced.s:369: Error: bad register name `%r9)'
ed25519/amd64-51-30k/heap_rootreplaced.s:374: Error: bad register name `%r9)'
ed25519/amd64-51-30k/heap_rootreplaced.s:379: Error: bad register name `%r8)'
ed25519/amd64-51-30k/heap_rootreplaced.s:384: Error: bad register name `%r8)'
ed25519/amd64-51-30k/heap_rootreplaced.s:389: Error: bad register name `%r8)'
ed25519/amd64-51-30k/heap_rootreplaced.s:394: Error: bad register name `%r8)'
ed25519/amd64-51-30k/heap_rootreplaced.s:403: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:408: Error: bad register name `%r9'
ed25519/amd64-51-30k/heap_rootreplaced.s:413: Error: bad register name `%rdx'
ed25519/amd64-51-30k/heap_rootreplaced.s:418: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:423: Error: bad register name `%r9'
ed25519/amd64-51-30k/heap_rootreplaced.s:428: Error: bad register name `%r8'
ed25519/amd64-51-30k/heap_rootreplaced.s:440: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:445: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:450: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:455: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:460: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:465: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:470: Error: bad register name `%rsp)'
ed25519/amd64-51-30k/heap_rootreplaced.s:473: Error: bad register name `%r11'
ed25519/amd64-51-30k/heap_rootreplaced.s:474: Error: bad register name `%rdi'
ed25519/amd64-51-30k/heap_rootreplaced.s:475: Error: bad register name `%rsi'
GNUmakefile:134: recipe for target 'ed25519/amd64-51-30k/heap_rootreplaced.s.o' failed
make: *** [ed25519/amd64-51-30k/heap_rootreplaced.s.o] Error 1

I am running Ubuntu 18.04.

I checked out out the v1.5.0 tag and used the --enable-donna flag for configure and now it compiles.

master should work with --enable-donna too.
what architecture you're running on? if it's 32-bit or anything non-x86 then amd64 stuff won't work.

Yes, this is a 32-bit machine. While the enable-amd64-51-30k should have tipped me off, I was just following the instructions. I feel the instruction should be updated as the following lines I found confusing.

You probably also want to pass something like --enable-amd64-51-30k or --enable-donna to configure script for faster key generation; run ./configure --help to see all available options.

I don't think it is reasonable to expect the average user to know the difference between the options or why they should should any specific option.

--enable-donna is actually the default now.
However, donna implementation is based off amd64-51-30k code, just ported to C, and on amd64 platforms amd64-51-30k is still faster for me (on some processors another amd64 option is faster than that, but it's not universal).
I edited readme a bit, hopefuly that'll make it more clear.

Yes, I do think the updates would have made things more clear for me.

I appreciate everything.