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
This commit is contained in:
parent
786275e719
commit
4ac61acb3a
53 changed files with 1791 additions and 1084 deletions
File diff suppressed because it is too large
Load diff
|
@ -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]);
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
#import "common/mac/SimpleStringDictionary.h"
|
||||
#import "common/mac/MachIPC.h"
|
||||
|
||||
#import "GTMDefines.h"
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#if VERBOSE
|
||||
|
@ -91,14 +93,14 @@ static BOOL EnsureDirectoryPathExists(NSString *dirPath) {
|
|||
// Break up the difference into components
|
||||
NSString *diff = [dirPath substringFromIndex:[common length] + 1];
|
||||
NSArray *components = [diff pathComponents];
|
||||
unsigned count = [components count];
|
||||
NSUInteger count = [components count];
|
||||
|
||||
// Rebuild the path one component at a time
|
||||
NSDictionary *attrs =
|
||||
[NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedLong:0750]
|
||||
forKey:NSFilePosixPermissions];
|
||||
path = common;
|
||||
for (unsigned i = 0; i < count; ++i) {
|
||||
for (NSUInteger i = 0; i < count; ++i) {
|
||||
path = [path stringByAppendingPathComponent:[components objectAtIndex:i]];
|
||||
|
||||
if (![mgr createDirectoryAtPath:path attributes:attrs])
|
||||
|
@ -329,7 +331,6 @@ kern_return_t Inspector::ReadMessages() {
|
|||
// we are expected to read.
|
||||
// Read each key/value pair, one mach message per key/value pair.
|
||||
for (unsigned int i = 0; i < info.parameter_count; ++i) {
|
||||
MachReceiveMessage message;
|
||||
result = receive_port.WaitForMessage(&message, 1000);
|
||||
|
||||
if(result == KERN_SUCCESS) {
|
||||
|
@ -376,11 +377,11 @@ void Inspector::SetCrashTimeParameters() {
|
|||
if (processStartTimeString) {
|
||||
time_t processStartTime = strtol(processStartTimeString, NULL, 10);
|
||||
time_t processUptime = tv.tv_sec - processStartTime;
|
||||
sprintf(processUptimeString, "%d", processUptime);
|
||||
sprintf(processUptimeString, "%zd", processUptime);
|
||||
config_params_.SetKeyValue(BREAKPAD_PROCESS_UP_TIME, processUptimeString);
|
||||
}
|
||||
|
||||
sprintf(processCrashtimeString, "%d", tv.tv_sec);
|
||||
sprintf(processCrashtimeString, "%zd", tv.tv_sec);
|
||||
config_params_.SetKeyValue(BREAKPAD_PROCESS_CRASH_TIME,
|
||||
processCrashtimeString);
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ __breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
|
|||
breakpad_nlist space[BUFSIZ/sizeof (breakpad_nlist)];
|
||||
|
||||
const register char *s1, *s2;
|
||||
register int n, m;
|
||||
register register_t n, m;
|
||||
int maxlen, nreq;
|
||||
off_t sa; /* symbol address */
|
||||
off_t ss; /* start of strings */
|
||||
|
@ -160,14 +160,14 @@ __breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
|
|||
(N_BADMAG(buf) && *((long *)&buf) != MH_MAGIC &&
|
||||
NXSwapBigLongToHost(*((long *)&buf)) != FAT_MAGIC) &&
|
||||
/* nealsid: The following is the big-endian ppc64 check */
|
||||
(*((uint32_t*)&buf)) != FAT_MAGIC) {
|
||||
(*((long*)&buf)) != FAT_MAGIC) {
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Deal with fat file if necessary */
|
||||
if (NXSwapBigLongToHost(*((long *)&buf)) == FAT_MAGIC ||
|
||||
/* nealsid: The following is the big-endian ppc64 check */
|
||||
*((int*)&buf) == FAT_MAGIC) {
|
||||
*((unsigned int *)&buf) == FAT_MAGIC) {
|
||||
struct host_basic_info hbi;
|
||||
struct fat_header fh;
|
||||
struct fat_arch *fat_archs, *fap;
|
||||
|
@ -191,7 +191,7 @@ __breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
|
|||
}
|
||||
|
||||
/* Convert fat_narchs to host byte order */
|
||||
fh.nfat_arch = NXSwapBigLongToHost(fh.nfat_arch);
|
||||
fh.nfat_arch = NXSwapBigIntToHost(fh.nfat_arch);
|
||||
|
||||
/* Read in the fat archs */
|
||||
fat_archs = (struct fat_arch *)malloc(fh.nfat_arch *
|
||||
|
@ -201,7 +201,7 @@ __breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
|
|||
}
|
||||
if (read(fd, (char *)fat_archs,
|
||||
sizeof(struct fat_arch) * fh.nfat_arch) !=
|
||||
sizeof(struct fat_arch) * fh.nfat_arch) {
|
||||
(ssize_t)sizeof(struct fat_arch) * fh.nfat_arch) {
|
||||
free(fat_archs);
|
||||
return (-1);
|
||||
}
|
||||
|
@ -212,15 +212,15 @@ __breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
|
|||
*/
|
||||
for (i = 0; i < fh.nfat_arch; i++) {
|
||||
fat_archs[i].cputype =
|
||||
NXSwapBigLongToHost(fat_archs[i].cputype);
|
||||
NXSwapBigIntToHost(fat_archs[i].cputype);
|
||||
fat_archs[i].cpusubtype =
|
||||
NXSwapBigLongToHost(fat_archs[i].cpusubtype);
|
||||
NXSwapBigIntToHost(fat_archs[i].cpusubtype);
|
||||
fat_archs[i].offset =
|
||||
NXSwapBigLongToHost(fat_archs[i].offset);
|
||||
NXSwapBigIntToHost(fat_archs[i].offset);
|
||||
fat_archs[i].size =
|
||||
NXSwapBigLongToHost(fat_archs[i].size);
|
||||
NXSwapBigIntToHost(fat_archs[i].size);
|
||||
fat_archs[i].align =
|
||||
NXSwapBigLongToHost(fat_archs[i].align);
|
||||
NXSwapBigIntToHost(fat_archs[i].align);
|
||||
}
|
||||
|
||||
fap = NULL;
|
||||
|
@ -257,7 +257,7 @@ __breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
|
|||
}
|
||||
}
|
||||
|
||||
if (*((int *)&buf) == MH_MAGIC_64) {
|
||||
if (*((unsigned int *)&buf) == MH_MAGIC_64) {
|
||||
struct mach_header_64 mh;
|
||||
struct load_command *load_commands, *lcp;
|
||||
struct symtab_command *stp;
|
||||
|
|
|
@ -129,7 +129,7 @@ static void* ReadTaskString(task_port_t target_task,
|
|||
size_to_end > kMaxStringLength ? kMaxStringLength : size_to_end;
|
||||
|
||||
kern_return_t kr;
|
||||
return ReadTaskMemory(target_task, address, size_to_read, &kr);
|
||||
return ReadTaskMemory(target_task, address, (size_t)size_to_read, &kr);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -276,13 +276,11 @@ void DynamicImage::Print() {
|
|||
//==============================================================================
|
||||
// Loads information about dynamically loaded code in the given task.
|
||||
DynamicImages::DynamicImages(mach_port_t task)
|
||||
: task_(task) {
|
||||
: task_(task), image_list_() {
|
||||
ReadImageInfoForTask();
|
||||
}
|
||||
|
||||
void* DynamicImages::GetDyldAllImageInfosPointer()
|
||||
{
|
||||
|
||||
void* DynamicImages::GetDyldAllImageInfosPointer() {
|
||||
const char *imageSymbolName = "_dyld_all_image_infos";
|
||||
const char *dyldPath = "/usr/lib/dyld";
|
||||
#ifndef __LP64__
|
||||
|
@ -364,7 +362,7 @@ void DynamicImages::ReadImageInfoForTask() {
|
|||
// Now determine the total amount we really want to read based on the
|
||||
// size of the load commands. We need the header plus all of the
|
||||
// load commands.
|
||||
unsigned int header_size =
|
||||
size_t header_size =
|
||||
sizeof(breakpad_mach_header) + header->sizeofcmds;
|
||||
|
||||
free(header);
|
||||
|
|
|
@ -103,7 +103,7 @@ class MachHeader {
|
|||
class DynamicImage {
|
||||
public:
|
||||
DynamicImage(breakpad_mach_header *header, // we take ownership
|
||||
int header_size, // includes load commands
|
||||
size_t header_size, // includes load commands
|
||||
breakpad_mach_header *load_address,
|
||||
char *inFilePath,
|
||||
uintptr_t image_mod_date,
|
||||
|
@ -112,7 +112,12 @@ class DynamicImage {
|
|||
header_size_(header_size),
|
||||
load_address_(load_address),
|
||||
file_mod_date_(image_mod_date),
|
||||
task_(task) {
|
||||
task_(task),
|
||||
vmaddr_(0),
|
||||
vmsize_(0),
|
||||
slide_(0),
|
||||
version_(0),
|
||||
file_path_(NULL) {
|
||||
InitializeFilePath(inFilePath);
|
||||
CalculateMemoryAndVersionInfo();
|
||||
}
|
||||
|
@ -128,7 +133,7 @@ class DynamicImage {
|
|||
breakpad_mach_header *GetMachHeader() {return header_;}
|
||||
|
||||
// Size of mach_header plus load commands
|
||||
int GetHeaderSize() const {return header_size_;}
|
||||
size_t GetHeaderSize() const {return header_size_;}
|
||||
|
||||
// Full path to mach-o binary
|
||||
char *GetFilePath() {return file_path_;}
|
||||
|
@ -160,6 +165,9 @@ class DynamicImage {
|
|||
void Print();
|
||||
|
||||
private:
|
||||
DynamicImage(const DynamicImage &);
|
||||
DynamicImage &operator=(const DynamicImage &);
|
||||
|
||||
friend class DynamicImages;
|
||||
|
||||
// Sanity checking
|
||||
|
@ -180,7 +188,7 @@ class DynamicImage {
|
|||
void CalculateMemoryAndVersionInfo();
|
||||
|
||||
breakpad_mach_header *header_; // our local copy of the header
|
||||
int header_size_; // mach_header plus load commands
|
||||
size_t header_size_; // mach_header plus load commands
|
||||
breakpad_mach_header *load_address_; // base address image is mapped into
|
||||
mach_vm_address_t vmaddr_;
|
||||
mach_vm_size_t vmsize_;
|
||||
|
@ -231,13 +239,13 @@ class DynamicImages {
|
|||
explicit DynamicImages(mach_port_t task);
|
||||
|
||||
~DynamicImages() {
|
||||
for (int i = 0; i < (int)image_list_.size(); ++i) {
|
||||
for (int i = 0; i < GetImageCount(); ++i) {
|
||||
delete image_list_[i];
|
||||
}
|
||||
}
|
||||
|
||||
// Returns the number of dynamically loaded mach-o images.
|
||||
int GetImageCount() const {return image_list_.size();}
|
||||
int GetImageCount() const {return static_cast<int>(image_list_.size());}
|
||||
|
||||
// Returns an individual image.
|
||||
DynamicImage *GetImage(int i) {
|
||||
|
@ -256,14 +264,14 @@ class DynamicImages {
|
|||
|
||||
// Debugging
|
||||
void Print() {
|
||||
for (int i = 0; i < (int)image_list_.size(); ++i) {
|
||||
for (int i = 0; i < GetImageCount(); ++i) {
|
||||
image_list_[i]->Print();
|
||||
}
|
||||
}
|
||||
|
||||
void TestPrint() {
|
||||
const breakpad_mach_header *header;
|
||||
for (int i = 0; i < (int)image_list_.size(); ++i) {
|
||||
for (int i = 0; i < GetImageCount(); ++i) {
|
||||
printf("dyld: %p: name = %s\n", _dyld_get_image_header(i),
|
||||
_dyld_get_image_name(i) );
|
||||
|
||||
|
|
|
@ -61,8 +61,8 @@ static void SoonToCrash() {
|
|||
Crasher();
|
||||
}
|
||||
|
||||
bool MDCallback(const char *dump_dir, const char *file_name,
|
||||
void *context, bool success) {
|
||||
static bool MDCallback(const char *dump_dir, const char *file_name,
|
||||
void *context, bool success) {
|
||||
string path(dump_dir);
|
||||
string dest(dump_dir);
|
||||
path.append(file_name);
|
||||
|
|
|
@ -57,7 +57,8 @@ namespace google_breakpad {
|
|||
|
||||
// constructor when generating from within the crashed process
|
||||
MinidumpGenerator::MinidumpGenerator()
|
||||
: exception_type_(0),
|
||||
: writer_(),
|
||||
exception_type_(0),
|
||||
exception_code_(0),
|
||||
exception_subcode_(0),
|
||||
exception_thread_(0),
|
||||
|
@ -71,12 +72,14 @@ MinidumpGenerator::MinidumpGenerator()
|
|||
// crashed process
|
||||
MinidumpGenerator::MinidumpGenerator(mach_port_t crashing_task,
|
||||
mach_port_t handler_thread)
|
||||
: exception_type_(0),
|
||||
: writer_(),
|
||||
exception_type_(0),
|
||||
exception_code_(0),
|
||||
exception_subcode_(0),
|
||||
exception_thread_(0),
|
||||
crashing_task_(crashing_task),
|
||||
handler_thread_(handler_thread) {
|
||||
handler_thread_(handler_thread),
|
||||
dynamic_images_(NULL) {
|
||||
if (crashing_task != mach_task_self()) {
|
||||
dynamic_images_ = new DynamicImages(crashing_task_);
|
||||
} else {
|
||||
|
@ -488,7 +491,7 @@ bool MinidumpGenerator::WriteContext(breakpad_thread_state_data_t state,
|
|||
// not used in the flags register. Since the minidump format
|
||||
// specifies 32 bits for the flags register, we can truncate safely
|
||||
// with no loss.
|
||||
context_ptr->eflags = machine_state->__rflags;
|
||||
context_ptr->eflags = static_cast<u_int32_t>(machine_state->__rflags);
|
||||
AddReg(cs);
|
||||
AddReg(fs);
|
||||
AddReg(gs);
|
||||
|
@ -727,7 +730,7 @@ bool MinidumpGenerator::WriteModuleStream(unsigned int index,
|
|||
return false;
|
||||
|
||||
module->base_of_image = image->GetVMAddr() + image->GetVMAddrSlide();
|
||||
module->size_of_image = image->GetVMSize();
|
||||
module->size_of_image = static_cast<u_int32_t>(image->GetVMSize());
|
||||
module->module_name_rva = string_location.rva;
|
||||
|
||||
// We'll skip the executable module, because they don't have
|
||||
|
@ -794,7 +797,7 @@ bool MinidumpGenerator::WriteModuleStream(unsigned int index,
|
|||
return false;
|
||||
|
||||
module->base_of_image = seg->vmaddr + slide;
|
||||
module->size_of_image = seg->vmsize;
|
||||
module->size_of_image = static_cast<u_int32_t>(seg->vmsize);
|
||||
module->module_name_rva = string_location.rva;
|
||||
|
||||
if (!WriteCVRecord(module, cpu_type, name))
|
||||
|
@ -943,8 +946,10 @@ bool MinidumpGenerator::WriteMiscInfoStream(MDRawDirectory *misc_info_stream) {
|
|||
struct rusage usage;
|
||||
if (getrusage(RUSAGE_SELF, &usage) != -1) {
|
||||
// Omit the fractional time since the MDRawMiscInfo only wants seconds
|
||||
info_ptr->process_user_time = usage.ru_utime.tv_sec;
|
||||
info_ptr->process_kernel_time = usage.ru_stime.tv_sec;
|
||||
info_ptr->process_user_time =
|
||||
static_cast<u_int32_t>(usage.ru_utime.tv_sec);
|
||||
info_ptr->process_kernel_time =
|
||||
static_cast<u_int32_t>(usage.ru_stime.tv_sec);
|
||||
}
|
||||
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, info_ptr->process_id };
|
||||
size_t size;
|
||||
|
@ -956,20 +961,22 @@ bool MinidumpGenerator::WriteMiscInfoStream(MDRawDirectory *misc_info_stream) {
|
|||
true) == KERN_SUCCESS) {
|
||||
struct kinfo_proc *proc = (struct kinfo_proc *)addr;
|
||||
if (!sysctl(mib, sizeof(mib) / sizeof(mib[0]), proc, &size, NULL, 0))
|
||||
info_ptr->process_create_time = proc->kp_proc.p_starttime.tv_sec;
|
||||
info_ptr->process_create_time =
|
||||
static_cast<u_int32_t>(proc->kp_proc.p_starttime.tv_sec);
|
||||
mach_vm_deallocate(mach_task_self(), addr, size);
|
||||
}
|
||||
}
|
||||
|
||||
// Speed
|
||||
uint64_t speed;
|
||||
const uint64_t kOneMillion = 1000 * 1000;
|
||||
size = sizeof(speed);
|
||||
sysctlbyname("hw.cpufrequency_max", &speed, &size, NULL, 0);
|
||||
info_ptr->processor_max_mhz = speed / (1000 * 1000);
|
||||
info_ptr->processor_mhz_limit = speed / (1000 * 1000);
|
||||
info_ptr->processor_max_mhz = static_cast<u_int32_t>(speed / kOneMillion);
|
||||
info_ptr->processor_mhz_limit = static_cast<u_int32_t>(speed / kOneMillion);
|
||||
size = sizeof(speed);
|
||||
sysctlbyname("hw.cpufrequency", &speed, &size, NULL, 0);
|
||||
info_ptr->processor_current_mhz = speed / (1000 * 1000);
|
||||
info_ptr->processor_current_mhz = static_cast<u_int32_t>(speed / kOneMillion);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ ProtectedMemoryAllocator::~ProtectedMemoryAllocator() {
|
|||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
char *ProtectedMemoryAllocator::Allocate(size_t bytes) {
|
||||
char *ProtectedMemoryAllocator::Allocate(vm_size_t bytes) {
|
||||
if (valid_ && next_alloc_offset_ + bytes <= pool_size_) {
|
||||
char *p = (char*)base_address_ + next_alloc_offset_;
|
||||
next_alloc_offset_ += bytes;
|
||||
|
|
|
@ -53,7 +53,7 @@ class ProtectedMemoryAllocator {
|
|||
// Fails by returning NULL is no more space is available.
|
||||
// Please note that the pointers returned from this method should not
|
||||
// be freed in any way (for example by calling free() on them ).
|
||||
char * Allocate(size_t n);
|
||||
char * Allocate(vm_size_t n);
|
||||
|
||||
// Returns the base address of the allocation pool.
|
||||
char * GetBaseAddress() { return (char*)base_address_; }
|
||||
|
@ -78,7 +78,7 @@ class ProtectedMemoryAllocator {
|
|||
private:
|
||||
vm_size_t pool_size_;
|
||||
vm_address_t base_address_;
|
||||
int next_alloc_offset_;
|
||||
vm_size_t next_alloc_offset_;
|
||||
bool valid_;
|
||||
};
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <Foundation/Foundation.h>
|
||||
|
||||
#include "client/mac/Framework/Breakpad.h"
|
||||
#import "GTMDefines.h"
|
||||
|
||||
#define kClientIdPreferenceKey @"clientid"
|
||||
|
||||
|
@ -53,10 +54,10 @@ extern NSString *const kDefaultServerType;
|
|||
// work in the middle of a validation.
|
||||
@interface LengthLimitingTextField : NSTextField {
|
||||
@private
|
||||
unsigned int maximumLength_;
|
||||
NSUInteger maximumLength_;
|
||||
}
|
||||
|
||||
- (void) setMaximumLength:(unsigned int)maxLength;
|
||||
- (void)setMaximumLength:(NSUInteger)maxLength;
|
||||
@end
|
||||
|
||||
@interface Reporter : NSObject {
|
||||
|
|
|
@ -56,20 +56,20 @@ NSString *const kDefaultServerType = @"google";
|
|||
|
||||
@interface NSView (ResizabilityExtentions)
|
||||
// Shifts the view vertically by the given amount.
|
||||
- (void)breakpad_shiftVertically:(float)offset;
|
||||
- (void)breakpad_shiftVertically:(CGFloat)offset;
|
||||
|
||||
// Shifts the view horizontally by the given amount.
|
||||
- (void)breakpad_shiftHorizontally:(float)offset;
|
||||
- (void)breakpad_shiftHorizontally:(CGFloat)offset;
|
||||
@end
|
||||
|
||||
@implementation NSView (ResizabilityExtentions)
|
||||
- (void)breakpad_shiftVertically:(float)offset {
|
||||
- (void)breakpad_shiftVertically:(CGFloat)offset {
|
||||
NSPoint origin = [self frame].origin;
|
||||
origin.y += offset;
|
||||
[self setFrameOrigin:origin];
|
||||
}
|
||||
|
||||
- (void)breakpad_shiftHorizontally:(float)offset {
|
||||
- (void)breakpad_shiftHorizontally:(CGFloat)offset {
|
||||
NSPoint origin = [self frame].origin;
|
||||
origin.x += offset;
|
||||
[self setFrameOrigin:origin];
|
||||
|
@ -79,11 +79,11 @@ NSString *const kDefaultServerType = @"google";
|
|||
@interface NSWindow (ResizabilityExtentions)
|
||||
// Adjusts the window height by heightDelta relative to its current height,
|
||||
// keeping all the content at the same size.
|
||||
- (void)breakpad_adjustHeight:(float)heightDelta;
|
||||
- (void)breakpad_adjustHeight:(CGFloat)heightDelta;
|
||||
@end
|
||||
|
||||
@implementation NSWindow (ResizabilityExtentions)
|
||||
- (void)breakpad_adjustHeight:(float)heightDelta {
|
||||
- (void)breakpad_adjustHeight:(CGFloat)heightDelta {
|
||||
[[self contentView] setAutoresizesSubviews:NO];
|
||||
|
||||
NSRect windowFrame = [self frame];
|
||||
|
@ -101,16 +101,16 @@ NSString *const kDefaultServerType = @"google";
|
|||
// Grows or shrinks the height of the field to the minimum required to show the
|
||||
// current text, preserving the existing width and origin.
|
||||
// Returns the change in height.
|
||||
- (float)breakpad_adjustHeightToFit;
|
||||
- (CGFloat)breakpad_adjustHeightToFit;
|
||||
|
||||
// Grows or shrinks the width of the field to the minimum required to show the
|
||||
// current text, preserving the existing height and origin.
|
||||
// Returns the change in width.
|
||||
- (float)breakpad_adjustWidthToFit;
|
||||
- (CGFloat)breakpad_adjustWidthToFit;
|
||||
@end
|
||||
|
||||
@implementation NSTextField (ResizabilityExtentions)
|
||||
- (float)breakpad_adjustHeightToFit {
|
||||
- (CGFloat)breakpad_adjustHeightToFit {
|
||||
NSRect oldFrame = [self frame];
|
||||
// Starting with the 10.5 SDK, height won't grow, so make it huge to start.
|
||||
NSRect presizeFrame = oldFrame;
|
||||
|
@ -125,7 +125,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
return newSize.height - NSHeight(oldFrame);
|
||||
}
|
||||
|
||||
- (float)breakpad_adjustWidthToFit {
|
||||
- (CGFloat)breakpad_adjustWidthToFit {
|
||||
NSRect oldFrame = [self frame];
|
||||
[self sizeToFit];
|
||||
return NSWidth([self frame]) - NSWidth(oldFrame);
|
||||
|
@ -136,11 +136,11 @@ NSString *const kDefaultServerType = @"google";
|
|||
// Resizes to fit the label using IB-style size-to-fit metrics and enforcing a
|
||||
// minimum width of 70, while preserving the right edge location.
|
||||
// Returns the change in width.
|
||||
- (float)breakpad_smartSizeToFit;
|
||||
- (CGFloat)breakpad_smartSizeToFit;
|
||||
@end
|
||||
|
||||
@implementation NSButton (ResizabilityExtentions)
|
||||
- (float)breakpad_smartSizeToFit {
|
||||
- (CGFloat)breakpad_smartSizeToFit {
|
||||
NSRect oldFrame = [self frame];
|
||||
[self sizeToFit];
|
||||
NSRect newFrame = [self frame];
|
||||
|
@ -218,7 +218,8 @@ NSString *const kDefaultServerType = @"google";
|
|||
// Run an alert window with the given timeout. Returns
|
||||
// NSRunStoppedResponse if the timeout is exceeded. A timeout of 0
|
||||
// queues the message immediately in the modal run loop.
|
||||
- (int)runModalWindow:(NSWindow*)window withTimeout:(NSTimeInterval)timeout;
|
||||
- (NSInteger)runModalWindow:(NSWindow*)window
|
||||
withTimeout:(NSTimeInterval)timeout;
|
||||
|
||||
// Returns a unique client id (user-specific), creating a persistent
|
||||
// one in the user defaults, if necessary.
|
||||
|
@ -386,7 +387,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
}
|
||||
|
||||
// Otherwise, if we have no client id, generate one!
|
||||
srandom([[NSDate date] timeIntervalSince1970]);
|
||||
srandom((int)[[NSDate date] timeIntervalSince1970]);
|
||||
long clientId1 = random();
|
||||
long clientId2 = random();
|
||||
long clientId3 = random();
|
||||
|
@ -403,8 +404,8 @@ NSString *const kDefaultServerType = @"google";
|
|||
unsigned int logFileCounter = 0;
|
||||
|
||||
NSString *logPath;
|
||||
int logFileTailSize = [[parameters_ objectForKey:@BREAKPAD_LOGFILE_UPLOAD_SIZE]
|
||||
intValue];
|
||||
size_t logFileTailSize =
|
||||
[[parameters_ objectForKey:@BREAKPAD_LOGFILE_UPLOAD_SIZE] intValue];
|
||||
|
||||
NSMutableArray *logFilenames; // An array of NSString, one per log file
|
||||
logFilenames = [[NSMutableArray alloc] init];
|
||||
|
@ -544,7 +545,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
// Get the timeout value for the notification.
|
||||
NSTimeInterval timeout = [self messageTimeout];
|
||||
|
||||
int buttonPressed = NSAlertAlternateReturn;
|
||||
NSInteger buttonPressed = NSAlertAlternateReturn;
|
||||
// Determine whether we should create a text box for user feedback.
|
||||
if ([self shouldRequestComments]) {
|
||||
BOOL didLoadNib = [NSBundle loadNibNamed:@"Breakpad" owner:self];
|
||||
|
@ -592,7 +593,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
[commentMessage_ setStringValue:[NSString stringWithFormat:@"%@\n\n%@",
|
||||
[self explanatoryDialogText],
|
||||
NSLocalizedString(@"commentsMsg", @"")]];
|
||||
float commentHeightDelta = [commentMessage_ breakpad_adjustHeightToFit];
|
||||
CGFloat commentHeightDelta = [commentMessage_ breakpad_adjustHeightToFit];
|
||||
[headerBox_ breakpad_shiftVertically:commentHeightDelta];
|
||||
[alertWindow_ breakpad_adjustHeight:commentHeightDelta];
|
||||
|
||||
|
@ -600,7 +601,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
// section depending on whether or not we are asking for email.
|
||||
if (includeEmail) {
|
||||
[emailMessage_ setStringValue:NSLocalizedString(@"emailMsg", @"")];
|
||||
float emailHeightDelta = [emailMessage_ breakpad_adjustHeightToFit];
|
||||
CGFloat emailHeightDelta = [emailMessage_ breakpad_adjustHeightToFit];
|
||||
[preEmailBox_ breakpad_shiftVertically:emailHeightDelta];
|
||||
[alertWindow_ breakpad_adjustHeight:emailHeightDelta];
|
||||
} else {
|
||||
|
@ -609,7 +610,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
|
||||
// Localize the email label, and shift the associated text field.
|
||||
[emailLabel_ setStringValue:NSLocalizedString(@"emailLabel", @"")];
|
||||
float emailLabelWidthDelta = [emailLabel_ breakpad_adjustWidthToFit];
|
||||
CGFloat emailLabelWidthDelta = [emailLabel_ breakpad_adjustWidthToFit];
|
||||
[emailEntryField_ breakpad_shiftHorizontally:emailLabelWidthDelta];
|
||||
|
||||
// Localize the placeholder text.
|
||||
|
@ -620,12 +621,12 @@ NSString *const kDefaultServerType = @"google";
|
|||
|
||||
// Localize the privacy policy label, and keep it right-aligned to the arrow.
|
||||
[privacyLinkLabel_ setStringValue:NSLocalizedString(@"privacyLabel", @"")];
|
||||
float privacyLabelWidthDelta = [privacyLinkLabel_ breakpad_adjustWidthToFit];
|
||||
CGFloat privacyLabelWidthDelta = [privacyLinkLabel_ breakpad_adjustWidthToFit];
|
||||
[privacyLinkLabel_ breakpad_shiftHorizontally:(-privacyLabelWidthDelta)];
|
||||
|
||||
// Localize the buttons, and keep the cancel button at the right distance.
|
||||
[sendButton_ setTitle:NSLocalizedString(@"sendReportButton", @"")];
|
||||
float sendButtonWidthDelta = [sendButton_ breakpad_smartSizeToFit];
|
||||
CGFloat sendButtonWidthDelta = [sendButton_ breakpad_smartSizeToFit];
|
||||
[cancelButton_ breakpad_shiftHorizontally:(-sendButtonWidthDelta)];
|
||||
[cancelButton_ setTitle:NSLocalizedString(@"cancelButton", @"")];
|
||||
[cancelButton_ breakpad_smartSizeToFit];
|
||||
|
@ -633,12 +634,13 @@ NSString *const kDefaultServerType = @"google";
|
|||
|
||||
- (void)removeEmailPrompt {
|
||||
[emailSectionBox_ setHidden:YES];
|
||||
float emailSectionHeight = NSHeight([emailSectionBox_ frame]);
|
||||
CGFloat emailSectionHeight = NSHeight([emailSectionBox_ frame]);
|
||||
[preEmailBox_ breakpad_shiftVertically:(-emailSectionHeight)];
|
||||
[alertWindow_ breakpad_adjustHeight:(-emailSectionHeight)];
|
||||
}
|
||||
|
||||
- (int)runModalWindow:(NSWindow*)window withTimeout:(NSTimeInterval)timeout {
|
||||
- (NSInteger)runModalWindow:(NSWindow*)window
|
||||
withTimeout:(NSTimeInterval)timeout {
|
||||
// Queue a |stopModal| message to be performed in |timeout| seconds.
|
||||
if (timeout > 0.001) {
|
||||
remainingDialogTime_ = timeout;
|
||||
|
@ -653,7 +655,7 @@ NSString *const kDefaultServerType = @"google";
|
|||
// Run the window modally and wait for either a |stopModal| message or a
|
||||
// button click.
|
||||
[NSApp activateIgnoringOtherApps:YES];
|
||||
int returnMethod = [NSApp runModalForWindow:window];
|
||||
NSInteger returnMethod = [NSApp runModalForWindow:window];
|
||||
|
||||
return returnMethod;
|
||||
}
|
||||
|
@ -717,7 +719,7 @@ doCommandBySelector:(SEL)commandSelector {
|
|||
|
||||
if (remainingDialogTime_ > 59) {
|
||||
// calculate minutes remaining for UI purposes
|
||||
displayedTimeLeft = (remainingDialogTime_ / 60);
|
||||
displayedTimeLeft = (int)(remainingDialogTime_ / 60);
|
||||
|
||||
if (displayedTimeLeft == 1) {
|
||||
formatString = NSLocalizedString(@"countdownMsgMinuteSingular", @"");
|
||||
|
@ -725,8 +727,8 @@ doCommandBySelector:(SEL)commandSelector {
|
|||
formatString = NSLocalizedString(@"countdownMsgMinutesPlural", @"");
|
||||
}
|
||||
} else {
|
||||
displayedTimeLeft = remainingDialogTime_;
|
||||
if (remainingDialogTime_ == 1) {
|
||||
displayedTimeLeft = (int)remainingDialogTime_;
|
||||
if (displayedTimeLeft == 1) {
|
||||
formatString = NSLocalizedString(@"countdownMsgSecondSingular", @"");
|
||||
} else {
|
||||
formatString = NSLocalizedString(@"countdownMsgSecondsPlural", @"");
|
||||
|
@ -797,7 +799,8 @@ doCommandBySelector:(SEL)commandSelector {
|
|||
NSTimeInterval now = CFAbsoluteTimeGetCurrent();
|
||||
NSTimeInterval spanSeconds = (now - lastTime);
|
||||
|
||||
[programDict setObject:[NSNumber numberWithFloat:now] forKey:kLastSubmission];
|
||||
[programDict setObject:[NSNumber numberWithDouble:now]
|
||||
forKey:kLastSubmission];
|
||||
[ud setObject:programDict forKey:program];
|
||||
[ud synchronize];
|
||||
|
||||
|
@ -1055,7 +1058,7 @@ doCommandBySelector:(SEL)commandSelector {
|
|||
//=============================================================================
|
||||
@implementation LengthLimitingTextField
|
||||
|
||||
- (void) setMaximumLength:(unsigned int)maxLength {
|
||||
- (void)setMaximumLength:(NSUInteger)maxLength {
|
||||
maximumLength_ = maxLength;
|
||||
}
|
||||
|
||||
|
@ -1072,7 +1075,7 @@ shouldChangeTextInRange:(NSRange)affectedCharRange
|
|||
}
|
||||
// Figure out what the new string length would be, taking into
|
||||
// account user selections.
|
||||
int newStringLength =
|
||||
NSUInteger newStringLength =
|
||||
[[textView string] length] - affectedCharRange.length +
|
||||
[replacementString length];
|
||||
if (newStringLength > maximumLength_) {
|
||||
|
@ -1088,7 +1091,7 @@ shouldChangeTextInRange:(NSRange)affectedCharRange
|
|||
NSText* fieldEditor = [self currentEditor];
|
||||
if (fieldEditor != nil) {
|
||||
// Check for a single "Command" modifier
|
||||
unsigned int modifiers = [event modifierFlags];
|
||||
NSUInteger modifiers = [event modifierFlags];
|
||||
modifiers &= NSDeviceIndependentModifierFlagsMask;
|
||||
if (modifiers == NSCommandKeyMask) {
|
||||
// Now, check for Select All, Cut, Copy, or Paste key equivalents.
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
#import "Controller.h"
|
||||
#import "TestClass.h"
|
||||
#import "GTMDefines.h"
|
||||
#include <unistd.h>
|
||||
#include <mach/mach.h>
|
||||
|
||||
|
@ -51,7 +52,7 @@
|
|||
}
|
||||
|
||||
- (IBAction)forkTestOptions:(id)sender {
|
||||
int tag = [[sender selectedCell] tag];
|
||||
NSInteger tag = [[sender selectedCell] tag];
|
||||
NSLog(@"sender tag: %d", tag);
|
||||
if (tag <= 2) {
|
||||
bpForkOption = tag;
|
||||
|
@ -129,11 +130,11 @@
|
|||
}
|
||||
|
||||
- (IBAction)crash:(id)sender {
|
||||
int tag = [sender tag];
|
||||
NSInteger tag = [sender tag];
|
||||
|
||||
if (tag == 1) {
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget:self];
|
||||
[self performSelector:@selector(causeCrash) withObject:nil afterDelay:10];
|
||||
[self performSelector:@selector(causeCrash) withObject:nil afterDelay:10.0];
|
||||
[sender setState:NSOnState];
|
||||
return;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -78,7 +78,7 @@ void InternalTestClass::InternalFunction(AStruct &s) {
|
|||
float InternalTestClass::kStaticFloatValue = 42;
|
||||
|
||||
static float PlainOldFunction() {
|
||||
return 3.14145;
|
||||
return 3.14145f;
|
||||
}
|
||||
|
||||
@implementation TestClass
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import <GTMSenTestCase.h>
|
||||
#import "GTMSenTestCase.h"
|
||||
#import "SimpleStringDictionary.h"
|
||||
|
||||
@interface SimpleStringDictionaryTest : GTMTestCase {
|
||||
|
|
|
@ -61,27 +61,30 @@ inline bool TypedMDRVA<MDType>::AllocateArray(size_t count) {
|
|||
}
|
||||
|
||||
template<typename MDType>
|
||||
inline bool TypedMDRVA<MDType>::AllocateObjectAndArray(unsigned int count,
|
||||
size_t size) {
|
||||
assert(count && size);
|
||||
inline bool TypedMDRVA<MDType>::AllocateObjectAndArray(size_t count,
|
||||
size_t length) {
|
||||
assert(count && length);
|
||||
allocation_state_ = SINGLE_OBJECT_WITH_ARRAY;
|
||||
return UntypedMDRVA::Allocate(minidump_size<MDType>::size() + count * size);
|
||||
return UntypedMDRVA::Allocate(minidump_size<MDType>::size() + count * length);
|
||||
}
|
||||
|
||||
template<typename MDType>
|
||||
inline bool TypedMDRVA<MDType>::CopyIndex(unsigned int index, MDType *item) {
|
||||
assert(allocation_state_ == ARRAY);
|
||||
return writer_->Copy(position_ + index * minidump_size<MDType>::size(), item,
|
||||
minidump_size<MDType>::size());
|
||||
return writer_->Copy(
|
||||
static_cast<MDRVA>(position_ + index * minidump_size<MDType>::size()),
|
||||
item, minidump_size<MDType>::size());
|
||||
}
|
||||
|
||||
template<typename MDType>
|
||||
inline bool TypedMDRVA<MDType>::CopyIndexAfterObject(unsigned int index,
|
||||
const void *src,
|
||||
size_t size) {
|
||||
size_t length) {
|
||||
assert(allocation_state_ == SINGLE_OBJECT_WITH_ARRAY);
|
||||
return writer_->Copy(position_ + minidump_size<MDType>::size() + index * size,
|
||||
src, size);
|
||||
return writer_->Copy(
|
||||
static_cast<MDRVA>(position_ + minidump_size<MDType>::size()
|
||||
+ index * length),
|
||||
src, length);
|
||||
}
|
||||
|
||||
template<typename MDType>
|
||||
|
|
|
@ -107,7 +107,7 @@ bool MinidumpFileWriter::CopyStringToMDString(const wchar_t *str,
|
|||
// zero, but the second one may be zero, depending on the conversion from
|
||||
// UTF-32.
|
||||
int out_count = out[1] ? 2 : 1;
|
||||
int out_size = sizeof(u_int16_t) * out_count;
|
||||
size_t out_size = sizeof(u_int16_t) * out_count;
|
||||
result = mdstring->CopyIndexAfterObject(out_idx, out, out_size);
|
||||
out_idx += out_count;
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ bool MinidumpFileWriter::CopyStringToMDString(const char *str,
|
|||
|
||||
// Append the one or two UTF-16 characters
|
||||
int out_count = out[1] ? 2 : 1;
|
||||
int out_size = sizeof(u_int16_t) * out_count;
|
||||
size_t out_size = sizeof(u_int16_t) * out_count;
|
||||
result = mdstring->CopyIndexAfterObject(out_idx, out, out_size);
|
||||
out_idx += out_count;
|
||||
}
|
||||
|
@ -161,7 +161,8 @@ bool MinidumpFileWriter::WriteStringCore(const CharType *str,
|
|||
return false;
|
||||
|
||||
// Set length excluding the NULL and copy the string
|
||||
mdstring.get()->length = mdstring_length * sizeof(u_int16_t);
|
||||
mdstring.get()->length =
|
||||
static_cast<u_int32_t>(mdstring_length * sizeof(u_int16_t));
|
||||
bool result = CopyStringToMDString(str, mdstring_length, &mdstring);
|
||||
|
||||
// NULL terminate
|
||||
|
@ -235,15 +236,15 @@ bool MinidumpFileWriter::Copy(MDRVA position, const void *src, ssize_t size) {
|
|||
assert(file_ != -1);
|
||||
|
||||
// Ensure that the data will fit in the allocated space
|
||||
if (size + position > size_)
|
||||
if (static_cast<size_t>(size + position) > size_)
|
||||
return false;
|
||||
|
||||
// Seek and write the data
|
||||
#if __linux__
|
||||
if (sys_lseek(file_, position, SEEK_SET) == static_cast<off_t>(position)) {
|
||||
if (sys_lseek(file_, position, SEEK_SET) == position) {
|
||||
if (sys_write(file_, src, size) == size) {
|
||||
#else
|
||||
if (lseek(file_, position, SEEK_SET) == static_cast<off_t>(position)) {
|
||||
if (lseek(file_, position, SEEK_SET) == position) {
|
||||
if (write(file_, src, size) == size) {
|
||||
#endif
|
||||
return true;
|
||||
|
@ -260,11 +261,11 @@ bool UntypedMDRVA::Allocate(size_t size) {
|
|||
return position_ != MinidumpFileWriter::kInvalidMDRVA;
|
||||
}
|
||||
|
||||
bool UntypedMDRVA::Copy(MDRVA position, const void *src, size_t size) {
|
||||
bool UntypedMDRVA::Copy(MDRVA pos, const void *src, size_t size) {
|
||||
assert(src);
|
||||
assert(size);
|
||||
assert(position + size <= position_ + size_);
|
||||
return writer_->Copy(position, src, size);
|
||||
assert(pos + size <= position_ + size_);
|
||||
return writer_->Copy(pos, src, size);
|
||||
}
|
||||
|
||||
} // namespace google_breakpad
|
||||
|
|
|
@ -151,7 +151,7 @@ class UntypedMDRVA {
|
|||
|
||||
// Return size and position
|
||||
inline MDLocationDescriptor location() const {
|
||||
MDLocationDescriptor location = { size_, position_ };
|
||||
MDLocationDescriptor location = { static_cast<int>(size_), position_ };
|
||||
return location;
|
||||
}
|
||||
|
||||
|
@ -218,7 +218,7 @@ class TypedMDRVA : public UntypedMDRVA {
|
|||
// Allocate an array of |count| elements of |size| after object of MDType
|
||||
// Must not call more than once.
|
||||
// Return true on success, or false on failure
|
||||
bool AllocateObjectAndArray(unsigned int count, size_t size);
|
||||
bool AllocateObjectAndArray(size_t count, size_t size);
|
||||
|
||||
// Copy |item| to |index|
|
||||
// Must have been allocated using AllocateArray().
|
||||
|
|
|
@ -144,22 +144,23 @@ static bool CompareFile(const char *path) {
|
|||
0x0000000a, 0x000a1c09, 0x0000000b, 0x00000000,
|
||||
#endif
|
||||
};
|
||||
unsigned int expected_byte_count = sizeof(expected);
|
||||
size_t expected_byte_count = sizeof(expected);
|
||||
int fd = open(path, O_RDONLY, 0600);
|
||||
void *buffer = malloc(expected_byte_count);
|
||||
ASSERT_NE(fd, -1);
|
||||
ASSERT_TRUE(buffer);
|
||||
ASSERT_EQ(read(fd, buffer, expected_byte_count), expected_byte_count);
|
||||
ASSERT_EQ(read(fd, buffer, expected_byte_count),
|
||||
static_cast<ssize_t>(expected_byte_count));
|
||||
|
||||
char *b1, *b2;
|
||||
b1 = (char*)buffer;
|
||||
b2 = (char*)expected;
|
||||
b1 = reinterpret_cast<char*>(buffer);
|
||||
b2 = reinterpret_cast<char*>(expected);
|
||||
while (*b1 == *b2) {
|
||||
b1++;
|
||||
b2++;
|
||||
}
|
||||
|
||||
printf("%d\n",b1 - (char*)buffer);
|
||||
printf("%p\n", reinterpret_cast<void*>(b1 - (char*)buffer));
|
||||
|
||||
ASSERT_EQ(memcmp(buffer, expected, expected_byte_count), 0);
|
||||
return true;
|
||||
|
|
|
@ -123,11 +123,11 @@ uint64 ByteReader::ReadEncodedPointer(const char *buffer,
|
|||
|
||||
// First, find the offset to START from the closest prior aligned
|
||||
// address.
|
||||
size_t skew = section_base_ & (AddressSize() - 1);
|
||||
uint64_t skew = section_base_ & (AddressSize() - 1);
|
||||
// Now find the offset from that aligned address to buffer.
|
||||
size_t offset = skew + (buffer - buffer_base_);
|
||||
uint64_t offset = skew + (buffer - buffer_base_);
|
||||
// Round up to the next boundary.
|
||||
size_t aligned = (offset + AddressSize() - 1) & -AddressSize();
|
||||
uint64_t aligned = (offset + AddressSize() - 1) & -AddressSize();
|
||||
// Convert back to a pointer.
|
||||
const char *aligned_buffer = buffer_base_ + (aligned - skew);
|
||||
// Finally, store the length and actually fetch the pointer.
|
||||
|
|
|
@ -90,7 +90,7 @@ void CompilationUnit::ReadAbbrevs() {
|
|||
while (1) {
|
||||
CompilationUnit::Abbrev abbrev;
|
||||
size_t len;
|
||||
const uint32 number = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
const uint64 number = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
|
||||
if (number == 0)
|
||||
break;
|
||||
|
@ -98,7 +98,7 @@ void CompilationUnit::ReadAbbrevs() {
|
|||
abbrevptr += len;
|
||||
|
||||
assert(abbrevptr < abbrev_start + abbrev_length);
|
||||
const uint32 tag = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
const uint64 tag = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
abbrevptr += len;
|
||||
abbrev.tag = static_cast<enum DwarfTag>(tag);
|
||||
|
||||
|
@ -109,11 +109,11 @@ void CompilationUnit::ReadAbbrevs() {
|
|||
assert(abbrevptr < abbrev_start + abbrev_length);
|
||||
|
||||
while (1) {
|
||||
const uint32 nametemp = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
const uint64 nametemp = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
abbrevptr += len;
|
||||
|
||||
assert(abbrevptr < abbrev_start + abbrev_length);
|
||||
const uint32 formtemp = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
const uint64 formtemp = reader_->ReadUnsignedLEB128(abbrevptr, &len);
|
||||
abbrevptr += len;
|
||||
if (nametemp == 0 && formtemp == 0)
|
||||
break;
|
||||
|
@ -515,7 +515,7 @@ void CompilationUnit::ProcessDIEs() {
|
|||
continue;
|
||||
}
|
||||
|
||||
const Abbrev& abbrev = abbrevs_->at(abbrev_num);
|
||||
const Abbrev& abbrev = abbrevs_->at(static_cast<size_t>(abbrev_num));
|
||||
const enum DwarfTag tag = abbrev.tag;
|
||||
if (!handler_->StartDIE(absolute_offset, tag, abbrev.attributes)) {
|
||||
dieptr = SkipDIE(dieptr, abbrev);
|
||||
|
@ -618,8 +618,8 @@ void LineInfo::ReadHeader() {
|
|||
|
||||
uint64 filelength = reader_->ReadUnsignedLEB128(lineptr, &len);
|
||||
lineptr += len;
|
||||
handler_->DefineFile(filename, fileindex, dirindex, mod_time,
|
||||
filelength);
|
||||
handler_->DefineFile(filename, fileindex, static_cast<uint32>(dirindex),
|
||||
mod_time, filelength);
|
||||
fileindex++;
|
||||
}
|
||||
}
|
||||
|
@ -649,7 +649,7 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader,
|
|||
opcode -= header.opcode_base;
|
||||
const int64 advance_address = (opcode / header.line_range)
|
||||
* header.min_insn_length;
|
||||
const int64 advance_line = (opcode % header.line_range)
|
||||
const int32 advance_line = (opcode % header.line_range)
|
||||
+ header.line_base;
|
||||
|
||||
// Check if the lsm passes "pc". If so, mark it as passed.
|
||||
|
@ -689,7 +689,7 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader,
|
|||
case DW_LNS_advance_line: {
|
||||
const int64 advance_line = reader->ReadSignedLEB128(start, &templen);
|
||||
oplen += templen;
|
||||
lsm->line_num += advance_line;
|
||||
lsm->line_num += static_cast<int32>(advance_line);
|
||||
|
||||
// With gcc 4.2.1, we can get the line_no here for the first time
|
||||
// since DW_LNS_advance_line is called after DW_LNE_set_address is
|
||||
|
@ -703,13 +703,13 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader,
|
|||
case DW_LNS_set_file: {
|
||||
const uint64 fileno = reader->ReadUnsignedLEB128(start, &templen);
|
||||
oplen += templen;
|
||||
lsm->file_num = fileno;
|
||||
lsm->file_num = static_cast<uint32>(fileno);
|
||||
}
|
||||
break;
|
||||
case DW_LNS_set_column: {
|
||||
const uint64 colno = reader->ReadUnsignedLEB128(start, &templen);
|
||||
oplen += templen;
|
||||
lsm->column_num = colno;
|
||||
lsm->column_num = static_cast<uint32>(colno);
|
||||
}
|
||||
break;
|
||||
case DW_LNS_negate_stmt: {
|
||||
|
@ -748,7 +748,7 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader,
|
|||
}
|
||||
break;
|
||||
case DW_LNS_extended_op: {
|
||||
const size_t extended_op_len = reader->ReadUnsignedLEB128(start,
|
||||
const uint64 extended_op_len = reader->ReadUnsignedLEB128(start,
|
||||
&templen);
|
||||
start += templen;
|
||||
oplen += templen + extended_op_len;
|
||||
|
@ -790,8 +790,8 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader,
|
|||
oplen += templen;
|
||||
|
||||
if (handler) {
|
||||
handler->DefineFile(filename, -1, dirindex, mod_time,
|
||||
filelength);
|
||||
handler->DefineFile(filename, -1, static_cast<uint32>(dirindex),
|
||||
mod_time, filelength);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -803,7 +803,6 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader,
|
|||
// Ignore unknown opcode silently
|
||||
if (header.std_opcode_lengths) {
|
||||
for (int i = 0; i < (*header.std_opcode_lengths)[opcode]; i++) {
|
||||
size_t templen;
|
||||
reader->ReadUnsignedLEB128(start, &templen);
|
||||
start += templen;
|
||||
oplen += templen;
|
||||
|
@ -1940,7 +1939,7 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) {
|
|||
// If we have a 'z' augmentation string, find the augmentation data and
|
||||
// use the augmentation string to parse it.
|
||||
if (cie->has_z_augmentation) {
|
||||
size_t data_size = reader_->ReadUnsignedLEB128(cursor, &len);
|
||||
uint64_t data_size = reader_->ReadUnsignedLEB128(cursor, &len);
|
||||
if (size_t(cie->end - cursor) < len + data_size)
|
||||
return ReportIncomplete(cie);
|
||||
cursor += len;
|
||||
|
@ -2060,7 +2059,7 @@ bool CallFrameInfo::ReadFDEFields(FDE *fde) {
|
|||
// If the CIE has a 'z' augmentation string, then augmentation data
|
||||
// appears here.
|
||||
if (fde->cie->has_z_augmentation) {
|
||||
size_t data_size = reader_->ReadUnsignedLEB128(cursor, &size);
|
||||
uint64_t data_size = reader_->ReadUnsignedLEB128(cursor, &size);
|
||||
if (size_t(fde->end - cursor) < size + data_size)
|
||||
return ReportIncomplete(fde);
|
||||
cursor += size;
|
||||
|
|
|
@ -242,7 +242,7 @@ class CompilationUnit {
|
|||
// The abbreviation tells how to read a DWARF2/3 DIE, and consist of a
|
||||
// tag and a list of attributes, as well as the data form of each attribute.
|
||||
struct Abbrev {
|
||||
uint32 number;
|
||||
uint64 number;
|
||||
enum DwarfTag tag;
|
||||
bool has_children;
|
||||
AttributeList attributes;
|
||||
|
|
|
@ -48,7 +48,7 @@ struct LineStateMachine {
|
|||
|
||||
uint32 file_num;
|
||||
uint64 address;
|
||||
uint64 line_num;
|
||||
uint32 line_num;
|
||||
uint32 column_num;
|
||||
bool is_stmt; // stmt means statement.
|
||||
bool basic_block;
|
||||
|
|
57
src/common/mac/Breakpad.xcconfig
Normal file
57
src/common/mac/Breakpad.xcconfig
Normal file
|
@ -0,0 +1,57 @@
|
|||
// Copyright (c) 2010, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
ARCHS = $(ARCHS_STANDARD_32_64_BIT)
|
||||
SDKROOT = macosx10.5
|
||||
SDKROOT[arch=i386] = macosx10.4
|
||||
SDKROOT[arch=ppc] = macosx10.4
|
||||
|
||||
GCC_VERSION = 4.2
|
||||
GCC_VERSION[sdk=macosx10.4][arch=*] = 4.0
|
||||
|
||||
GCC_C_LANGUAGE_STANDARD = c99
|
||||
|
||||
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES
|
||||
// TODO(nealsid): Get the code so we can turn on the 64_TO_32 warning.
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES
|
||||
GCC_WARN_MISSING_PARENTHESES = YES
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES
|
||||
GCC_WARN_SIGN_COMPARE = YES
|
||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES
|
||||
GCC_WARN_UNUSED_VARIABLE = YES
|
||||
GCC_TREAT_WARNINGS_AS_ERRORS = YES
|
||||
|
||||
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
|
||||
|
||||
ALWAYS_SEARCH_USER_PATHS = NO
|
32
src/common/mac/BreakpadDebug.xcconfig
Normal file
32
src/common/mac/BreakpadDebug.xcconfig
Normal file
|
@ -0,0 +1,32 @@
|
|||
// Copyright (c) 2010, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#include "Breakpad.xcconfig"
|
||||
|
||||
GCC_OPTIMIZATION_LEVEL = 0
|
33
src/common/mac/BreakpadRelease.xcconfig
Normal file
33
src/common/mac/BreakpadRelease.xcconfig
Normal file
|
@ -0,0 +1,33 @@
|
|||
// Copyright (c) 2010, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#include "Breakpad.xcconfig"
|
||||
|
||||
GCC_OPTIMIZATION_LEVEL = s
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES
|
|
@ -28,6 +28,7 @@
|
|||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import "HTTPMultipartUpload.h"
|
||||
#import "GTMDefines.h"
|
||||
|
||||
@interface HTTPMultipartUpload(PrivateMethods)
|
||||
- (NSString *)multipartBoundary;
|
||||
|
@ -148,7 +149,6 @@
|
|||
timeoutInterval:10.0 ];
|
||||
|
||||
NSMutableData *postBody = [NSMutableData data];
|
||||
int i, count;
|
||||
|
||||
[req setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",
|
||||
boundary_] forHTTPHeaderField:@"Content-type"];
|
||||
|
@ -157,8 +157,8 @@
|
|||
NSArray *parameterKeys = [parameters_ allKeys];
|
||||
NSString *key;
|
||||
|
||||
count = [parameterKeys count];
|
||||
for (i = 0; i < count; ++i) {
|
||||
NSInteger count = [parameterKeys count];
|
||||
for (NSInteger i = 0; i < count; ++i) {
|
||||
key = [parameterKeys objectAtIndex:i];
|
||||
[postBody appendData:[self formDataForKey:key
|
||||
value:[parameters_ objectForKey:key]]];
|
||||
|
@ -167,7 +167,7 @@
|
|||
// Add any files to the message
|
||||
NSArray *fileNames = [files_ allKeys];
|
||||
count = [fileNames count];
|
||||
for (i = 0; i < count; ++i) {
|
||||
for (NSInteger i = 0; i < count; ++i) {
|
||||
NSString *name = [fileNames objectAtIndex:i];
|
||||
id fileOrData = [files_ objectForKey:name];
|
||||
NSData *fileData;
|
||||
|
|
|
@ -224,7 +224,7 @@ class MachMessage {
|
|||
void SetDescriptor(int n, const MachMsgPortDescriptor &desc);
|
||||
|
||||
// Returns total message size setting msgh_size in the header to this value
|
||||
int CalculateSize();
|
||||
mach_msg_size_t CalculateSize();
|
||||
|
||||
mach_msg_header_t head;
|
||||
mach_msg_body_t body;
|
||||
|
|
|
@ -53,10 +53,10 @@ MachSendMessage::MachSendMessage(int32_t message_id) : MachMessage() {
|
|||
bool MachMessage::SetData(void *data,
|
||||
int32_t data_length) {
|
||||
// first check to make sure we have enough space
|
||||
int size = CalculateSize();
|
||||
int new_size = size + data_length;
|
||||
size_t size = CalculateSize();
|
||||
size_t new_size = size + data_length;
|
||||
|
||||
if ((unsigned)new_size > sizeof(MachMessage)) {
|
||||
if (new_size > sizeof(MachMessage)) {
|
||||
return false; // not enough space
|
||||
}
|
||||
|
||||
|
@ -72,8 +72,8 @@ bool MachMessage::SetData(void *data,
|
|||
// calculates and returns the total size of the message
|
||||
// Currently, the entire message MUST fit inside of the MachMessage
|
||||
// messsage size <= sizeof(MachMessage)
|
||||
int MachMessage::CalculateSize() {
|
||||
int size = sizeof(mach_msg_header_t) + sizeof(mach_msg_body_t);
|
||||
mach_msg_size_t MachMessage::CalculateSize() {
|
||||
size_t size = sizeof(mach_msg_header_t) + sizeof(mach_msg_body_t);
|
||||
|
||||
// add space for MessageDataPacket
|
||||
int32_t alignedDataLength = (GetDataLength() + 3) & ~0x3;
|
||||
|
@ -82,14 +82,14 @@ int MachMessage::CalculateSize() {
|
|||
// add space for descriptors
|
||||
size += GetDescriptorCount() * sizeof(MachMsgPortDescriptor);
|
||||
|
||||
head.msgh_size = size;
|
||||
head.msgh_size = static_cast<mach_msg_size_t>(size);
|
||||
|
||||
return size;
|
||||
return head.msgh_size;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
MachMessage::MessageDataPacket *MachMessage::GetDataPacket() {
|
||||
int desc_size = sizeof(MachMsgPortDescriptor)*GetDescriptorCount();
|
||||
size_t desc_size = sizeof(MachMsgPortDescriptor)*GetDescriptorCount();
|
||||
MessageDataPacket *packet =
|
||||
reinterpret_cast<MessageDataPacket*>(padding + desc_size);
|
||||
|
||||
|
@ -109,9 +109,9 @@ void MachMessage::SetDescriptor(int n,
|
|||
bool MachMessage::AddDescriptor(const MachMsgPortDescriptor &desc) {
|
||||
// first check to make sure we have enough space
|
||||
int size = CalculateSize();
|
||||
int new_size = size + sizeof(MachMsgPortDescriptor);
|
||||
size_t new_size = size + sizeof(MachMsgPortDescriptor);
|
||||
|
||||
if ((unsigned)new_size > sizeof(MachMessage)) {
|
||||
if (new_size > sizeof(MachMessage)) {
|
||||
return false; // not enough space
|
||||
}
|
||||
|
||||
|
@ -180,8 +180,8 @@ ReceivePort::ReceivePort(const char *receive_port_name) {
|
|||
if (init_result_ != KERN_SUCCESS)
|
||||
return;
|
||||
|
||||
mach_port_t bootstrap_port = 0;
|
||||
init_result_ = task_get_bootstrap_port(current_task, &bootstrap_port);
|
||||
mach_port_t task_bootstrap_port = 0;
|
||||
init_result_ = task_get_bootstrap_port(current_task, &task_bootstrap_port);
|
||||
|
||||
if (init_result_ != KERN_SUCCESS)
|
||||
return;
|
||||
|
@ -256,13 +256,14 @@ kern_return_t ReceivePort::WaitForMessage(MachReceiveMessage *out_message,
|
|||
//==============================================================================
|
||||
// get a port with send rights corresponding to a named registered service
|
||||
MachPortSender::MachPortSender(const char *receive_port_name) {
|
||||
mach_port_t bootstrap_port = 0;
|
||||
init_result_ = task_get_bootstrap_port(mach_task_self(), &bootstrap_port);
|
||||
mach_port_t task_bootstrap_port = 0;
|
||||
init_result_ = task_get_bootstrap_port(mach_task_self(),
|
||||
&task_bootstrap_port);
|
||||
|
||||
if (init_result_ != KERN_SUCCESS)
|
||||
return;
|
||||
|
||||
init_result_ = bootstrap_look_up(bootstrap_port,
|
||||
init_result_ = bootstrap_look_up(task_bootstrap_port,
|
||||
const_cast<char*>(receive_port_name),
|
||||
&send_port_);
|
||||
}
|
||||
|
|
|
@ -83,7 +83,17 @@ class DumpSymbols {
|
|||
// object file, then the dumper will dump the object file whose
|
||||
// architecture matches that of this dumper program.
|
||||
bool SetArchitecture(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype);
|
||||
|
||||
|
||||
// If this dumper's file includes an object file for |arch_name|, then select
|
||||
// that object file for dumping, and return true. Otherwise, return false,
|
||||
// and leave this dumper's selected architecture unchanged.
|
||||
//
|
||||
// By default, if this dumper's file contains only one object file, then
|
||||
// the dumper will dump those symbols; and if it contains more than one
|
||||
// object file, then the dumper will dump the object file whose
|
||||
// architecture matches that of this dumper program.
|
||||
bool SetArchitecture(const std::string &arch_name);
|
||||
|
||||
// Return a pointer to an array of 'struct fat_arch' structures,
|
||||
// describing the object files contained in this dumper's file. Set
|
||||
// *|count| to the number of elements in the array. The returned array is
|
||||
|
|
|
@ -54,6 +54,10 @@
|
|||
#include "common/stabs_reader.h"
|
||||
#include "common/stabs_to_module.h"
|
||||
|
||||
#ifndef CPU_TYPE_ARM
|
||||
#define CPU_TYPE_ARM (static_cast<cpu_type_t>(12))
|
||||
#endif // CPU_TYPE_ARM
|
||||
|
||||
using dwarf2reader::ByteReader;
|
||||
using google_breakpad::DwarfCUToModule;
|
||||
using google_breakpad::DwarfLineToModule;
|
||||
|
@ -176,7 +180,7 @@ bool DumpSymbols::SetArchitecture(cpu_type_t cpu_type,
|
|||
// Find the best match for the architecture the user requested.
|
||||
const struct fat_arch *best_match
|
||||
= NXFindBestFatArch(cpu_type, cpu_subtype, &object_files_[0],
|
||||
object_files_.size());
|
||||
static_cast<uint32_t>(object_files_.size()));
|
||||
if (!best_match) return false;
|
||||
|
||||
// Record the selected object file.
|
||||
|
@ -184,6 +188,15 @@ bool DumpSymbols::SetArchitecture(cpu_type_t cpu_type,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool DumpSymbols::SetArchitecture(const std::string &arch_name) {
|
||||
bool arch_set = false;
|
||||
const NXArchInfo *arch_info = NXGetArchInfoFromName(arch_name.c_str());
|
||||
if (arch_info) {
|
||||
arch_set = SetArchitecture(arch_info->cputype, arch_info->cpusubtype);
|
||||
}
|
||||
return arch_set;
|
||||
}
|
||||
|
||||
string DumpSymbols::Identifier() {
|
||||
FileID file_id([object_filename_ fileSystemRepresentation]);
|
||||
unsigned char identifier_bytes[16];
|
||||
|
|
|
@ -53,7 +53,12 @@ extern "C" { // necessary for Leopard
|
|||
|
||||
namespace MacFileUtilities {
|
||||
|
||||
MachoID::MachoID(const char *path) {
|
||||
MachoID::MachoID(const char *path)
|
||||
: file_(0),
|
||||
crc_(0),
|
||||
md5_context_(),
|
||||
sha1_context_(),
|
||||
update_function_(NULL) {
|
||||
strlcpy(path_, path, sizeof(path_));
|
||||
file_ = open(path, O_RDONLY);
|
||||
}
|
||||
|
@ -119,7 +124,7 @@ void MachoID::UpdateSHA1(unsigned char *bytes, size_t size) {
|
|||
SHA_Update(&sha1_context_, bytes, size);
|
||||
}
|
||||
|
||||
void MachoID::Update(MachoWalker *walker, unsigned long offset, size_t size) {
|
||||
void MachoID::Update(MachoWalker *walker, off_t offset, size_t size) {
|
||||
if (!update_function_ || !size)
|
||||
return;
|
||||
|
||||
|
@ -182,7 +187,7 @@ bool MachoID::IDCommand(int cpu_type, unsigned char identifier[16]) {
|
|||
identifier[2] = 0;
|
||||
identifier[3] = 0;
|
||||
|
||||
for (int j = 0, i = strlen(path_)-1; i >= 0 && path_[i]!='/'; ++j, --i) {
|
||||
for (int j = 0, i = (int)strlen(path_)-1; i>=0 && path_[i]!='/'; ++j, --i) {
|
||||
identifier[j%4] += path_[i];
|
||||
}
|
||||
|
||||
|
@ -313,7 +318,9 @@ bool MachoID::WalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
|
|||
// sections of type S_ZEROFILL are "virtual" and contain no data
|
||||
// in the file itself
|
||||
if ((sec64.flags & SECTION_TYPE) != S_ZEROFILL && sec64.offset != 0)
|
||||
macho_id->Update(walker, header_offset + sec64.offset, sec64.size);
|
||||
macho_id->Update(walker,
|
||||
header_offset + sec64.offset,
|
||||
(size_t)sec64.size);
|
||||
|
||||
offset += sizeof(struct section_64);
|
||||
}
|
||||
|
|
|
@ -86,7 +86,7 @@ class MachoID {
|
|||
void UpdateSHA1(unsigned char *bytes, size_t size);
|
||||
|
||||
// Bottleneck for update routines
|
||||
void Update(MachoWalker *walker, unsigned long offset, size_t size);
|
||||
void Update(MachoWalker *walker, off_t offset, size_t size);
|
||||
|
||||
// The callback from the MachoWalker for CRC, MD5, and SHA1
|
||||
static bool WalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
|
||||
|
|
|
@ -130,7 +130,7 @@ bool FatReader::Read(const uint8_t *buffer, size_t size) {
|
|||
}
|
||||
|
||||
object_files_[0].offset = 0;
|
||||
object_files_[0].size = buffer_.Size();
|
||||
object_files_[0].size = static_cast<uint32_t>(buffer_.Size());
|
||||
// This alignment is correct for 32 and 64-bit x86 and ppc.
|
||||
// See get_align in the lipo source for other architectures:
|
||||
// http://www.opensource.apple.com/source/cctools/cctools-773/misc/lipo.c
|
||||
|
|
|
@ -992,7 +992,7 @@ TEST_F(LoadCommand, None) {
|
|||
EXPECT_FALSE(reader.big_endian());
|
||||
EXPECT_EQ(CPU_TYPE_X86, reader.cpu_type());
|
||||
EXPECT_EQ(CPU_SUBTYPE_I386_ALL, reader.cpu_subtype());
|
||||
EXPECT_EQ(MH_EXECUTE, reader.file_type());
|
||||
EXPECT_EQ(static_cast<uint32_t>(MH_EXECUTE), reader.file_type());
|
||||
EXPECT_EQ(FileFlags(MH_TWOLEVEL |
|
||||
MH_DYLDLINK |
|
||||
MH_NOUNDEFS),
|
||||
|
@ -1018,7 +1018,7 @@ TEST_F(LoadCommand, Unknown) {
|
|||
EXPECT_TRUE(reader.big_endian());
|
||||
EXPECT_EQ(CPU_TYPE_X86, reader.cpu_type());
|
||||
EXPECT_EQ(CPU_SUBTYPE_I386_ALL, reader.cpu_subtype());
|
||||
EXPECT_EQ(MH_EXECUTE, reader.file_type());
|
||||
EXPECT_EQ(static_cast<uint32_t>(MH_EXECUTE), reader.file_type());
|
||||
EXPECT_EQ(FileFlags(MH_TWOLEVEL |
|
||||
MH_DYLDLINK |
|
||||
MH_NOUNDEFS),
|
||||
|
|
|
@ -52,7 +52,11 @@ namespace MacFileUtilities {
|
|||
MachoWalker::MachoWalker(const char *path, LoadCommandCallback callback,
|
||||
void *context)
|
||||
: callback_(callback),
|
||||
callback_context_(context) {
|
||||
callback_context_(context),
|
||||
file_(0),
|
||||
current_header_(NULL),
|
||||
current_header_size_(0),
|
||||
current_header_offset_(0) {
|
||||
file_ = open(path, O_RDONLY);
|
||||
}
|
||||
|
||||
|
|
|
@ -99,6 +99,10 @@ class MachoWalker {
|
|||
struct mach_header_64 *current_header_;
|
||||
unsigned long current_header_size_;
|
||||
off_t current_header_offset_;
|
||||
|
||||
private:
|
||||
MachoWalker(const MachoWalker &);
|
||||
MachoWalker &operator=(const MachoWalker &);
|
||||
};
|
||||
|
||||
} // namespace MacFileUtilities
|
||||
|
|
|
@ -58,7 +58,7 @@ unsigned int IntegerValueAtIndex(string &str, unsigned int idx) {
|
|||
size_t start = 0;
|
||||
size_t end;
|
||||
size_t found = 0;
|
||||
size_t result = 0;
|
||||
unsigned int result = 0;
|
||||
|
||||
for (; found <= idx; ++found) {
|
||||
end = str.find_first_not_of(digits, start);
|
||||
|
|
|
@ -49,7 +49,7 @@ Module::Module(const string &name, const string &os,
|
|||
Module::~Module() {
|
||||
for (FileByNameMap::iterator it = files_.begin(); it != files_.end(); it++)
|
||||
delete it->second;
|
||||
for (set<Function *>::iterator it = functions_.begin();
|
||||
for (FunctionSet::iterator it = functions_.begin();
|
||||
it != functions_.end(); it++)
|
||||
delete *it;
|
||||
for (vector<StackFrameEntry *>::iterator it = stack_frame_entries_.begin();
|
||||
|
@ -62,7 +62,7 @@ void Module::SetLoadAddress(Address address) {
|
|||
}
|
||||
|
||||
void Module::AddFunction(Function *function) {
|
||||
std::pair<set<Function *>::iterator,bool> ret = functions_.insert(function);
|
||||
std::pair<FunctionSet::iterator,bool> ret = functions_.insert(function);
|
||||
if (!ret.second) {
|
||||
// Free the duplicate we failed to insert because we own it.
|
||||
delete function;
|
||||
|
@ -135,7 +135,7 @@ void Module::AssignSourceIds() {
|
|||
|
||||
// Next, mark all files actually cited by our functions' line number
|
||||
// info, by setting each one's source id to zero.
|
||||
for (set<Function *>::const_iterator func_it = functions_.begin();
|
||||
for (FunctionSet::const_iterator func_it = functions_.begin();
|
||||
func_it != functions_.end(); func_it++) {
|
||||
Function *func = *func_it;
|
||||
for (vector<Line>::iterator line_it = func->lines.begin();
|
||||
|
@ -192,7 +192,7 @@ bool Module::Write(FILE *stream) {
|
|||
}
|
||||
|
||||
// Write out functions and their lines.
|
||||
for (set<Function *>::const_iterator func_it = functions_.begin();
|
||||
for (FunctionSet::const_iterator func_it = functions_.begin();
|
||||
func_it != functions_.end(); func_it++) {
|
||||
Function *func = *func_it;
|
||||
if (0 > fprintf(stream, "FUNC %llx %llx %llx %s\n",
|
||||
|
|
|
@ -274,7 +274,8 @@ class Module {
|
|||
// to it; destroying the module frees the Files and Functions these
|
||||
// point to.
|
||||
FileByNameMap files_; // This module's source files.
|
||||
set<Function *, FunctionCompare> functions_; // This module's functions.
|
||||
typedef set<Function *, FunctionCompare> FunctionSet;
|
||||
FunctionSet functions_; // This module's functions.
|
||||
|
||||
// The module owns all the call frame info entries that have been
|
||||
// added to it.
|
||||
|
|
|
@ -49,7 +49,7 @@ using testing::ContainerEq;
|
|||
|
||||
// Return a FILE * referring to a temporary file that will be deleted
|
||||
// automatically when the stream is closed or the program exits.
|
||||
FILE *checked_tmpfile() {
|
||||
static FILE *checked_tmpfile() {
|
||||
FILE *f = tmpfile();
|
||||
if (!f) {
|
||||
fprintf(stderr, "error creating temporary file: %s\n", strerror(errno));
|
||||
|
@ -60,7 +60,7 @@ FILE *checked_tmpfile() {
|
|||
|
||||
// Read from STREAM until end of file, and return the contents as a
|
||||
// string.
|
||||
string checked_read(FILE *stream) {
|
||||
static string checked_read(FILE *stream) {
|
||||
string contents;
|
||||
int c;
|
||||
while ((c = getc(stream)) != EOF)
|
||||
|
@ -74,7 +74,7 @@ string checked_read(FILE *stream) {
|
|||
}
|
||||
|
||||
// Apply 'fflush' to STREAM, and check for errors.
|
||||
void checked_fflush(FILE *stream) {
|
||||
static void checked_fflush(FILE *stream) {
|
||||
if (fflush(stream) == EOF) {
|
||||
fprintf(stderr, "error flushing temporary file stream: %s\n",
|
||||
strerror(errno));
|
||||
|
@ -83,7 +83,7 @@ void checked_fflush(FILE *stream) {
|
|||
}
|
||||
|
||||
// Apply 'fclose' to STREAM, and check for errors.
|
||||
void checked_fclose(FILE *stream) {
|
||||
static void checked_fclose(FILE *stream) {
|
||||
if (fclose(stream) == EOF) {
|
||||
fprintf(stderr, "error closing temporary file stream: %s\n",
|
||||
strerror(errno));
|
||||
|
@ -91,7 +91,7 @@ void checked_fclose(FILE *stream) {
|
|||
}
|
||||
}
|
||||
|
||||
Module::Function *generate_duplicate_function(const string &name) {
|
||||
static Module::Function *generate_duplicate_function(const string &name) {
|
||||
const Module::Address DUP_ADDRESS = 0xd35402aac7a7ad5cLL;
|
||||
const Module::Address DUP_SIZE = 0x200b26e605f99071LL;
|
||||
const Module::Address DUP_PARAMETER_SIZE = 0xf14ac4fed48c4a99LL;
|
||||
|
|
|
@ -68,7 +68,7 @@ int UTF8ToUTF16Char(const char *in, int in_length, u_int16_t out[2]) {
|
|||
strictConversion);
|
||||
|
||||
if (result == conversionOK)
|
||||
return source_ptr - reinterpret_cast<const UTF8 *>(in);
|
||||
return static_cast<int>(source_ptr - reinterpret_cast<const UTF8 *>(in));
|
||||
|
||||
// Add another character to the input stream and try again
|
||||
source_ptr = reinterpret_cast<const UTF8 *>(in);
|
||||
|
@ -135,7 +135,7 @@ string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap) {
|
|||
|
||||
// The maximum expansion would be 4x the size of the input string.
|
||||
const UTF16 *source_end_ptr = source_ptr + in.size();
|
||||
int target_capacity = in.size() * 4;
|
||||
size_t target_capacity = in.size() * 4;
|
||||
scoped_array<UTF8> target_buffer(new UTF8[target_capacity]);
|
||||
UTF8 *target_ptr = target_buffer.get();
|
||||
UTF8 *target_end_ptr = target_ptr + target_capacity;
|
||||
|
@ -145,8 +145,7 @@ string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap) {
|
|||
|
||||
if (result == conversionOK) {
|
||||
const char *targetPtr = reinterpret_cast<const char *>(target_buffer.get());
|
||||
string result(targetPtr);
|
||||
return result;
|
||||
return targetPtr;
|
||||
}
|
||||
|
||||
return "";
|
||||
|
|
|
@ -37,10 +37,10 @@
|
|||
#include "breakpad_googletest_includes.h"
|
||||
#include "common/test_assembler.h"
|
||||
|
||||
using google_breakpad::TestAssembler::Label;
|
||||
using google_breakpad::TestAssembler::Section;
|
||||
using google_breakpad::TestAssembler::kBigEndian;
|
||||
using google_breakpad::TestAssembler::kLittleEndian;
|
||||
using google_breakpad::test_assembler::Label;
|
||||
using google_breakpad::test_assembler::Section;
|
||||
using google_breakpad::test_assembler::kBigEndian;
|
||||
using google_breakpad::test_assembler::kLittleEndian;
|
||||
using std::string;
|
||||
using testing::Test;
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ StackFrame* StackwalkerSPARC::GetCallerFrame(const CallStack *stack) {
|
|||
// A caller frame must reside higher in memory than its callee frames.
|
||||
// Anything else is an error, or an indication that we've reached the
|
||||
// end of the stack.
|
||||
u_int32_t stack_pointer = last_frame->context.g_r[30];
|
||||
u_int64_t stack_pointer = last_frame->context.g_r[30];
|
||||
if (stack_pointer <= last_frame->context.g_r[14]) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -3,24 +3,25 @@
|
|||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
557800400BE1F28500EC23E0 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5578003E0BE1F28500EC23E0 /* macho_utilities.cc */; };
|
||||
557800410BE1F28500EC23E0 /* macho_utilities.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5578003F0BE1F28500EC23E0 /* macho_utilities.h */; };
|
||||
8B31FF2A11F0C62700FCF3E4 /* dwarf_cfi_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF2411F0C62700FCF3E4 /* dwarf_cfi_to_module.cc */; };
|
||||
8B31FF2B11F0C62700FCF3E4 /* dwarf_cu_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF2611F0C62700FCF3E4 /* dwarf_cu_to_module.cc */; };
|
||||
8B31FF2C11F0C62700FCF3E4 /* dwarf_line_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF2811F0C62700FCF3E4 /* dwarf_line_to_module.cc */; };
|
||||
8B31FF4111F0C64400FCF3E4 /* stabs_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF3D11F0C64400FCF3E4 /* stabs_reader.cc */; };
|
||||
8B31FF4211F0C64400FCF3E4 /* stabs_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF3F11F0C64400FCF3E4 /* stabs_to_module.cc */; };
|
||||
8B31FF7411F0C6E000FCF3E4 /* macho_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF7211F0C6E000FCF3E4 /* macho_reader.cc */; };
|
||||
8B31FF8811F0C6FB00FCF3E4 /* language.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF8411F0C6FB00FCF3E4 /* language.cc */; };
|
||||
8B31FF8911F0C6FB00FCF3E4 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF8611F0C6FB00FCF3E4 /* module.cc */; };
|
||||
8B31FFC511F0C8AB00FCF3E4 /* dwarf2diehandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FFC311F0C8AB00FCF3E4 /* dwarf2diehandler.cc */; };
|
||||
8B40BDC00C0638E4009535AF /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B40BDBF0C0638E4009535AF /* logging.cc */; };
|
||||
8DD76F9A0486AA7600D96B5E /* crash_report.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* crash_report.mm */; settings = {ATTRIBUTES = (); }; };
|
||||
8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
|
||||
9B35FEE40B2675F9008DE8C7 /* code_module.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE20B2675F9008DE8C7 /* code_module.h */; };
|
||||
9B35FEE50B2675F9008DE8C7 /* code_modules.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE30B2675F9008DE8C7 /* code_modules.h */; };
|
||||
9B35FEE90B26761C008DE8C7 /* basic_code_module.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE60B26761C008DE8C7 /* basic_code_module.h */; };
|
||||
9B35FEEA0B26761C008DE8C7 /* basic_code_modules.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */; };
|
||||
9B35FEEB0B26761C008DE8C7 /* basic_code_modules.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */; };
|
||||
9B3904960B2E52D90059FABE /* basic_source_line_resolver.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B3904940B2E52D90059FABE /* basic_source_line_resolver.h */; };
|
||||
9B3904970B2E52D90059FABE /* source_line_resolver_interface.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */; };
|
||||
9B3904990B2E52FD0059FABE /* basic_source_line_resolver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */; };
|
||||
9B44619E0B66C66B00BBB817 /* system_info.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B44619D0B66C66B00BBB817 /* system_info.h */; };
|
||||
9BDF172C0B1B8B2400F8391B /* call_stack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF172A0B1B8B2400F8391B /* call_stack.cc */; };
|
||||
9BDF172D0B1B8B2400F8391B /* minidump_processor.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */; };
|
||||
9BDF17410B1B8B9A00F8391B /* minidump.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF173F0B1B8B9A00F8391B /* minidump.cc */; };
|
||||
|
@ -28,21 +29,12 @@
|
|||
9BDF17550B1B8BF900F8391B /* stackwalker_x86.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */; };
|
||||
9BDF17560B1B8BF900F8391B /* stackwalker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17530B1B8BF900F8391B /* stackwalker.cc */; };
|
||||
9BDF175D0B1B8C1B00F8391B /* process_state.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF175B0B1B8C1B00F8391B /* process_state.cc */; };
|
||||
9BDF176D0B1B8CB100F8391B /* on_demand_symbol_supplier.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */; };
|
||||
9BDF176E0B1B8CB100F8391B /* on_demand_symbol_supplier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */; };
|
||||
9BDF1A280B1BD58200F8391B /* pathname_stripper.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */; };
|
||||
9BDF1AB90B1BE70C00F8391B /* range_map.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1A7B0B1BE30100F8391B /* range_map.h */; };
|
||||
9BDF1ABA0B1BE70D00F8391B /* range_map-inl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1A7A0B1BE30100F8391B /* range_map-inl.h */; };
|
||||
9BDF1AFC0B1BEB6300F8391B /* address_map-inl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1AFA0B1BEB6300F8391B /* address_map-inl.h */; };
|
||||
9BDF1AFD0B1BEB6300F8391B /* address_map.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1AFB0B1BEB6300F8391B /* address_map.h */; };
|
||||
9BDF21A60B1E825400F8391B /* dump_syms.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF192D0B1BC15D00F8391B /* dump_syms.h */; };
|
||||
9BDF21A70B1E825400F8391B /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF192E0B1BC15D00F8391B /* dump_syms.mm */; };
|
||||
9BE650B20B52FE3000611104 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650AC0B52FE3000611104 /* file_id.cc */; };
|
||||
9BE650B30B52FE3000611104 /* file_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE650AD0B52FE3000611104 /* file_id.h */; };
|
||||
9BE650B40B52FE3000611104 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650AE0B52FE3000611104 /* macho_id.cc */; };
|
||||
9BE650B50B52FE3000611104 /* macho_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE650AF0B52FE3000611104 /* macho_id.h */; };
|
||||
9BE650B60B52FE3000611104 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650B00B52FE3000611104 /* macho_walker.cc */; };
|
||||
9BE650B70B52FE3000611104 /* macho_walker.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE650B10B52FE3000611104 /* macho_walker.h */; };
|
||||
D2A5DD4D1188651100081F03 /* cfi_frame_info.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2A5DD4C1188651100081F03 /* cfi_frame_info.cc */; };
|
||||
D2A5DD631188658B00081F03 /* tokenize.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2A5DD621188658B00081F03 /* tokenize.cc */; };
|
||||
F9C7ECE50E8ABCA600E953AD /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE20E8ABCA600E953AD /* bytereader.cc */; };
|
||||
|
@ -51,44 +43,34 @@
|
|||
F9F0706710FBC02D0037B88B /* stackwalker_arm.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9F0706510FBC02D0037B88B /* stackwalker_arm.cc */; };
|
||||
FD6625CD0CF4D45C004AC844 /* stackwalker_amd64.cc in Sources */ = {isa = PBXBuildFile; fileRef = FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */; };
|
||||
FD8EDEAE0CADDAD400A5EDF1 /* stackwalker_sparc.cc in Sources */ = {isa = PBXBuildFile; fileRef = FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */; };
|
||||
FD8EDEAF0CADDAD400A5EDF1 /* stackwalker_sparc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = FD8EDEAD0CADDAD400A5EDF1 /* stackwalker_sparc.h */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 8;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
9BDF176D0B1B8CB100F8391B /* on_demand_symbol_supplier.h in CopyFiles */,
|
||||
9BDF1AB90B1BE70C00F8391B /* range_map.h in CopyFiles */,
|
||||
9BDF1ABA0B1BE70D00F8391B /* range_map-inl.h in CopyFiles */,
|
||||
9BDF1AFC0B1BEB6300F8391B /* address_map-inl.h in CopyFiles */,
|
||||
9BDF1AFD0B1BEB6300F8391B /* address_map.h in CopyFiles */,
|
||||
9BDF21A60B1E825400F8391B /* dump_syms.h in CopyFiles */,
|
||||
9B35FEE40B2675F9008DE8C7 /* code_module.h in CopyFiles */,
|
||||
9B35FEE50B2675F9008DE8C7 /* code_modules.h in CopyFiles */,
|
||||
9B35FEE90B26761C008DE8C7 /* basic_code_module.h in CopyFiles */,
|
||||
9B35FEEB0B26761C008DE8C7 /* basic_code_modules.h in CopyFiles */,
|
||||
9B3904960B2E52D90059FABE /* basic_source_line_resolver.h in CopyFiles */,
|
||||
9B3904970B2E52D90059FABE /* source_line_resolver_interface.h in CopyFiles */,
|
||||
9BE650B30B52FE3000611104 /* file_id.h in CopyFiles */,
|
||||
9BE650B50B52FE3000611104 /* macho_id.h in CopyFiles */,
|
||||
9BE650B70B52FE3000611104 /* macho_walker.h in CopyFiles */,
|
||||
9B44619E0B66C66B00BBB817 /* system_info.h in CopyFiles */,
|
||||
557800410BE1F28500EC23E0 /* macho_utilities.h in CopyFiles */,
|
||||
FD8EDEAF0CADDAD400A5EDF1 /* stackwalker_sparc.h in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
08FB7796FE84155DC02AAC07 /* crash_report.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = crash_report.mm; sourceTree = "<group>"; };
|
||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
5578003E0BE1F28500EC23E0 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
|
||||
5578003F0BE1F28500EC23E0 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31025311F0D2D400FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B3102DA11F0D65600FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B3102DB11F0D65600FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF2411F0C62700FCF3E4 /* dwarf_cfi_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cfi_to_module.cc; path = ../../../common/dwarf_cfi_to_module.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF2511F0C62700FCF3E4 /* dwarf_cfi_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_cfi_to_module.h; path = ../../../common/dwarf_cfi_to_module.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF2611F0C62700FCF3E4 /* dwarf_cu_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cu_to_module.cc; path = ../../../common/dwarf_cu_to_module.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF2711F0C62700FCF3E4 /* dwarf_cu_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_cu_to_module.h; path = ../../../common/dwarf_cu_to_module.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF2811F0C62700FCF3E4 /* dwarf_line_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_line_to_module.cc; path = ../../../common/dwarf_line_to_module.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF2911F0C62700FCF3E4 /* dwarf_line_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_line_to_module.h; path = ../../../common/dwarf_line_to_module.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF3D11F0C64400FCF3E4 /* stabs_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_reader.cc; path = ../../../common/stabs_reader.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF3E11F0C64400FCF3E4 /* stabs_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stabs_reader.h; path = ../../../common/stabs_reader.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF3F11F0C64400FCF3E4 /* stabs_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_to_module.cc; path = ../../../common/stabs_to_module.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF4011F0C64400FCF3E4 /* stabs_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stabs_to_module.h; path = ../../../common/stabs_to_module.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF7211F0C6E000FCF3E4 /* macho_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_reader.cc; path = ../../../common/mac/macho_reader.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF7311F0C6E000FCF3E4 /* macho_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macho_reader.h; path = ../../../common/mac/macho_reader.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF8411F0C6FB00FCF3E4 /* language.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = language.cc; path = ../../../common/language.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF8511F0C6FB00FCF3E4 /* language.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = language.h; path = ../../../common/language.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF8611F0C6FB00FCF3E4 /* module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = module.cc; path = ../../../common/module.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FF8711F0C6FB00FCF3E4 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = module.h; path = ../../../common/module.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31FFC311F0C8AB00FCF3E4 /* dwarf2diehandler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2diehandler.cc; path = ../../../common/dwarf/dwarf2diehandler.cc; sourceTree = SOURCE_ROOT; };
|
||||
8B31FFC411F0C8AB00FCF3E4 /* dwarf2diehandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2diehandler.h; path = ../../../common/dwarf/dwarf2diehandler.h; sourceTree = SOURCE_ROOT; };
|
||||
8B40BDBF0C0638E4009535AF /* logging.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = logging.cc; path = ../../../processor/logging.cc; sourceTree = SOURCE_ROOT; };
|
||||
8DD76FA10486AA7600D96B5E /* crash_report */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = crash_report; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9B35FEE20B2675F9008DE8C7 /* code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_module.h; path = ../../../google_breakpad/processor/code_module.h; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -161,14 +143,33 @@
|
|||
08FB7794FE84155DC02AAC07 /* crash_report */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B31025311F0D2D400FCF3E4 /* Breakpad.xcconfig */,
|
||||
8B3102DA11F0D65600FCF3E4 /* BreakpadDebug.xcconfig */,
|
||||
8B3102DB11F0D65600FCF3E4 /* BreakpadRelease.xcconfig */,
|
||||
F9C7ECE10E8ABC7F00E953AD /* DWARF */,
|
||||
5578003E0BE1F28500EC23E0 /* macho_utilities.cc */,
|
||||
5578003F0BE1F28500EC23E0 /* macho_utilities.h */,
|
||||
8B31FF7211F0C6E000FCF3E4 /* macho_reader.cc */,
|
||||
8B31FF7311F0C6E000FCF3E4 /* macho_reader.h */,
|
||||
9BDF192D0B1BC15D00F8391B /* dump_syms.h */,
|
||||
9BDF192E0B1BC15D00F8391B /* dump_syms.mm */,
|
||||
08FB7796FE84155DC02AAC07 /* crash_report.mm */,
|
||||
9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */,
|
||||
9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */,
|
||||
8B31FF2411F0C62700FCF3E4 /* dwarf_cfi_to_module.cc */,
|
||||
8B31FF2511F0C62700FCF3E4 /* dwarf_cfi_to_module.h */,
|
||||
8B31FF2611F0C62700FCF3E4 /* dwarf_cu_to_module.cc */,
|
||||
8B31FF2711F0C62700FCF3E4 /* dwarf_cu_to_module.h */,
|
||||
8B31FF2811F0C62700FCF3E4 /* dwarf_line_to_module.cc */,
|
||||
8B31FF2911F0C62700FCF3E4 /* dwarf_line_to_module.h */,
|
||||
8B31FF3D11F0C64400FCF3E4 /* stabs_reader.cc */,
|
||||
8B31FF3E11F0C64400FCF3E4 /* stabs_reader.h */,
|
||||
8B31FF3F11F0C64400FCF3E4 /* stabs_to_module.cc */,
|
||||
8B31FF4011F0C64400FCF3E4 /* stabs_to_module.h */,
|
||||
8B31FF8411F0C6FB00FCF3E4 /* language.cc */,
|
||||
8B31FF8511F0C6FB00FCF3E4 /* language.h */,
|
||||
8B31FF8611F0C6FB00FCF3E4 /* module.cc */,
|
||||
8B31FF8711F0C6FB00FCF3E4 /* module.h */,
|
||||
08FB7795FE84155DC02AAC07 /* breakpad */,
|
||||
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||
|
@ -292,6 +293,8 @@
|
|||
children = (
|
||||
F9C7ECE20E8ABCA600E953AD /* bytereader.cc */,
|
||||
F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */,
|
||||
8B31FFC311F0C8AB00FCF3E4 /* dwarf2diehandler.cc */,
|
||||
8B31FFC411F0C8AB00FCF3E4 /* dwarf2diehandler.h */,
|
||||
F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */,
|
||||
);
|
||||
name = DWARF;
|
||||
|
@ -306,7 +309,6 @@
|
|||
buildPhases = (
|
||||
8DD76F990486AA7600D96B5E /* Sources */,
|
||||
8DD76F9B0486AA7600D96B5E /* Frameworks */,
|
||||
8DD76F9E0486AA7600D96B5E /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -324,7 +326,7 @@
|
|||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "crash_report" */;
|
||||
compatibilityVersion = "Xcode 2.4";
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* crash_report */;
|
||||
projectDirPath = "";
|
||||
|
@ -366,6 +368,15 @@
|
|||
F9F0706710FBC02D0037B88B /* stackwalker_arm.cc in Sources */,
|
||||
D2A5DD4D1188651100081F03 /* cfi_frame_info.cc in Sources */,
|
||||
D2A5DD631188658B00081F03 /* tokenize.cc in Sources */,
|
||||
8B31FF2A11F0C62700FCF3E4 /* dwarf_cfi_to_module.cc in Sources */,
|
||||
8B31FF2B11F0C62700FCF3E4 /* dwarf_cu_to_module.cc in Sources */,
|
||||
8B31FF2C11F0C62700FCF3E4 /* dwarf_line_to_module.cc in Sources */,
|
||||
8B31FF4111F0C64400FCF3E4 /* stabs_reader.cc in Sources */,
|
||||
8B31FF4211F0C64400FCF3E4 /* stabs_to_module.cc in Sources */,
|
||||
8B31FF7411F0C6E000FCF3E4 /* macho_reader.cc in Sources */,
|
||||
8B31FF8811F0C6FB00FCF3E4 /* language.cc in Sources */,
|
||||
8B31FF8911F0C6FB00FCF3E4 /* module.cc in Sources */,
|
||||
8B31FFC511F0C8AB00FCF3E4 /* dwarf2diehandler.cc in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -375,65 +386,43 @@
|
|||
1DEB927508733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(GCC_PREPROCESSOR_DEFINITIONS)",
|
||||
"$(inherited)",
|
||||
_GLIBCXX_DEBUG_PEDANTIC,
|
||||
_GLIBCXX_DEBUG,
|
||||
_GLIBCPP_CONCEPT_CHECKS,
|
||||
);
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
OTHER_LDFLAGS = "-lcrypto";
|
||||
PRODUCT_NAME = crash_report;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../../** $(inherited)";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927608733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
);
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
||||
OTHER_LDFLAGS = "-lcrypto";
|
||||
PRODUCT_NAME = crash_report;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../../** $(inherited)";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1DEB927908733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8B3102DA11F0D65600FCF3E4 /* BreakpadDebug.xcconfig */;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927A08733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8B3102DB11F0D65600FCF3E4 /* BreakpadRelease.xcconfig */;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
|
@ -53,7 +53,7 @@ OnDemandSymbolSupplier::OnDemandSymbolSupplier(const string &search_dir,
|
|||
const string &symbol_search_dir)
|
||||
: search_dir_(search_dir) {
|
||||
NSFileManager *mgr = [NSFileManager defaultManager];
|
||||
int length = symbol_search_dir.length();
|
||||
size_t length = symbol_search_dir.length();
|
||||
if (length) {
|
||||
// Load all sym files in symbol_search_dir into our module_file_map
|
||||
// A symbol file always starts with a line like this:
|
||||
|
@ -149,7 +149,7 @@ OnDemandSymbolSupplier::GetSymbolFile(const CodeModule *module,
|
|||
|
||||
|
||||
if (s == FOUND) {
|
||||
ifstream in(symbol_file->c_str());
|
||||
std::ifstream in(symbol_file->c_str());
|
||||
getline(in, *symbol_data, std::string::traits_type::to_char_type(
|
||||
std::string::traits_type::eof()));
|
||||
in.close();
|
||||
|
@ -174,14 +174,14 @@ string OnDemandSymbolSupplier::GetLocalModulePath(const CodeModule *module) {
|
|||
// search string and stop if a file (not dir) is found or all components
|
||||
// have been appended
|
||||
NSArray *pathComponents = [modulePath componentsSeparatedByString:@"/"];
|
||||
int count = [pathComponents count];
|
||||
size_t count = [pathComponents count];
|
||||
NSMutableString *path = [NSMutableString string];
|
||||
|
||||
for (int i = 0; i < count; ++i) {
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
[path setString:searchDir];
|
||||
|
||||
for (int j = 0; j < i + 1; ++j) {
|
||||
int idx = count - 1 - i + j;
|
||||
for (size_t j = 0; j < i + 1; ++j) {
|
||||
size_t idx = count - 1 - i + j;
|
||||
[path appendFormat:@"/%@", [pathComponents objectAtIndex:idx]];
|
||||
}
|
||||
|
||||
|
@ -214,7 +214,7 @@ static float GetFileModificationTime(const char *path) {
|
|||
struct stat file_stat;
|
||||
if (stat(path, &file_stat) == 0)
|
||||
result = (float)file_stat.st_mtimespec.tv_sec +
|
||||
(float)file_stat.st_mtimespec.tv_nsec / 1.0e9;
|
||||
(float)file_stat.st_mtimespec.tv_nsec / 1.0e9f;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -236,7 +236,7 @@ bool OnDemandSymbolSupplier::GenerateSymbolFile(const CodeModule *module,
|
|||
if ([[NSFileManager defaultManager] fileExistsAtPath:symbol_path]) {
|
||||
// Check if the module file is newer than the saved symbols
|
||||
float cache_time =
|
||||
GetFileModificationTime([symbol_path fileSystemRepresentation]);
|
||||
GetFileModificationTime([symbol_path fileSystemRepresentation]);
|
||||
float module_time =
|
||||
GetFileModificationTime(module_path.c_str());
|
||||
|
||||
|
@ -248,15 +248,26 @@ bool OnDemandSymbolSupplier::GenerateSymbolFile(const CodeModule *module,
|
|||
NSString *module_str = [[NSFileManager defaultManager]
|
||||
stringWithFileSystemRepresentation:module_path.c_str()
|
||||
length:module_path.length()];
|
||||
DumpSymbols *dump = [[DumpSymbols alloc] initWithContentsOfFile:module_str];
|
||||
const char *archStr = system_info->cpu.c_str();
|
||||
if ([dump setArchitecture:[NSString stringWithUTF8String:archStr]]) {
|
||||
[dump writeSymbolFile:symbol_path];
|
||||
DumpSymbols dump;
|
||||
if (dump.Read(module_str)) {
|
||||
if (dump.SetArchitecture(system_info->cpu)) {
|
||||
FILE *file = fopen([symbol_path fileSystemRepresentation],"w");
|
||||
if (file) {
|
||||
dump.WriteSymbolFile(file);
|
||||
fclose(file);
|
||||
} else {
|
||||
printf("Unable to open %s (%d)\n", name.c_str(), errno);
|
||||
result = false;
|
||||
}
|
||||
} else {
|
||||
printf("Architecture %s not available for %s\n",
|
||||
system_info->cpu.c_str(), name.c_str());
|
||||
result = false;
|
||||
}
|
||||
} else {
|
||||
printf("Architecture %s not available for %s\n", archStr, name.c_str());
|
||||
printf("Unable to open %s\n", [module_str UTF8String]);
|
||||
result = false;
|
||||
}
|
||||
[dump release];
|
||||
}
|
||||
|
||||
// Add the mapping
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXAggregateTarget section */
|
||||
|
@ -25,6 +25,7 @@
|
|||
B88FB15D116CF54B00407530 /* PBXTargetDependency */,
|
||||
B84A9201116CF7D2006C210E /* PBXTargetDependency */,
|
||||
B88FB0C8116CEB4A00407530 /* PBXTargetDependency */,
|
||||
8B31051511F100CF00FCF3E4 /* PBXTargetDependency */,
|
||||
);
|
||||
name = all_unittests;
|
||||
productName = all_unittests;
|
||||
|
@ -103,6 +104,13 @@
|
|||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
8B31051411F100CF00FCF3E4 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D21F97D111CBA0F200239E38;
|
||||
remoteInfo = test_assembler_unittest;
|
||||
};
|
||||
B84A91F9116CF796006C210E /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
|
||||
|
@ -264,6 +272,9 @@
|
|||
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
557800890BE1F3AB00EC23E0 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
|
||||
5578008A0BE1F3AB00EC23E0 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
|
||||
8B31023E11F0CF1C00FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
9BDF186D0B1BB43700F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = "<group>"; };
|
||||
9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dump_syms_tool.mm; sourceTree = "<group>"; };
|
||||
9BE650410B52F6D800611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -463,6 +474,9 @@
|
|||
08FB7794FE84155DC02AAC07 /* dump_syms */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B31023E11F0CF1C00FCF3E4 /* Breakpad.xcconfig */,
|
||||
8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */,
|
||||
8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */,
|
||||
B89E0E9D11665A9500DD08C9 /* TESTING */,
|
||||
F9F5344B0E7C8FFC0012363F /* DWARF */,
|
||||
B89E0E6C1166569700DD08C9 /* MACHO */,
|
||||
|
@ -869,7 +883,7 @@
|
|||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */;
|
||||
compatibilityVersion = "Xcode 2.4";
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* dump_syms */;
|
||||
projectDirPath = "";
|
||||
|
@ -907,7 +921,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "set -eu\n\ncd $BUILT_PRODUCTS_DIR\npwd\n\n./byte_cursor_unittest\n./macho_reader_unittest\n./stabs_reader_unittest\n./bytereader_unittest\n./dwarf2reader_cfi_unittest\n./dwarf2diehandler_unittest\n./dwarf_cu_to_module_unittest\n./dwarf_line_to_module_unittest\n./dwarf_cfi_to_module_unittest\n./stabs_to_module_unittest\n./module_unittest\n\necho \"Expect two warnings from the following tests:\"\necho \" Errors.BadFileNumber\"\necho \" Errors.BadDirectoryNumber\"\necho \"The proper behavior of these tests is to print text that XCode confuses with compiler warnings.\"\n";
|
||||
shellScript = "set -eu\n\ncd $BUILT_PRODUCTS_DIR\npwd\n\n./byte_cursor_unittest\n./macho_reader_unittest\n./stabs_reader_unittest\n./bytereader_unittest\n./dwarf2reader_cfi_unittest\n./dwarf2diehandler_unittest\n./dwarf_cu_to_module_unittest\n./dwarf_line_to_module_unittest\n./dwarf_cfi_to_module_unittest\n./stabs_to_module_unittest\n./module_unittest\n./test_assembler_unittest\n\necho \"Expect two warnings from the following tests:\"\necho \" Errors.BadFileNumber\"\necho \" Errors.BadDirectoryNumber\"\necho \"The proper behavior of these tests is to print text that XCode confuses with compiler warnings.\"\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
|
@ -1074,6 +1088,11 @@
|
|||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
8B31051511F100CF00FCF3E4 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = D21F97D111CBA0F200239E38 /* test_assembler_unittest */;
|
||||
targetProxy = 8B31051411F100CF00FCF3E4 /* PBXContainerItemProxy */;
|
||||
};
|
||||
B84A91FA116CF796006C210E /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = B88FB023116BDFFF00407530 /* gtestmockall */;
|
||||
|
@ -1189,38 +1208,23 @@
|
|||
/* Begin XCBuildConfiguration section */
|
||||
1DEB927908733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ONLY_ACTIVE_ARCH_PRE_XCODE_3_1)";
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "../../../**";
|
||||
ONLY_ACTIVE_ARCH_PRE_XCODE_3_1 = "$(NATIVE_ARCH_ACTUAL)";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
HEADER_SEARCH_PATHS = "\"../../../**\"";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927A08733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
HEADER_SEARCH_PATHS = "\"../../../**\"";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B84A91F6116CF784006C210E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = stabs_to_module_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1228,38 +1232,18 @@
|
|||
B84A91F7116CF784006C210E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = stabs_to_module_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FAF31116A591F00407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ONLY_ACTIVE_ARCH_PRE_XCODE_3_1)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Debug\"";
|
||||
ONLY_ACTIVE_ARCH_PRE_XCODE_3_1 = "$(NATIVE_ARCH_ACTUAL)";
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf2reader_cfi_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1267,29 +1251,18 @@
|
|||
B88FAF32116A591F00407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Debug\"";
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf2reader_cfi_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FAFCA116BDCAD00407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
PRODUCT_NAME = all_unittests;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1297,26 +1270,14 @@
|
|||
B88FAFCB116BDCAD00407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
PRODUCT_NAME = all_unittests;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB009116BDE8400407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = stabs_reader_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1324,32 +1285,16 @@
|
|||
B88FB00A116BDE8400407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = stabs_reader_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB025116BE00100407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = gtestmockall;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1357,29 +1302,13 @@
|
|||
B88FB026116BE00100407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = gtestmockall;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB0BB116CEAC000407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = module_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1387,29 +1316,13 @@
|
|||
B88FB0BC116CEAC000407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = module_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB0E1116CEEA800407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf2diehandler_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1417,29 +1330,13 @@
|
|||
B88FB0E2116CEEA800407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf2diehandler_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB0F4116CEF1900407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf_line_to_module_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1447,29 +1344,13 @@
|
|||
B88FB0F5116CEF1900407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf_line_to_module_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB10C116CF07A00407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf_cu_to_module_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1477,29 +1358,13 @@
|
|||
B88FB10D116CF07A00407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf_cu_to_module_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB121116CF28000407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf_cfi_to_module_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1507,29 +1372,13 @@
|
|||
B88FB122116CF28000407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dwarf_cfi_to_module_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB137116CF30F00407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = bytereader_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1537,29 +1386,13 @@
|
|||
B88FB138116CF30F00407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = bytereader_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B88FB14D116CF4A800407530 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = byte_cursor_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1567,29 +1400,13 @@
|
|||
B88FB14E116CF4A800407530 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = byte_cursor_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B89E0E761166575300DD08C9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = macho_dump;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1597,29 +1414,13 @@
|
|||
B89E0E771166575300DD08C9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = macho_dump;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B89E0E9711665A6400DD08C9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = macho_reader_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1627,31 +1428,14 @@
|
|||
B89E0E9811665A6400DD08C9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = macho_reader_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B8C5B5131166531B00D34F4E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dump_syms;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1659,39 +1443,14 @@
|
|||
B8C5B5141166531B00D34F4E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = dump_syms;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
D21F97D411CBA0F200239E38 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
AppKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES;
|
||||
PRODUCT_NAME = test_assembler_unittest;
|
||||
};
|
||||
name = Debug;
|
||||
|
@ -1699,23 +1458,7 @@
|
|||
D21F97D511CBA0F200239E38 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
AppKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = test_assembler_unittest;
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
|
@ -137,7 +137,8 @@ void DumpFile(const char *filename) {
|
|||
}
|
||||
printf("filename: %s\n", filename);
|
||||
size_t object_files_size;
|
||||
struct fat_arch *object_files = fat_reader.object_files(&object_files_size);
|
||||
const struct fat_arch *object_files
|
||||
= fat_reader.object_files(&object_files_size);
|
||||
printf(" object file count: %ld\n", object_files_size);
|
||||
for (size_t i = 0; i < object_files_size; i++) {
|
||||
const struct fat_arch &file = object_files[i];
|
||||
|
|
|
@ -98,10 +98,10 @@ SetupOptions(int argc, const char *argv[], Options *options) {
|
|||
while ((ch = getopt(argc, (char * const *)argv, "p:v:h?")) != -1) {
|
||||
switch (ch) {
|
||||
case 'p':
|
||||
options->product = [NSString stringWithCString:optarg];
|
||||
options->product = [NSString stringWithUTF8String:optarg];
|
||||
break;
|
||||
case 'v':
|
||||
options->version = [NSString stringWithCString:optarg];
|
||||
options->version = [NSString stringWithUTF8String:optarg];
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -117,8 +117,8 @@ SetupOptions(int argc, const char *argv[], Options *options) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
options->minidumpPath = [NSString stringWithCString:argv[optind]];
|
||||
options->uploadURLStr = [NSString stringWithCString:argv[optind + 1]];
|
||||
options->minidumpPath = [NSString stringWithUTF8String:argv[optind]];
|
||||
options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]];
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
|
|
@ -134,7 +134,7 @@ static void Start(Options *options) {
|
|||
fprintf(stdout, "Send: %s\n", error ? [[error description] UTF8String] :
|
||||
"No Error");
|
||||
fprintf(stdout, "Response: %d\n", status);
|
||||
fprintf(stdout, "Result: %d bytes\n%s\n", [data length], [result UTF8String]);
|
||||
fprintf(stdout, "Result: %lu bytes\n%s\n", [data length], [result UTF8String]);
|
||||
|
||||
[result release];
|
||||
[ul release];
|
||||
|
@ -173,8 +173,8 @@ SetupOptions(int argc, const char *argv[], Options *options) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
options->symbolsPath = [NSString stringWithCString:argv[optind]];
|
||||
options->uploadURLStr = [NSString stringWithCString:argv[optind + 1]];
|
||||
options->symbolsPath = [NSString stringWithUTF8String:argv[optind]];
|
||||
options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]];
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 42;
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
8B31022C11F0CEBD00FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
|
||||
8DD76F9A0486AA7600D96B5E /* symupload.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* symupload.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
|
||||
9BC1D49E0B37427A00F2A2B4 /* minidump_upload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD836000B0544BA0055103E /* minidump_upload.m */; };
|
||||
|
@ -31,6 +32,9 @@
|
|||
/* Begin PBXFileReference section */
|
||||
08FB7796FE84155DC02AAC07 /* symupload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = symupload.m; sourceTree = "<group>"; };
|
||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
8B31022B11F0CE6900FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B3102B611F0D5CE00FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8B3102B711F0D5CE00FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
8DD76FA10486AA7600D96B5E /* symupload */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = symupload; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9BD833680B03E4080055103E /* HTTPMultipartUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPMultipartUpload.h; path = ../../../common/mac/HTTPMultipartUpload.h; sourceTree = "<group>"; };
|
||||
9BD833690B03E4080055103E /* HTTPMultipartUpload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPMultipartUpload.m; path = ../../../common/mac/HTTPMultipartUpload.m; sourceTree = "<group>"; };
|
||||
|
@ -51,6 +55,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8B31022C11F0CEBD00FCF3E4 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -60,6 +65,9 @@
|
|||
08FB7794FE84155DC02AAC07 /* symupload */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B31022B11F0CE6900FCF3E4 /* Breakpad.xcconfig */,
|
||||
8B3102B611F0D5CE00FCF3E4 /* BreakpadDebug.xcconfig */,
|
||||
8B3102B711F0D5CE00FCF3E4 /* BreakpadRelease.xcconfig */,
|
||||
08FB7796FE84155DC02AAC07 /* symupload.m */,
|
||||
9BD836000B0544BA0055103E /* minidump_upload.m */,
|
||||
9BD833680B03E4080055103E /* HTTPMultipartUpload.h */,
|
||||
|
@ -130,9 +138,11 @@
|
|||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "symupload" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* symupload */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8DD76F960486AA7600D96B5E /* symupload */,
|
||||
9BD835FA0B0544950055103E /* minidump_upload */,
|
||||
|
@ -165,105 +175,46 @@
|
|||
1DEB927508733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
PRODUCT_NAME = symupload;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927608733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
);
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
PRODUCT_NAME = symupload;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1DEB927908733DD40010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8B3102B611F0D5CE00FCF3E4 /* BreakpadDebug.xcconfig */;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB927A08733DD40010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8B3102B711F0D5CE00FCF3E4 /* BreakpadRelease.xcconfig */;
|
||||
buildSettings = {
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
9BD836030B0544BB0055103E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
AppKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = minidump_upload;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../**";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
9BD836040B0544BB0055103E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
|
||||
INSTALL_PATH = "$(HOME)/bin";
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
Foundation,
|
||||
"-framework",
|
||||
AppKit,
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = minidump_upload;
|
||||
USER_HEADER_SEARCH_PATHS = "../../../**";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue