On a CentOS 5.4 x86_64 system, OpenSSL 0.9.8l builds correctly under
binutils 2.17.50.  However, on the same system using binutils 2.20.51
the GNU assembler (as) generates errors in both MD5 and SHA1 assembly
code of the form:

md5-x86_64.s:41: Error: 0xd76aa478 out range of signed 32bit
displacement

sha1-x86_64.s:602: Error: 0x8f1bbcdc out range of signed 32bit
displacement

The GNU assembler appears to be interpreting the constants defined in
x86_64-specific assembly code generated by crypto/md5/asm/md5-x86_64.pl
and crypto/sha/asm/sha1-x86_64.pl as signed integers and thus outside
the range of the signed equivalent.  A workaround is to convert all the
constants to their signed equivalents.

A patch is attached.  With the patch applied, OpenSSL 0.9.8l builds and
passes "make test" on the x86_64 system under both binutils 2.17.50 and
binutils 2.20.51.

--Tom Rothrock



Attachment: openssl-x86_64-bintuils-2.20.51.patch
Description: Binary data

Reply via email to