| 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 |