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