A local copy of OpenSSL from GitHub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.7 KiB

  1. Notes on Valgrind
  2. =================
  3. Valgrind is a test harness that includes many tools such as memcheck,
  4. which is commonly used to check for memory leaks, etc. The default tool
  5. run by Valgrind is memcheck. There are other tools available, but this
  6. will focus on memcheck.
  7. Valgrind runs programs in a virtual machine, this means OpenSSL unit
  8. tests run under Valgrind will take longer than normal.
  9. Requirements
  10. ------------
  11. 1. Platform supported by Valgrind
  12. See <http://valgrind.org/info/platforms.html>
  13. 2. Valgrind installed on the platform
  14. See <http://valgrind.org/downloads/current.html>
  15. 3. OpensSSL compiled
  16. See [INSTALL.md](INSTALL.md)
  17. Running Tests
  18. -------------
  19. Test behavior can be modified by adjusting environment variables.
  20. `EXE_SHELL`
  21. This variable is used to specify the shell used to execute OpenSSL test
  22. programs. The default wrapper (`util/wrap.pl`) initializes the environment
  23. to allow programs to find shared libraries. The variable can be modified
  24. to specify a different executable environment.
  25. EXE_SHELL=\
  26. "`/bin/pwd`/util/wrap.pl valgrind --error-exitcode=1 --leak-check=full -q"
  27. This will start up Valgrind with the default checker (`memcheck`).
  28. The `--error-exitcode=1` option specifies that Valgrind should exit with an
  29. error code of 1 when memory leaks occur.
  30. The `--leak-check=full` option specifies extensive memory checking.
  31. The `-q` option prints only error messages.
  32. Additional Valgrind options may be added to the `EXE_SHELL` variable.
  33. `OPENSSL_ia32cap`
  34. This variable controls the processor-specific code on Intel processors.
  35. By default, OpenSSL will attempt to figure out the capabilities of a
  36. processor, and use it to its fullest capability. This variable can be
  37. used to control what capabilities OpenSSL uses.
  38. As of valgrind-3.15.0 on Linux/x86_64, instructions up to AVX2 are
  39. supported. Setting the following disables instructions beyond AVX2:
  40. `OPENSSL_ia32cap=":0"`
  41. This variable may need to be set to something different based on the
  42. processor and Valgrind version you are running tests on. More information
  43. may be found in [doc/man3/OPENSSL_ia32cap.pod](doc/man3/OPENSSL_ia32cap.pod).
  44. Additional variables (such as `VERBOSE` and `TESTS`) are described in the
  45. file [test/README.md](test/README.md).
  46. Example command line:
  47. $ make test EXE_SHELL="`/bin/pwd`/util/wrap.pl valgrind --error-exitcode=1 \
  48. --leak-check=full -q" OPENSSL_ia32cap=":0"
  49. If an error occurs, you can then run the specific test via the `TESTS` variable
  50. with the `VERBOSE` or `VF` or `VFP` options to gather additional information.
  51. $ make test VERBOSE=1 TESTS=test_test EXE_SHELL="`/bin/pwd`/util/wrap.pl \
  52. valgrind --error-exitcode=1 --leak-check=full -q" OPENSSL_ia32cap=":0"