Allow Breakpad processor library to build on Solaris with the native Sun

toolchain (#142).  Patch by Alfred Peng.  r=me.


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@213 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
mmentovai 2007-09-26 18:08:41 +00:00
parent 7e2b64f5fd
commit 0e6f5c95d7
8 changed files with 44 additions and 4 deletions

View file

@ -33,14 +33,28 @@
#ifndef GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
#define GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
// TODO: Platforms that have no hash_map can use map, at the likely cost of
// performance.
#ifdef __SUNPRO_CC
#define BSLR_NO_HASH_MAP
#endif // __SUNPRO_CC
#ifdef BSLR_NO_HASH_MAP
#include <map>
#else // BSLR_NO_HASH_MAP
#include <ext/hash_map>
#endif // BSLR_NO_HASH_MAP
#include "google_breakpad/processor/source_line_resolver_interface.h"
namespace google_breakpad {
using std::string;
#ifdef BSLR_NO_HASH_MAP
using std::map;
#else // BSLR_NO_HASH_MAP
using __gnu_cxx::hash_map;
#endif // BSLR_NO_HASH_MAP
class BasicSourceLineResolver : public SourceLineResolverInterface {
public:
@ -65,13 +79,23 @@ class BasicSourceLineResolver : public SourceLineResolverInterface {
struct Function;
struct PublicSymbol;
struct File;
#ifdef BSLR_NO_HASH_MAP
struct CompareString {
bool operator()(const string &s1, const string &s2) const;
};
#else // BSLR_NO_HASH_MAP
struct HashString {
size_t operator()(const string &s) const;
};
#endif // BSLR_NO_HASH_MAP
class Module;
// All of the modules we've loaded
#ifdef BSLR_NO_HASH_MAP
typedef map<string, Module*, CompareString> ModuleMap;
#else // BSLR_NO_HASH_MAP
typedef hash_map<string, Module*, HashString> ModuleMap;
#endif // BSLR_NO_HASH_MAP
ModuleMap *modules_;
// Disallow unwanted copy ctor and assignment operator