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
openssl-x86_64-bintuils-2.20.51.patch
Description: Binary data
