]>
Commit | Line | Data |
---|---|---|
b987d748 | 1 | #! /usr/bin/env perl |
4af14b7b | 2 | # Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. |
b987d748 | 3 | # |
909f1a2e | 4 | # Licensed under the Apache License 2.0 (the "License"). You may not use |
b987d748 MC |
5 | # this file except in compliance with the License. You can obtain a copy |
6 | # in the file LICENSE in the source distribution or at | |
7 | # https://www.openssl.org/source/license.html | |
8 | ||
9afc2b92 | 9 | use OpenSSL::Test qw/:DEFAULT srctop_dir bldtop_dir/; |
b987d748 | 10 | use OpenSSL::Test::Utils; |
88d57bf8 | 11 | use File::Temp qw(tempfile); |
b987d748 MC |
12 | |
13 | #Load configdata.pm | |
14 | ||
15 | BEGIN { | |
16 | setup("test_shlibload"); | |
17 | } | |
9afc2b92 | 18 | use lib srctop_dir('Configurations'); |
b987d748 | 19 | use lib bldtop_dir('.'); |
9afc2b92 | 20 | use platform; |
b987d748 MC |
21 | |
22 | plan skip_all => "Test only supported in a shared build" if disabled("shared"); | |
bd3d8c12 | 23 | plan skip_all => "Test is disabled on AIX" if config('target') =~ m|^aix|; |
522b11e9 | 24 | plan skip_all => "Test only supported in a dso build" if disabled("dso"); |
b987d748 | 25 | |
88d57bf8 | 26 | plan tests => 10; |
b987d748 | 27 | |
9afc2b92 RL |
28 | my $libcrypto = platform->sharedlib('libcrypto'); |
29 | my $libssl = platform->sharedlib('libssl'); | |
62dd3351 | 30 | |
88d57bf8 MC |
31 | (my $fh, my $filename) = tempfile(); |
32 | ok(run(test(["shlibloadtest", "-crypto_first", $libcrypto, $libssl, $filename])), | |
33 | "running shlibloadtest -crypto_first $filename"); | |
34 | ok(check_atexit($fh)); | |
35 | unlink $filename; | |
36 | ($fh, $filename) = tempfile(); | |
37 | ok(run(test(["shlibloadtest", "-ssl_first", $libcrypto, $libssl, $filename])), | |
38 | "running shlibloadtest -ssl_first $filename"); | |
39 | ok(check_atexit($fh)); | |
40 | unlink $filename; | |
41 | ($fh, $filename) = tempfile(); | |
42 | ok(run(test(["shlibloadtest", "-just_crypto", $libcrypto, $libssl, $filename])), | |
43 | "running shlibloadtest -just_crypto $filename"); | |
44 | ok(check_atexit($fh)); | |
45 | unlink $filename; | |
46 | ($fh, $filename) = tempfile(); | |
47 | ok(run(test(["shlibloadtest", "-dso_ref", $libcrypto, $libssl, $filename])), | |
48 | "running shlibloadtest -dso_ref $filename"); | |
49 | ok(check_atexit($fh)); | |
50 | unlink $filename; | |
51 | ($fh, $filename) = tempfile(); | |
52 | ok(run(test(["shlibloadtest", "-no_atexit", $libcrypto, $libssl, $filename])), | |
53 | "running shlibloadtest -no_atexit $filename"); | |
54 | ok(!check_atexit($fh)); | |
55 | unlink $filename; | |
b987d748 | 56 | |
88d57bf8 MC |
57 | sub check_atexit { |
58 | my $fh = shift; | |
59 | my $data = <$fh>; | |
60 | ||
61 | return 1 if (defined $data && $data =~ m/atexit\(\) run/); | |
62 | ||
63 | return 0; | |
64 | } |