Skip to content

Commit d06c5c7

Browse files
author
Mike Richter
committed
Remove unnecessary debugging code #19525
1 parent 40dabf1 commit d06c5c7

8 files changed

Lines changed: 21 additions & 116 deletions

Source/CDMachOFile.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ typedef enum : NSUInteger {
5555
- (CDLCSegment *)segmentWithName:(NSString *)segmentName;
5656
- (CDLCSegment *)segmentContainingAddress:(NSUInteger)address;
5757
- (NSString *)stringAtAddress:(NSUInteger)address;
58-
- (NSString *)stringAtAddress2:(NSUInteger)address;
5958

6059
- (NSUInteger)dataOffsetForAddress:(NSUInteger)address;
6160

Source/CDMachOFile.m

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -352,65 +352,11 @@ - (NSString *)stringAtAddress:(NSUInteger)address;
352352
if (offset == 0)
353353
return nil;
354354

355+
// Support small methods referencing selector names in __objc_selrefs.
355356
CDSection *section = [segment sectionContainingAddress:address];
356357
if ([[section sectionName] isEqualToString:@"__objc_selrefs"]) {
357-
NSLog(@"large method reference (0x%016lx) into __objc_selrefs!", address);
358-
}
359-
360-
ptr = (uint8_t *)[self.data bytes] + offset;
361-
362-
return [[NSString alloc] initWithBytes:ptr length:strlen(ptr) encoding:NSASCIIStringEncoding];
363-
}
364-
365-
- (NSString *)stringAtAddress2:(NSUInteger)address;
366-
{
367-
const void *ptr;
368-
369-
if (address == 0)
370-
return nil;
371-
372-
CDLCSegment *segment = [self segmentContainingAddress:address];
373-
if (segment == nil) {
374-
NSLog(@"Error: Cannot find offset for address 0x%08lx in stringAtAddress:", address);
375-
exit(5);
376-
return nil;
377-
}
378-
379-
if ([segment isProtected]) {
380-
NSData *d2 = [segment decryptedData];
381-
NSUInteger d2Offset = [segment segmentOffsetForAddress:address];
382-
if (d2Offset == 0)
383-
return nil;
384-
385-
ptr = (uint8_t *)[d2 bytes] + d2Offset;
386-
return [[NSString alloc] initWithBytes:ptr length:strlen(ptr) encoding:NSASCIIStringEncoding];
387-
}
388-
389-
NSUInteger offset = [self dataOffsetForAddress:address];
390-
if (offset == 0)
391-
return nil;
392-
393-
CDSection *section = [segment sectionContainingAddress:address];
394-
if ([[section sectionName] isEqualToString:@"__objc_selrefs"]) {
395-
// int pointerSize = (int)[self ptrSize];
396-
// int numberOfBytes = pointerSize;//([section alignment] == 8) ? 8 : 4;
397-
// if ((1 << [section alignment]) != pointerSize) {
398-
// NSLog(@"__objc_selrefs with alignment of %lu and pointerSize of %d!", (unsigned long)[section alignment], pointerSize);
399-
// }
400-
// const void * reference = [self.data bytes] + offset;
401-
// uint64_t referencedAddress = 0ULL;
402-
// for (int index = 0; index < numberOfBytes; index++) {
403-
// referencedAddress |= ((uint64_t)bytes[index]) << (index * 8);
404-
// }
405-
406358
const void * reference = [self.data bytes] + offset;
407359
offset = ([self ptrSize] == 8) ? *((uint64_t *)reference) : *((uint32_t *)reference);
408-
409-
// This is probably not the right translation: how do we know that this address is correct, does it need to go through dataOffsetForAddress?
410-
// ptr = (uint8_t *)([self.data bytes] + selectorOffset);
411-
// } else {
412-
// NSLog(@"small method pointer into %@ section!", [section sectionName]);
413-
// ptr = (uint8_t *)[self.data bytes] + offset;
414360
}
415361

416362
ptr = (uint8_t *)[self.data bytes] + offset;

Source/CDMachOFileDataCursor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828

2929
// Read using the current byteOrder and ptrSize (from the machOFile)
3030
- (uint64_t)readPtr;
31-
- (uint64_t)readSmallPtr:(uint64_t)base;
31+
- (uint64_t)readPtr:(bool)small;
3232

3333
@end

Source/CDMachOFileDataCursor.m

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,15 @@ - (uint64_t)readPtr;
110110
return 0;
111111
}
112112

113-
- (uint64_t)readSmallPtr:(uint64_t)base;
113+
- (uint64_t)readPtr:(bool)small;
114114
{
115-
uint64_t offsetIntoFile = [self offset];
116-
int32_t offset = [self readInt32];
117-
return (uint64_t)((int64_t)(offsetIntoFile) + offset);
118-
// return (uint64_t)((int64_t)(base) + offset);
119-
//return (uint64_t)(uint32_t)[self readInt32];
115+
// "small" pointers are signed 32-bit values
116+
if (small) {
117+
// The pointers are relative to the location in the image, so get the offset before reading the offset:
118+
return [self offset] + [self readInt32];
119+
} else {
120+
return [self readPtr];
121+
}
120122
}
121123

122124
@end

Source/CDObjectiveC2Processor.m

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -400,17 +400,11 @@ - (NSArray *)loadMethodsAtAddress:(uint64_t)address;
400400
}
401401

402402
- (NSArray *)loadMethodsAtAddress:(uint64_t)address extendedMethodTypesCursor:(CDMachOFileDataCursor *)extendedMethodTypesCursor;
403-
{
404-
return [self loadMethodsAtAddress:address extendedMethodTypesCursor:extendedMethodTypesCursor base:0ULL];
405-
}
406-
407-
- (NSArray *)loadMethodsAtAddress:(uint64_t)address extendedMethodTypesCursor:(CDMachOFileDataCursor *)extendedMethodTypesCursor base:(uint64_t)base;
408403
{
409404
NSMutableArray *methods = [NSMutableArray array];
410405

411406
if (address != 0) {
412407
CDMachOFileDataCursor *cursor = [[CDMachOFileDataCursor alloc] initWithFile:self.machOFile address:address];
413-
NSLog(@"initial offset 0x%016lx address 0x%016llx", [cursor offset], address);
414408
NSParameterAssert([cursor offset] != 0);
415409
//NSLog(@"method list data offset: %lu", [cursor offset]);
416410

@@ -419,60 +413,31 @@ - (NSArray *)loadMethodsAtAddress:(uint64_t)address extendedMethodTypesCursor:(C
419413
// See https://opensource.apple.com/source/objc4/objc4-787.1/runtime/objc-runtime-new.h
420414
uint32_t value = [cursor readInt32];
421415
listHeader.entsize = value & ~METHOD_LIST_T_ENTSIZE_MASK;
422-
int smallMethodPointers = (value & METHOD_LIST_T_SMALL_METHOD_FLAG) != 0;
416+
bool small = (value & METHOD_LIST_T_SMALL_METHOD_FLAG) != 0;
423417
listHeader.count = [cursor readInt32];
424-
NSParameterAssert(listHeader.entsize == 3 * (smallMethodPointers ? sizeof(int32_t) : [self.machOFile ptrSize]));
425-
426-
uint64_t min1 = 0xFFFFFFFFFFFFFFFFULL;
427-
uint64_t max1 = 0ULL;
428-
uint64_t min2 = 0xFFFFFFFFFFFFFFFFULL;
429-
uint64_t max2 = 0ULL;
430-
uint64_t min3 = 0xFFFFFFFFFFFFFFFFULL;
431-
uint64_t max3 = 0ULL;
432-
uint64_t val2;
418+
NSParameterAssert(listHeader.entsize == 3 * (small ? sizeof(int32_t) : [self.machOFile ptrSize]));
433419

434420
for (uint32_t index = 0; index < listHeader.count; index++) {
435421
struct cd_objc2_method objc2Method;
436-
uint64_t offset = [cursor offset];
437-
if (smallMethodPointers) {
438-
val2 = [cursor readSmallPtr:address]; if (val2 < min1) min1 = val2; if (val2 > max1) max1 = val2;
439-
objc2Method.name = val2;
440-
val2 = [cursor readSmallPtr:address]; if (val2 < min2) min2 = val2; if (val2 > max2) max2 = val2;
441-
objc2Method.types = val2;
442-
val2 = [cursor readSmallPtr:address]; if (val2 < min3) min3 = val2; if (val2 > max3) max3 = val2;
443-
objc2Method.imp = val2;
444-
// NSLog(@"values12f: 0x%016llx 0x%016llx 0x%016llx", objc2Method.name, objc2Method.types, objc2Method.imp);
445-
// NSLog(@"values12: 0x%08x 0x%08x 0x%08x", value1, value2, value3);
446-
} else {
447-
objc2Method.name = [cursor readPtr];
448-
objc2Method.types = [cursor readPtr];
449-
objc2Method.imp = [cursor readPtr];
450-
}
451-
NSString *name;
452-
if (smallMethodPointers) {
453-
name = [self.machOFile stringAtAddress2:objc2Method.name];
454-
NSLog(@"small name: %@", name);
455-
} else {
456-
name = [self.machOFile stringAtAddress:objc2Method.name];
457-
}
422+
423+
objc2Method.name = [cursor readPtr:small];
424+
objc2Method.types = [cursor readPtr:small];
425+
objc2Method.imp = [cursor readPtr:small];
426+
NSString *name = [self.machOFile stringAtAddress:objc2Method.name];
458427
NSString *types = [self.machOFile stringAtAddress:objc2Method.types];
459428

460429
if (extendedMethodTypesCursor) {
461430
uint64_t extendedMethodTypes = [extendedMethodTypesCursor readPtr];
462431
types = [self.machOFile stringAtAddress:extendedMethodTypes];
463432
}
464433

465-
// NSLog(@"%s%3u: 0x%016llx 0x%016llx 0x%016llx 0x%016llx 0x%016llx", (smallMethodPointers ? "small " : ""), index, objc2Method.name, objc2Method.types, objc2Method.imp, offset, address);
466-
// NSLog(@"name: %@", name);
467-
// NSLog(@"types: %@", types);
434+
//NSLog(@"%3u: %016llx %016llx %016llx", index, objc2Method.name, objc2Method.types, objc2Method.imp);
435+
//NSLog(@"name: %@", name);
436+
//NSLog(@"types: %@", types);
468437

469438
CDOCMethod *method = [[CDOCMethod alloc] initWithName:name typeString:types address:objc2Method.imp];
470439
[methods addObject:method];
471440
}
472-
473-
// if (smallMethodPointers) {
474-
// NSLog(@"Small method range: 0x%016llx 0x%016llx 0x%016llx 0x%016llx 0x%016llx 0x%016llx", min1, max1, min2, max2, min3, max3);
475-
// }
476441
}
477442

478443
return [methods reversedArray];
@@ -485,7 +450,7 @@ - (NSArray *)loadIvarsAtAddress:(uint64_t)address;
485450
if (address != 0) {
486451
CDMachOFileDataCursor *cursor = [[CDMachOFileDataCursor alloc] initWithFile:self.machOFile address:address];
487452
NSParameterAssert([cursor offset] != 0);
488-
// NSLog(@"ivar list data offset: %lu", [cursor offset]);
453+
//NSLog(@"ivar list data offset: %lu", [cursor offset]);
489454

490455
struct cd_objc2_list_header listHeader;
491456

Source/CDObjectiveCProcessor.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ - (void)addCategory:(CDOCCategory *)category;
139139
- (int)process;
140140
{
141141
if (self.machOFile.isEncrypted == NO && self.machOFile.canDecryptAllSegments) {
142-
NSLog(@"Loading file %@", [[self machOFile] filename]);
143142
[self.machOFile.symbolTable loadSymbols];
144143
[self.machOFile.dynamicSymbolTable loadSymbols];
145144

Source/CDSection.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
@property (nonatomic, readonly) NSUInteger addr;
2121
@property (nonatomic, readonly) NSUInteger size;
22-
@property (nonatomic, readonly) NSUInteger alignment;
2322

2423
- (BOOL)containsAddress:(NSUInteger)address;
2524
- (NSUInteger)fileOffsetForAddress:(NSUInteger)address;

Source/CDSection.m

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,6 @@ - (NSUInteger)size;
6868
return _section.size;
6969
}
7070

71-
- (NSUInteger)alignment;
72-
{
73-
return _section.align;
74-
}
75-
7671
- (BOOL)containsAddress:(NSUInteger)address;
7772
{
7873
return (address >= _section.addr) && (address < _section.addr + _section.size);

0 commit comments

Comments
 (0)