(linenum→info "unix/slp.c:2238")

openssl/0.9.8g/PROBLEMS

    1: * System libcrypto.dylib and libssl.dylib are used by system ld on MacOS X.
    2: 
    3: 
    4:     NOTE: The problem described here only applies when OpenSSL isn't built
    5:     with shared library support (i.e. without the "shared" configuration
    6:     option).  If you build with shared library support, you will have no
    7:     problems as long as you set up DYLD_LIBRARY_PATH properly at all times.
    8: 
    9: 
   10: This is really a misfeature in ld, which seems to look for .dylib libraries
   11: along the whole library path before it bothers looking for .a libraries.  This
   12: means that -L switches won't matter unless OpenSSL is built with shared
   13: library support.
   14: 
   15: The workaround may be to change the following lines in apps/Makefile and
   16: test/Makefile:
   17: 
   18:   LIBCRYPTO=-L.. -lcrypto
   19:   LIBSSL=-L.. -lssl
   20: 
   21: to:
   22: 
   23:   LIBCRYPTO=../libcrypto.a
   24:   LIBSSL=../libssl.a
   25: 
   26: It's possible that something similar is needed for shared library support
   27: as well.  That hasn't been well tested yet.
   28: 
   29: 
   30: Another solution that many seem to recommend is to move the libraries
   31: /usr/lib/libcrypto.0.9.dylib, /usr/lib/libssl.0.9.dylib to a different
   32: directory, build and install OpenSSL and anything that depends on your
   33: build, then move libcrypto.0.9.dylib and libssl.0.9.dylib back to their
   34: original places.  Note that the version numbers on those two libraries
   35: may differ on your machine.
   36: 
   37: 
   38: As long as Apple doesn't fix the problem with ld, this problem building
   39: OpenSSL will remain as is.
   40: 
   41: 
   42: * Parallell make leads to errors
   43: 
   44: While running tests, running a parallell make is a bad idea.  Many test
   45: scripts use the same name for output and input files, which means different
   46: will interfere with each other and lead to test failure.
   47: 
   48: The solution is simple for now: don't run parallell make when testing.
   49: 
   50: 
   51: * Bugs in gcc triggered
   52: 
   53: - According to a problem report, there are bugs in gcc 3.0 that are
   54:   triggered by some of the code in OpenSSL, more specifically in
   55:   PEM_get_EVP_CIPHER_INFO().  The triggering code is the following:
   56: 
   57:         header+=11;
   58:         if (*header != '4') return(0); header++;
   59:         if (*header != ',') return(0); header++;
   60: 
   61:   What happens is that gcc might optimize a little too agressively, and
   62:   you end up with an extra incrementation when *header != '4'.
   63: 
   64:   We recommend that you upgrade gcc to as high a 3.x version as you can.
   65: 
   66: - According to multiple problem reports, some of our message digest
   67:   implementations trigger bug[s] in code optimizer in gcc 3.3 for sparc64
   68:   and gcc 2.96 for ppc. Former fails to complete RIPEMD160 test, while
   69:   latter - SHA one.
   70: 
   71:   The recomendation is to upgrade your compiler. This naturally applies to
   72:   other similar cases.
   73: 
   74: - There is a subtle Solaris x86-specific gcc run-time environment bug, which
   75:   "falls between" OpenSSL [0.9.8 and later], Solaris ld and GCC. The bug
   76:   manifests itself as Segmentation Fault upon early application start-up.
   77:   The problem can be worked around by patching the environment according to
   78:   http://www.openssl.org/~appro/values.c.
   79: 
   80: * solaris64-sparcv9-cc SHA-1 performance with WorkShop 6 compiler.
   81: 
   82: As subject suggests SHA-1 might perform poorly (4 times slower)
   83: if compiled with WorkShop 6 compiler and -xarch=v9. The cause for
   84: this seems to be the fact that compiler emits multiplication to
   85: perform shift operations:-( To work the problem around configure
   86: with './Configure solaris64-sparcv9-cc -DMD32_REG_T=int'.
   87: 
   88: * Problems with hp-parisc2-cc target when used with "no-asm" flag
   89: 
   90: When using the hp-parisc2-cc target, wrong bignum code is generated.
   91: This is due to the SIXTY_FOUR_BIT build being compiled with the +O3
   92: aggressive optimization.
   93: The problem manifests itself by the BN_kronecker test hanging in an
   94: endless loop. Reason: the BN_kronecker test calls BN_generate_prime()
   95: which itself hangs. The reason could be tracked down to the bn_mul_comba8()
   96: function in bn_asm.c. At some occasions the higher 32bit value of r[7]
   97: is off by 1 (meaning: calculated=shouldbe+1). Further analysis failed,
   98: as no debugger support possible at +O3 and additional fprintf()'s
   99: introduced fixed the bug, therefore it is most likely a bug in the
  100: optimizer.
  101: The bug was found in the BN_kronecker test but may also lead to
  102: failures in other parts of the code.
  103: (See Ticket #426.)
  104: 
  105: Workaround: modify the target to +O2 when building with no-asm.
  106: 
  107: * Problems building shared libraries on SCO OpenServer Release 5.0.6
  108:   with gcc 2.95.3
  109: 
  110: The symptoms appear when running the test suite, more specifically
  111: test/ectest, with the following result:
  112: 
  113: OSSL_LIBPATH="`cd ..; pwd`"; LD_LIBRARY_PATH="$OSSL_LIBPATH:$LD_LIBRARY_PATH"; DYLD_LIBRARY_PATH="$OSSL_LIBPATH:$DYLD_LIBRARY_PATH"; SHLIB_PATH="$OSSL_LIBPATH:$SHLIB_PATH"; LIBPATH="$OSSL_LIBPATH:$LIBPATH"; if [ "debug-sco5-gcc" = "Cygwin" ]; then PATH="${LIBPATH}:$PATH"; fi; export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; ./ectest
  114: ectest.c:186: ABORT
  115: 
  116: The cause of the problem seems to be that isxdigit(), called from
  117: BN_hex2bn(), returns 0 on a perfectly legitimate hex digit.  Further
  118: investigation shows that any of the isxxx() macros return 0 on any
  119: input.  A direct look in the information array that the isxxx() use,
  120: called __ctype, shows that it contains all zeroes...
  121: 
  122: Taking a look at the newly created libcrypto.so with nm, one can see
  123: that the variable __ctype is defined in libcrypto's .bss (which
  124: explains why it is filled with zeroes):
  125: 
  126: $ nm -Pg libcrypto.so | grep __ctype
  127: __ctype B 0011659c
  128: __ctype2 U         
  129: 
  130: Curiously, __ctype2 is undefined, in spite of being declared in
  131: /usr/include/ctype.h in exactly the same way as __ctype.
  132: 
  133: Any information helping to solve this issue would be deeply
  134: appreciated.
  135: 
  136: NOTE: building non-shared doesn't come with this problem.
  137: 
  138: * ULTRIX build fails with shell errors, such as "bad substitution"
  139:   and "test: argument expected"
  140: 
  141: The problem is caused by ULTRIX /bin/sh supporting only original
  142: Bourne shell syntax/semantics, and the trouble is that the vast
  143: majority is so accustomed to more modern syntax, that very few
  144: people [if any] would recognize the ancient syntax even as valid.
  145: This inevitably results in non-trivial scripts breaking on ULTRIX,
  146: and OpenSSL isn't an exclusion. Fortunately there is workaround,
  147: hire /bin/ksh to do the job /bin/sh fails to do.
  148: 
  149: 1. Trick make(1) to use /bin/ksh by setting up following environ-
  150:    ment variables *prior* you execute ./Configure and make:
  151: 
  152:         PROG_ENV=POSIX
  153:         MAKESHELL=/bin/ksh
  154:         export PROG_ENV MAKESHELL
  155: 
  156:    or if your shell is csh-compatible:
  157: 
  158:         setenv PROG_ENV POSIX
  159:         setenv MAKESHELL /bin/ksh
  160: 
  161: 2. Trick /bin/sh to use alternative expression evaluator. Create
  162:    following 'test' script for example in /tmp:
  163: 
  164:         #!/bin/ksh
  165:         ${0##*/} "$@"
  166: 
  167:    Then 'chmod a+x /tmp/test; ln /tmp/test /tmp/[' and *prepend*
  168:    your $PATH with chosen location, e.g. PATH=/tmp:$PATH. Alter-
  169:    natively just replace system /bin/test and /bin/[ with the
  170:    above script.
  171: 
  172: * hpux64-ia64-cc fails blowfish test.
  173: 
  174: Compiler bug, presumably at particular patch level. It should be noted
  175: that same compiler generates correct 32-bit code, a.k.a. hpux-ia64-cc
  176: target. Drop optimization level to +O2 when compiling 64-bit bf_skey.o.
  177: 
  178: * no-engines generates errors.
  179: 
  180: Unfortunately, the 'no-engines' configuration option currently doesn't
  181: work properly.  Use 'no-hw' and you'll will at least get no hardware
  182: support.  We'll see how we fix that on OpenSSL versions past 0.9.8.
  183: 
  184: * 'make test' fails in BN_sqr [commonly with "error 139" denoting SIGSEGV]
  185:   if elder GNU binutils were deployed to link shared libcrypto.so.
  186: 
  187: As subject suggests the failure is caused by a bug in elder binutils,
  188: either as or ld, and was observed on FreeBSD and Linux. There are two
  189: options. First is naturally to upgrade binutils, the second one - to
  190: reconfigure with additional no-sse2 [or 386] option passed to ./config.
  191: 
  192: * If configured with ./config no-dso, toolkit still gets linked with -ldl,
  193:   which most notably poses a problem when linking with dietlibc.
  194: 
  195: We don't have framework to associate -ldl with no-dso, therefore the only
  196: way is to edit Makefile right after ./config no-dso and remove -ldl from
  197: EX_LIBS line.
Syntax (Markdown)