"Andy Polyakov" <[EMAIL PROTECTED]> said:

> As far as I can see "stock" OpenSSL doesn't generate assembler moduler 
> for DJGPP, so you've got to tell more details about how do you generate 
> assembler modules. Note that &picmeup is used in des assembler modules. 
> Can you figure out how it works there? A.

I tweaked the djgpp makefiles to generate asm versions. E.g. bn-586.o
is generated by these equivalent steps;
  PLFLAGS = -I./crypto/perlasm -I./crypto/bn/asm -I./crypto/des/asm
  perl $(PLFLAGS) crypto\bn\asm\bn-586.pl cpp > tmp\tmp.c
  gcc -E -DBSDI tmp\tmp.c | as -o obj\bn-586.o

And this:
 if ($sse2) {
         &picmeup("eax","OPENSSL_ia32cap");
         &bt(&DWP(0,"eax"),26);

(with $sse2=1), translates to this:

#if (defined(ELF) || defined(SOL)) && defined(PIC)
        .align  4
        call    1f
1:      popl    %eax
        addl    $_GLOBAL_OFFSET_TABLE_+[.-1b],%eax
        movl    [EMAIL PROTECTED](%eax),%eax
#else
        leal    OPENSSL_ia32cap,%eax
#endif
        btl     $26,            (%eax)

-------

So either picmeup() doesn't do the right '_' prefixing of a global variable.
Or I use the wrong PerlAsm defs. AFAICS 'cpp' includes 'x86unix.pl'; maybe
I'll try win32n / x86nasm.pl.

This has worked well for a long time until this OPENSSL_ia32cap variable
was introduced.

--gv

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to