Fix for bug (?) in assembly language routines for SHA1. This
authorDr. Stephen Henson <steve@openssl.org>
Fri, 20 Oct 2000 00:36:45 +0000 (00:36 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 20 Oct 2000 00:36:45 +0000 (00:36 +0000)
causes MASM to complain and not produce valid debug info.
Hopefully this wont break anything else...

Also fix typo in e_rd.c

CHANGES
crypto/evp/e_rd.c
crypto/sha/asm/sha1-586.pl

diff --git a/CHANGES b/CHANGES
index 0d09b71..c39eb58 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,12 @@
 
  Changes between 0.9.6 and 0.9.7  [xx XXX 2000]
 
+  *) Fix for SHA1 assembly problem with MASM: it produces
+     warnings about corrupt line number information when assembling
+     with debugging information. This is caused by the overlapping
+     of two sections.
+     [Bernd Matthes <mainbug@celocom.de>, Steve Henson]
+
   *) Fix typo in get_cert_by_subject() in by_dir.c
      [Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>]
 
index e51d9bc..78122ed 100644 (file)
@@ -55,8 +55,8 @@
 
 static EVP_CIPHER rd_cipher[3][3];
 
-static anSizes[]={16,24,32};
-static anNIDs[3][3]=
+static int anSizes[]={16,24,32};
+static int anNIDs[3][3]=
     {
     { NID_rijndael_ecb_k128_b128,NID_rijndael_ecb_k192_b128,NID_rijndael_ecb_k256_b128 },
     { NID_rijndael_ecb_k128_b192,NID_rijndael_ecb_k192_b192,NID_rijndael_ecb_k256_b192 },
index 09df993..fe51fd0 100644 (file)
@@ -317,7 +317,7 @@ sub BODY_60_79
 
 sub sha1_block_host
        {
-       local($name)=@_;
+       local($name, $sclabel)=@_;
 
        &function_begin_B($name,"");
 
@@ -352,7 +352,7 @@ sub sha1_block_host
                &mov(&swtmp($i+0),$A);
                 &mov(&swtmp($i+1),$B);
                }
-       &jmp(&label("shortcut"));
+       &jmp($sclabel);
        &function_end_B($name);
        }
 
@@ -529,10 +529,12 @@ sub sha1_block_data
        &pop("esi");
         &ret();
 
-       # it has to reside within sha1_block_asm_host_order body
-       # because it calls &jmp(&label("shortcut"));
-       &sha1_block_host("sha1_block_asm_host_order");
+       # keep a note of shortcut label so it can be used outside
+       # block.
+       my $sclabel = &label("shortcut");
 
        &function_end_B($name);
+       # Putting this here avoids problems with MASM in debugging mode
+       &sha1_block_host("sha1_block_asm_host_order", $sclabel);
        }