Alexandre Martins <alexandre.mart...@netasq.com> writes:

> For those interested in testing, you can find a patch that add OpenSSL 1.0d
> to head.
[...]

Hmm, doesn't build with ld(1) from /projects/binutils-2.17.

  $ make -dl all
  as  -o rc4-amd64.o /usr/src/secure/lib/libcrypto/amd64/rc4-amd64.s
  [ -z "ctfconvert" -o -n "1" ] ||  (echo ctfconvert -L VERSION rc4-amd64.o &&  
ctfconvert -L VERSION rc4-amd64.o)
  echo building static crypto library
  building static crypto library
  rm -f libcrypto.a
  ar cq libcrypto.a `lorder ...`
  ranlib libcrypto.a
  as  -o rc4-amd64.po /usr/src/secure/lib/libcrypto/amd64/rc4-amd64.s
  [ -z "ctfconvert" -o -n "1" ] ||  (echo ctfconvert -L VERSION rc4-amd64.po && 
 ctfconvert -L VERSION rc4-amd64.po)
  echo building profiled crypto library
  building profiled crypto library
  rm -f libcrypto_p.a
  ar cq libcrypto_p.a `lorder ...`
  ranlib libcrypto_p.a
  as  -o rc4-amd64.So /usr/src/secure/lib/libcrypto/amd64/rc4-amd64.s
  [ -z "ctfconvert" -o -n "1" ] ||  (echo ctfconvert -L VERSION rc4-amd64.So && 
 ctfconvert -L VERSION rc4-amd64.So)
  echo building shared library libcrypto.so.7
  building shared library libcrypto.so.7
  rm -f libcrypto.so.7 libcrypto.so
  ln -fs libcrypto.so.7 libcrypto.so
  cc  -fstack-protector -shared -Wl,-x  -o libcrypto.so.7 
-Wl,-soname,libcrypto.so.7  `lorder ...`
  /usr/bin/ld: rc4-amd64.So: relocation R_X86_64_PC32 against 
`OPENSSL_ia32cap_P' can not be used when making a shared object; recompile with 
-fPIC
  /usr/bin/ld: final link failed: Bad value
  *** Error code 1

Reverting back to binutils-2.15 makes build fail with another error.
libcrypto builds fine but linking against it always fails

  $ cc foo.c -lcrypto
  /usr/lib/libcrypto.so: undefined reference to `_x86_64_Camellia_decrypt'
  /usr/lib/libcrypto.so: undefined reference to `.Ldloop'

Indeed, some parts are missing

%% diff against output from cmll-x86_64.pl
--- secure/lib/libcrypto/amd64/cmll_amd64.s
+++ crypto/openssl/crypto/camellia/asm/cmll-x86_64.pl.out
@@ -312,6 +312,170 @@ Camellia_DecryptBlock_Rounds:
 
        call    _x86_64_Camellia_decrypt
 
+       bswapl  %r8d
+       bswapl  %r9d
+       bswapl  %r10d
+       movl    %r8d,0(%r13)
+       bswapl  %r11d
+       movl    %r9d,4(%r13)
+       movl    %r10d,8(%r13)
+       movl    %r11d,12(%r13)
+
+       movq    0(%rsp),%r15
+       movq    8(%rsp),%r14
+       movq    16(%rsp),%r13
+       movq    24(%rsp),%rbp
+       movq    32(%rsp),%rbx
+       leaq    40(%rsp),%rsp
+.Ldec_epilogue:
+       .byte   0xf3,0xc3
+.size  Camellia_DecryptBlock_Rounds,.-Camellia_DecryptBlock_Rounds
+
+.type  _x86_64_Camellia_decrypt,@function
+.align 16
+_x86_64_Camellia_decrypt:
+       xorl    0(%r14),%r9d
+       xorl    4(%r14),%r8d
+       xorl    8(%r14),%r11d
+       xorl    12(%r14),%r10d
+.align 16
+.Ldloop:
+       movl    -8(%r14),%ebx
+       movl    -4(%r14),%eax
+
+       xorl    %r8d,%eax
+       xorl    %r9d,%ebx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       movl    2052(%rbp,%rsi,8),%edx
+       movl    0(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       shrl    $16,%eax
+       movzbl  %bh,%edi
+       xorl    4(%rbp,%rsi,8),%edx
+       shrl    $16,%ebx
+       xorl    4(%rbp,%rdi,8),%ecx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       xorl    0(%rbp,%rsi,8),%edx
+       xorl    2052(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       movzbl  %bh,%edi
+       xorl    2048(%rbp,%rsi,8),%edx
+       xorl    2048(%rbp,%rdi,8),%ecx
+       movl    -16(%r14),%ebx
+       movl    -12(%r14),%eax
+       xorl    %edx,%ecx
+       rorl    $8,%edx
+       xorl    %ecx,%r10d
+       xorl    %ecx,%r11d
+       xorl    %edx,%r11d
+       xorl    %r10d,%eax
+       xorl    %r11d,%ebx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       movl    2052(%rbp,%rsi,8),%edx
+       movl    0(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       shrl    $16,%eax
+       movzbl  %bh,%edi
+       xorl    4(%rbp,%rsi,8),%edx
+       shrl    $16,%ebx
+       xorl    4(%rbp,%rdi,8),%ecx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       xorl    0(%rbp,%rsi,8),%edx
+       xorl    2052(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       movzbl  %bh,%edi
+       xorl    2048(%rbp,%rsi,8),%edx
+       xorl    2048(%rbp,%rdi,8),%ecx
+       movl    -24(%r14),%ebx
+       movl    -20(%r14),%eax
+       xorl    %edx,%ecx
+       rorl    $8,%edx
+       xorl    %ecx,%r8d
+       xorl    %ecx,%r9d
+       xorl    %edx,%r9d
+       xorl    %r8d,%eax
+       xorl    %r9d,%ebx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       movl    2052(%rbp,%rsi,8),%edx
+       movl    0(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       shrl    $16,%eax
+       movzbl  %bh,%edi
+       xorl    4(%rbp,%rsi,8),%edx
+       shrl    $16,%ebx
+       xorl    4(%rbp,%rdi,8),%ecx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       xorl    0(%rbp,%rsi,8),%edx
+       xorl    2052(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       movzbl  %bh,%edi
+       xorl    2048(%rbp,%rsi,8),%edx
+       xorl    2048(%rbp,%rdi,8),%ecx
+       movl    -32(%r14),%ebx
+       movl    -28(%r14),%eax
+       xorl    %edx,%ecx
+       rorl    $8,%edx
+       xorl    %ecx,%r10d
+       xorl    %ecx,%r11d
+       xorl    %edx,%r11d
+       xorl    %r10d,%eax
+       xorl    %r11d,%ebx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       movl    2052(%rbp,%rsi,8),%edx
+       movl    0(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       shrl    $16,%eax
+       movzbl  %bh,%edi
+       xorl    4(%rbp,%rsi,8),%edx
+       shrl    $16,%ebx
+       xorl    4(%rbp,%rdi,8),%ecx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       xorl    0(%rbp,%rsi,8),%edx
+       xorl    2052(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       movzbl  %bh,%edi
+       xorl    2048(%rbp,%rsi,8),%edx
+       xorl    2048(%rbp,%rdi,8),%ecx
+       movl    -40(%r14),%ebx
+       movl    -36(%r14),%eax
+       xorl    %edx,%ecx
+       rorl    $8,%edx
+       xorl    %ecx,%r8d
+       xorl    %ecx,%r9d
+       xorl    %edx,%r9d
+       xorl    %r8d,%eax
+       xorl    %r9d,%ebx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       movl    2052(%rbp,%rsi,8),%edx
+       movl    0(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       shrl    $16,%eax
+       movzbl  %bh,%edi
+       xorl    4(%rbp,%rsi,8),%edx
+       shrl    $16,%ebx
+       xorl    4(%rbp,%rdi,8),%ecx
+       movzbl  %ah,%esi
+       movzbl  %bl,%edi
+       xorl    0(%rbp,%rsi,8),%edx
+       xorl    2052(%rbp,%rdi,8),%ecx
+       movzbl  %al,%esi
+       movzbl  %bh,%edi
+       xorl    2048(%rbp,%rsi,8),%edx
+       xorl    2048(%rbp,%rdi,8),%ecx
+       movl    -48(%r14),%ebx
+       movl    -44(%r14),%eax
+       xorl    %edx,%ecx
+       rorl    $8,%edx
+       xorl    %ecx,%r10d
        xorl    %ecx,%r11d
        xorl    %edx,%r11d
        xorl    %r10d,%eax
%%
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to