diff options
author | dmaclach <dmaclach@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-07-19 20:43:49 +0000 |
---|---|---|
committer | dmaclach <dmaclach@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-07-19 20:43:49 +0000 |
commit | 4ac61acb3a7dad6ce722fe07564be8ec92713228 (patch) | |
tree | fb71c49eb2aa7ca1f1867854ad9871c84504bc46 /src/client/mac/Framework | |
parent | Breakpad Linux/Mac symbol dumper: Share duplicate strings that arise in DWARF... (diff) | |
download | breakpad-4ac61acb3a7dad6ce722fe07564be8ec92713228.tar.xz |
Clean up build for 64 bit.
Fix up some broken mac projects.
Consolidate project settings in xcconfig files.
http://breakpad.appspot.com/130001
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@627 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/mac/Framework')
-rw-r--r-- | src/client/mac/Framework/Breakpad.mm | 33 | ||||
-rw-r--r-- | src/client/mac/Framework/OnDemandServer.mm | 2 |
2 files changed, 14 insertions, 21 deletions
diff --git a/src/client/mac/Framework/Breakpad.mm b/src/client/mac/Framework/Breakpad.mm index 23e5d9bf..1d6b9287 100644 --- a/src/client/mac/Framework/Breakpad.mm +++ b/src/client/mac/Framework/Breakpad.mm @@ -265,7 +265,7 @@ bool Breakpad::ExceptionHandlerDirectCallback(void *context, //============================================================================= #pragma mark - -#include <mach-o/dyld.h> +#include <dlfcn.h> //============================================================================= // Returns the pathname to the Resources directory for this version of @@ -286,23 +286,16 @@ NSString * GetResourcePath() { // // Get the pathname to the code which contains this function - void *address = nil; - NSModule module = nil; - _dyld_lookup_and_bind_fully("_GetResourcePath", - &address, - &module); - - if (module && address) { - const char* moduleName = NSNameOfModule(module); - if (moduleName) { - // The "Resources" directory should be in the same directory as the - // executable code, since that's how the Breakpad framework is built. - resourcePath = [NSString stringWithUTF8String:moduleName]; - resourcePath = [resourcePath stringByDeletingLastPathComponent]; - resourcePath = [resourcePath stringByAppendingPathComponent:@"Resources/"]; - } else { - DEBUGLOG(stderr, "Missing moduleName\n"); - } + Dl_info info; + if (dladdr((const void*)GetResourcePath, &info) != 0) { + NSFileManager *filemgr = [NSFileManager defaultManager]; + NSString *filePath + = [filemgr stringWithFileSystemRepresentation:info.dli_fname + length:strlen(info.dli_fname)]; + NSString *bundlePath = [filePath stringByDeletingLastPathComponent]; + // The "Resources" directory should be in the same directory as the + // executable code, since that's how the Breakpad framework is built. + resourcePath = [bundlePath stringByAppendingPathComponent:@"Resources/"]; } else { DEBUGLOG(stderr, "Could not find GetResourcePath\n"); // fallback plan @@ -573,7 +566,7 @@ bool Breakpad::ExtractParameters(NSDictionary *parameters) { struct timeval tv; gettimeofday(&tv, NULL); char timeStartedString[32]; - sprintf(timeStartedString, "%d", tv.tv_sec); + sprintf(timeStartedString, "%zd", tv.tv_sec); dictionary.SetKeyValue(BREAKPAD_PROCESS_START_TIME, timeStartedString); @@ -591,7 +584,7 @@ bool Breakpad::ExtractParameters(NSDictionary *parameters) { // For each key-value pair, call BreakpadAddUploadParameter() NSEnumerator *keyEnumerator = [serverParameters keyEnumerator]; NSString *aParameter; - while (aParameter = [keyEnumerator nextObject]) { + while ((aParameter = [keyEnumerator nextObject])) { BreakpadAddUploadParameter(this, aParameter, [serverParameters objectForKey:aParameter]); } diff --git a/src/client/mac/Framework/OnDemandServer.mm b/src/client/mac/Framework/OnDemandServer.mm index 11b126c2..38685460 100644 --- a/src/client/mac/Framework/OnDemandServer.mm +++ b/src/client/mac/Framework/OnDemandServer.mm @@ -116,7 +116,7 @@ void OnDemandServer::LaunchOnDemand() { // and holding on to this port delays launching until the current process // exits! mach_port_deallocate(mach_task_self(), server_port_); - server_port_ = NULL; + server_port_ = MACH_PORT_DEAD; // Now, the service is still registered and all we need to do is send // a mach message to the service port in order to launch the server. |