Hi Peter,
> Comment out the align directive. All that's doing is making sure the code
> is aligned with the machine cache boundaries for performance.
> Unfortunately the COFF object format used on Netware doesn't support that
> or at least that's what the assembler says.
> It should still run fine without that, just maybe a bit slower.
thanks very much! That solved the COFF issue;
and I was now able to create a patch which solves this so far;
also I found while being on the asm stuff that the Metrowerks Assembler build
is also already broken for 0.9.8; this patch below tries to fix both the
Metrowerks and NASM issue... - well, almost:
--- x86nasm.pl.orig Wed Jul 25 14:01:40 2007
+++ x86nasm.pl Mon Nov 26 18:59:45 2007
@@ -92,6 +92,8 @@
{ my $tmp=<<___;
%ifdef __omf__
section code use32 class=code align=64
+%elifdef __coff__
+section .text code
%else
section .text code align=64
%endif
@@ -102,9 +104,11 @@
sub ::function_begin_B
{ my $func=$under.shift;
+ my $global=(($::mwerks)?".":"")."global";
+ my $align=(($::mwerks)?".":"")."align";
my $tmp=<<___;
-global $func
-align 16
+$global $func
+$align 16
$func:
___
push(@out,$tmp);
@@ -213,7 +217,7 @@
sub ::public_label
{ $label{$_[0]}="${under}${_[0]}" if (!defined($label{$_[0]}));
- push(@out,"global\t$label{$_[0]}\n");
+ push(@out,(($::mwerks)?".":"")."global\t$label{$_[0]}\n");
}
sub ::label
@@ -235,7 +239,7 @@
{ push(@out,(($::mwerks)?".long\t":"dd\t").join(',',@_)."\n"); }
sub ::align
-{ push(@out,".") if ($::mwerks); push(@out,"align\t$_[0]\n"); }
+{ push(@out,(($::mwerks)?".":"")."align\t$_[0]\n"); }
sub ::picmeup
{ my($dst,$sym)[EMAIL PROTECTED];
with that I'm now able to produce NASM ELF obj for gcc and COFF obj for
CodeWarrior compiler;
but when using the CodeWarrior assembler then there's still one file broken:
mwasmnlm -maxerrors 20 -o crypto/rc4/asm/r4-nw.o crypto/rc4/asm/r4-nw.asm
### mwasmnlm Assembler:
# File: crypto\rc4\asm\r4-nw.asm
# ---------------------------------
# 112: lea esi,BYTE PTR [1+esi]
# Error: ^^^^^^^^^^^^^^^^
# Invalid operand size
### mwasmnlm Driver Error:
# The tool did not produce any output while compiling the file
# 'crypto\rc4\asm\r4-nw.asm'
Errors caused tool to abort.
when I replace the BYTE with DWORD it works, but the crazy thing is that in the
same file there's few lines up exactly the same line with DWORD:
@L002loop1:
add bl,cl
mov edx,DWORD PTR [ebx*4+edi]
mov DWORD PTR [ebx*4+edi],ecx
mov DWORD PTR [eax*4+edi],edx
add edx,ecx
inc al
and edx,255
mov edx,DWORD PTR [edx*4+edi]
xor dl,BYTE PTR [esi]
lea esi,DWORD PTR [1+esi] ; here's correct usage of DWORD
mov ecx,DWORD PTR [eax*4+edi]
cmp esi,DWORD PTR [24+esp]
mov BYTE PTR [esi*1+ebp-1],dl
jb @L002loop1
jmp @L004done
.align 16
@L001RC4_CHAR:
movzx ecx,BYTE PTR [eax*1+edi]
@L005cloop1:
add bl,cl
movzx edx,BYTE PTR [ebx*1+edi]
mov BYTE PTR [ebx*1+edi],cl
mov BYTE PTR [eax*1+edi],dl
add dl,cl
movzx edx,BYTE PTR [edx*1+edi]
add al,1
xor dl,BYTE PTR [esi]
lea esi,BYTE PTR [1+esi] ; here's the line 112 which
uses BYTE with lea
movzx ecx,BYTE PTR [eax*1+edi]
cmp esi,DWORD PTR [24+esp]
mov BYTE PTR [esi*1+ebp-1],dl
jb @L005cloop1
I think that this is also a problem within x86nasm.pl,
however not yet found where to fix -- somebody who has a hint for me?
please let me know if the above patch is acceptable so far.
thanks, Guenter.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]