OLD | NEW |
1 // Copyright 2015 Google Inc. All Rights Reserved. | 1 // Copyright 2015 Google Inc. All Rights Reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "syzygy/refinery/core/address.h" | 26 #include "syzygy/refinery/core/address.h" |
27 | 27 |
28 namespace refinery { | 28 namespace refinery { |
29 | 29 |
30 // Fwd. | 30 // Fwd. |
31 class ProcessState; | 31 class ProcessState; |
32 | 32 |
33 // The DiaSymbolProvider provides symbol information via the DIA interfaces. | 33 // The DiaSymbolProvider provides symbol information via the DIA interfaces. |
34 // @note It is *not* safe to interleave access to a session in the context of | 34 // @note It is *not* safe to interleave access to a session in the context of |
35 // different process states, as the session's load address may be different. | 35 // different process states, as the session's load address may be different. |
| 36 // TODO(manzagop): replace the functions that take in a process state by |
| 37 // functions that take in a signature. Symbol providers should not need to know |
| 38 // about the process state. |
36 class DiaSymbolProvider : public base::RefCounted<DiaSymbolProvider> { | 39 class DiaSymbolProvider : public base::RefCounted<DiaSymbolProvider> { |
37 public: | 40 public: |
38 DiaSymbolProvider(); | 41 DiaSymbolProvider(); |
39 ~DiaSymbolProvider(); | 42 ~DiaSymbolProvider(); |
40 | 43 |
41 // Retrieves or creates an IDiaSession for the module within @p process_state | 44 // Retrieves or creates an IDiaSession for the module within @p process_state |
42 // corresponding to @p va. | 45 // corresponding to @p va. |
43 // @note on success, the session's load address is set. | 46 // @note on success, the session's load address is set. |
44 // @param va virtual address for which to get a session. | 47 // @param va virtual address for which to get a session. |
45 // @param process_state the process state within which to interpret @p va. | 48 // @param process_state the process state within which to interpret @p va. |
(...skipping 23 matching lines...) Expand all Loading... |
69 pdb_sources_; | 72 pdb_sources_; |
70 base::hash_map<base::string16, base::win::ScopedComPtr<IDiaSession>> | 73 base::hash_map<base::string16, base::win::ScopedComPtr<IDiaSession>> |
71 pdb_sessions_; | 74 pdb_sessions_; |
72 | 75 |
73 DISALLOW_COPY_AND_ASSIGN(DiaSymbolProvider); | 76 DISALLOW_COPY_AND_ASSIGN(DiaSymbolProvider); |
74 }; | 77 }; |
75 | 78 |
76 } // namespace refinery | 79 } // namespace refinery |
77 | 80 |
78 #endif // SYZYGY_REFINERY_SYMBOLS_DIA_SYMBOL_PROVIDER_H_ | 81 #endif // SYZYGY_REFINERY_SYMBOLS_DIA_SYMBOL_PROVIDER_H_ |
OLD | NEW |