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
Backslash? Does / work? Can you confirm that you can't build them the same way as they're built on Unix? I.e. by stepping into crypto/bn/asm and running 'perl bn-586.pl cpp' there? I wonder because PLFLAGS feels superfluous...
gcc -E -DBSDI tmp\tmp.c | as -o obj\bn-586.o
Any particular reason why you use BSDI? I can see that there're #if defined(__DJGPP__) in generated assembler, but those in turn are guarded by #if defined(OUT). Have you tried -DOUT?
Can you confirm if following works:
perl ... cpp | gcc -x assembler-with-cpp -DBSDI -o ... -c -
I'm asking these questions because it feels like some target unification might be appropriate... Maybe unified rules for all coff and similar objects... Like unified rules for elf objects:-)
And this: if ($sse2) { &picmeup("eax","OPENSSL_ia32cap"); &bt(&DWP(0,"eax"),26);
(with $sse2=1), translates to this:
leal OPENSSL_ia32cap,%eax btl $26, (%eax)
-------
So either picmeup() doesn't do the right '_' prefixing of a global variable.
But it works in ./crypto/des/asm! Add "&external_label("OPENSSL_ia32cap") if ($sse2);" somewhere in the beginning of bn-586.pl. Does it compile then? A.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]
