Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: tests/pnacl_dynamic_loading/pll_loader_test.cc

Issue 1825893002: PNaCl Dynamic Linking: Added portable dependencies to shared objects. (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Responded to code review Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Native Client Authors. All rights reserved. 1 // Copyright 2016 The Native Client Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "native_client/src/include/nacl_assert.h" 5 #include "native_client/src/include/nacl_assert.h"
6 #include "native_client/src/untrusted/pll_loader/pll_loader.h" 6 #include "native_client/src/untrusted/pll_loader/pll_loader.h"
7 7
8 8
9 namespace { 9 namespace {
10 10
(...skipping 23 matching lines...) Expand all
34 34
35 ModuleSet modset; 35 ModuleSet modset;
36 std::vector<std::string> search_path; 36 std::vector<std::string> search_path;
37 search_path.push_back(module_directory); 37 search_path.push_back(module_directory);
38 modset.SetSonameSearchPath(search_path); 38 modset.SetSonameSearchPath(search_path);
39 39
40 // "module_a_var" should only be resolvable after we load module A. 40 // "module_a_var" should only be resolvable after we load module A.
41 int *module_a_var = (int *) modset.GetSym("module_a_var"); 41 int *module_a_var = (int *) modset.GetSym("module_a_var");
42 ASSERT_EQ(module_a_var, NULL); 42 ASSERT_EQ(module_a_var, NULL);
43 43
44 modset.AddBySoname(module_a_soname); 44 ASSERT_NE(modset.AddBySoname(module_a_soname), NULL);
45 module_a_var = (int *) modset.GetSym("module_a_var"); 45 module_a_var = (int *) modset.GetSym("module_a_var");
46 ASSERT_NE(module_a_var, NULL); 46 ASSERT_NE(module_a_var, NULL);
47 ASSERT_EQ(*module_a_var, 2345); 47 ASSERT_EQ(*module_a_var, 2345);
48 48
49 modset.AddBySoname(module_b_soname); 49 // Demonstrate that the same soname cannot be loaded multiple times.
50 ASSERT_EQ(modset.AddBySoname(module_a_soname), NULL);
51
52 ASSERT_NE(modset.AddBySoname(module_b_soname), NULL);
50 int *module_b_var = (int *) modset.GetSym("module_b_var"); 53 int *module_b_var = (int *) modset.GetSym("module_b_var");
51 ASSERT_NE(module_b_var, NULL); 54 ASSERT_NE(module_b_var, NULL);
52 ASSERT_EQ(*module_b_var, 1234); 55 ASSERT_EQ(*module_b_var, 1234);
53 56
54 modset.AddBySoname(module_tls_soname); 57 ASSERT_NE(modset.AddBySoname(module_tls_soname), NULL);
55 58
56 modset.ResolveRefs(); 59 modset.ResolveRefs();
57 60
58 // Check that "addr_of_module_a_var" has been correctly relocated to 61 // Check that "addr_of_module_a_var" has been correctly relocated to
59 // point to the other module. 62 // point to the other module.
60 int **addr_of_module_a_var = (int **) modset.GetSym("addr_of_module_a_var"); 63 int **addr_of_module_a_var = (int **) modset.GetSym("addr_of_module_a_var");
61 ASSERT_NE(addr_of_module_a_var, NULL); 64 ASSERT_NE(addr_of_module_a_var, NULL);
62 ASSERT_EQ(*addr_of_module_a_var, module_a_var); 65 ASSERT_EQ(*addr_of_module_a_var, module_a_var);
63 66
64 // Test that TLS variables are instantiated and aligned properly. 67 // Test that TLS variables are instantiated and aligned properly.
65 CheckTlsVar<int>(&modset, "get_tls_var1", sizeof(int), 123); 68 CheckTlsVar<int>(&modset, "get_tls_var1", sizeof(int), 123);
66 CheckTlsVar<int *>(&modset, "get_tls_var2", sizeof(int), module_a_var); 69 CheckTlsVar<int *>(&modset, "get_tls_var2", sizeof(int), module_a_var);
67 CheckTlsVar<int>(&modset, "get_tls_var_aligned", 256, 345); 70 CheckTlsVar<int>(&modset, "get_tls_var_aligned", 256, 345);
68 CheckTlsVar<int>(&modset, "get_tls_bss_var1", sizeof(int), 0); 71 CheckTlsVar<int>(&modset, "get_tls_bss_var1", sizeof(int), 0);
69 CheckTlsVar<int>(&modset, "get_tls_bss_var_aligned", 256, 0); 72 CheckTlsVar<int>(&modset, "get_tls_bss_var_aligned", 256, 0);
70 73
71 return 0; 74 return 0;
72 } 75 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698