| Index: class-dump/src/CDLCSegment64.m
|
| ===================================================================
|
| --- class-dump/src/CDLCSegment64.m (revision 0)
|
| +++ class-dump/src/CDLCSegment64.m (revision 0)
|
| @@ -0,0 +1,105 @@
|
| +// -*- mode: ObjC -*-
|
| +
|
| +// This file is part of class-dump, a utility for examining the Objective-C segment of Mach-O files.
|
| +// Copyright (C) 1997-1998, 2000-2001, 2004-2010 Steve Nygard.
|
| +
|
| +#import "CDLCSegment64.h"
|
| +
|
| +#import "CDSection64.h"
|
| +#import "CDDataCursor.h"
|
| +
|
| +@implementation CDLCSegment64
|
| +
|
| +- (id)initWithDataCursor:(CDDataCursor *)cursor machOFile:(CDMachOFile *)aMachOFile;
|
| +{
|
| + if ([super initWithDataCursor:cursor machOFile:aMachOFile] == nil)
|
| + return nil;
|
| +
|
| + segmentCommand.cmd = [cursor readInt32];
|
| + segmentCommand.cmdsize = [cursor readInt32];
|
| +
|
| + [cursor readBytesOfLength:16 intoBuffer:segmentCommand.segname];
|
| + segmentCommand.vmaddr = [cursor readInt64];
|
| + segmentCommand.vmsize = [cursor readInt64];
|
| + segmentCommand.fileoff = [cursor readInt64];
|
| + segmentCommand.filesize = [cursor readInt64];
|
| + segmentCommand.maxprot = [cursor readInt32];
|
| + segmentCommand.initprot = [cursor readInt32];
|
| + segmentCommand.nsects = [cursor readInt32];
|
| + segmentCommand.flags = [cursor readInt32];
|
| +
|
| + {
|
| + char buf[17];
|
| + NSString *str;
|
| +
|
| + memcpy(buf, segmentCommand.segname, 16);
|
| + buf[16] = 0;
|
| + str = [[NSString alloc] initWithBytes:buf length:strlen(buf) encoding:NSASCIIStringEncoding];
|
| + if ([str length] >= 16) {
|
| + NSLog(@"Notice: segment '%@' has length >= 16, which means it's not always null terminated.", str);
|
| + }
|
| + [self setName:str];
|
| + [str release];
|
| + }
|
| +
|
| + {
|
| + unsigned int index;
|
| +
|
| + for (index = 0; index < segmentCommand.nsects; index++) {
|
| + CDSection64 *section;
|
| +
|
| + section = [[CDSection64 alloc] initWithDataCursor:cursor segment:self];
|
| + [sections addObject:section];
|
| + [section release];
|
| + }
|
| + }
|
| +
|
| + return self;
|
| +}
|
| +
|
| +- (uint32_t)cmd;
|
| +{
|
| + return segmentCommand.cmd;
|
| +}
|
| +
|
| +- (uint32_t)cmdsize;
|
| +{
|
| + return segmentCommand.cmdsize;
|
| +}
|
| +
|
| +- (NSUInteger)vmaddr;
|
| +{
|
| + return segmentCommand.vmaddr;
|
| +}
|
| +
|
| +- (NSUInteger)fileoff;
|
| +{
|
| + return segmentCommand.fileoff;
|
| +}
|
| +
|
| +- (NSUInteger)filesize;
|
| +{
|
| + return segmentCommand.filesize;
|
| +}
|
| +
|
| +- (vm_prot_t)initprot;
|
| +{
|
| + return segmentCommand.initprot;
|
| +}
|
| +
|
| +- (uint32_t)flags;
|
| +{
|
| + return segmentCommand.flags;
|
| +}
|
| +
|
| +- (BOOL)containsAddress:(NSUInteger)address;
|
| +{
|
| + return (address >= segmentCommand.vmaddr) && (address < segmentCommand.vmaddr + segmentCommand.vmsize);
|
| +}
|
| +
|
| +- (NSString *)extraDescription;
|
| +{
|
| + return [NSString stringWithFormat:@"addr: 0x%016lx", [self vmaddr]];
|
| +}
|
| +
|
| +@end
|
|
|
| Property changes on: class-dump/src/CDLCSegment64.m
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|