Modified src/OFDNSResolver.m
from [8ca7344c81]
to [ff5044c80c].
︙ | | |
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
|
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
|
-
+
|
{
void *pool = objc_autoreleasePoolPush();
OFNumber *ID;
OFDNSResolverContext *context;
/* Random, unused ID */
do {
ID = [OFNumber numberWithUnsignedShort: of_random16()];
ID = [OFNumber numberWithUnsignedShort: OFRandom16()];
} while ([_queries objectForKey: ID] != nil);
if (query.domainName.UTF8StringLength > 253)
@throw [OFOutOfRangeException exception];
if (_settings->_nameServers.count == 0) {
id exception = [OFDNSQueryFailedException
|
︙ | | |
Modified src/OFMapTable.m
from [717a250a20]
to [a5b94365d5].
︙ | | |
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
-
-
+
+
|
_capacity *= 2;
if (_capacity < MIN_CAPACITY)
_capacity = MIN_CAPACITY;
_buckets = OFAllocZeroedMemory(_capacity, sizeof(*_buckets));
if (of_hash_seed != 0)
_rotate = of_random16() & 31;
if (OFHashSeed != 0)
_rotate = OFRandom16() & 31;
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
|
︙ | | |
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
|
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
|
-
-
+
+
|
_capacity = MIN_CAPACITY;
_buckets = OFResizeMemory(_buckets, _capacity, sizeof(*_buckets));
/*
* Get a new random value for _rotate, so that it is not less secure
* than creating a new hash map.
*/
if (of_hash_seed != 0)
_rotate = of_random16() & 31;
if (OFHashSeed != 0)
_rotate = OFRandom16() & 31;
}
- (bool)containsObject: (void *)object
{
if (object == NULL || _count == 0)
return false;
|
︙ | | |
Modified src/OFObject.h
from [92e7aec20e]
to [8dbb8236a1].
︙ | | |
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
|
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
|
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
extern void objc_autoreleasePoolPop(void *_Null_unspecified pool);
# ifndef __OBJC2__
extern id _Nullable objc_constructInstance(Class _Nullable class_,
void *_Nullable bytes);
extern void *_Nullable objc_destructInstance(id _Nullable object);
# endif
#endif
extern id of_alloc_object(Class class_, size_t extraSize,
size_t extraAlignment, void *_Nullable *_Nullable extra);
extern void OF_NO_RETURN_FUNC of_method_not_found(id self, SEL _cmd);
extern uint32_t of_hash_seed;
/* These do *NOT* provide cryptographically secure randomness! */
extern uint16_t of_random16(void);
extern uint32_t of_random32(void);
extern uint64_t of_random64(void);
extern id OFAllocObject(Class class_, size_t extraSize, size_t extraAlignment,
void *_Nullable *_Nullable extra);
extern void OF_NO_RETURN_FUNC OFMethodNotFound(id self, SEL _cmd);
extern uint32_t OFHashSeed;
/**
* @brief Returns 16 bit or non-cryptographical randomness.
*
* @return 16 bit or non-cryptographical randomness
*/
extern uint16_t OFRandom16(void);
/**
* @brief Returns 32 bit or non-cryptographical randomness.
*
* @return 32 bit or non-cryptographical randomness
*/
extern uint32_t OFRandom32(void);
/**
* @brief Returns 64 bit or non-cryptographical randomness.
*
* @return 64 bit or non-cryptographical randomness
*/
extern uint64_t OFRandom64(void);
#ifdef __cplusplus
}
#endif
OF_ASSUME_NONNULL_END
#include "OFBlock.h"
|
︙ | | |
Modified src/OFObject.m
from [540c546a9d]
to [5faecbc421].
︙ | | |
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
-
-
+
+
-
-
+
+
-
+
|
# import "mutex.h"
#endif
#ifdef OF_APPLE_RUNTIME
extern id _Nullable _objc_rootAutorelease(id _Nullable object);
#endif
#if defined(OF_HAVE_FORWARDING_TARGET_FOR_SELECTOR)
extern id of_forward(id, SEL, ...);
extern struct stret of_forward_stret(id, SEL, ...);
extern id OFForward(id, SEL, ...);
extern struct stret OFForward_stret(id, SEL, ...);
#else
# define of_forward of_method_not_found
# define of_forward_stret of_method_not_found_stret
# define OFForward OFMethodNotFound
# define OFForward_stret OFMethodNotFound_stret
#endif
struct pre_ivar {
int retainCount;
#if !defined(OF_HAVE_ATOMIC_OPS) && !defined(OF_AMIGAOS)
OFSpinlock retainCountSpinlock;
#endif
};
#define PRE_IVARS_ALIGN ((sizeof(struct pre_ivar) + \
(OF_BIGGEST_ALIGNMENT - 1)) & ~(OF_BIGGEST_ALIGNMENT - 1))
#define PRE_IVARS ((struct pre_ivar *)(void *)((char *)self - PRE_IVARS_ALIGN))
static struct {
Class isa;
} allocFailedException;
uint32_t of_hash_seed;
uint32_t OFHashSeed;
void *
OFAllocMemory(size_t count, size_t size)
{
void *pointer;
if OF_UNLIKELY (count == 0 || size == 0)
|
︙ | | |
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
-
+
|
gettimeofday(&tv, NULL);
srand((unsigned)(tv.tv_sec ^ tv.tv_usec));
# endif
}
#endif
uint16_t
of_random16(void)
OFRandom16(void)
{
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#elif defined(HAVE_GETRANDOM)
uint16_t buffer;
OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
|
︙ | | |
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
-
+
-
+
-
+
-
+
|
# else
return rand() & 0xFFFF;
# endif
#endif
}
uint32_t
of_random32(void)
OFRandom32(void)
{
#if defined(HAVE_ARC4RANDOM)
return arc4random();
#elif defined(HAVE_GETRANDOM)
uint32_t buffer;
OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
return ((uint32_t)of_random16() << 16) | of_random16();
return ((uint32_t)OFRandom16() << 16) | OFRandom16();
#endif
}
uint64_t
of_random64(void)
OFRandom64(void)
{
#if defined(HAVE_ARC4RANDOM_BUF)
uint64_t buffer;
arc4random_buf(&buffer, sizeof(buffer));
return buffer;
#elif defined(HAVE_GETRANDOM)
uint64_t buffer;
OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));
return buffer;
#else
return ((uint64_t)of_random32() << 32) | of_random32();
return ((uint64_t)OFRandom32() << 32) | OFRandom32();
#endif
}
static const char *
typeEncodingForSelector(Class class, SEL selector)
{
Method method;
|
︙ | | |
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
-
+
-
+
-
+
-
+
|
static void
enumerationMutationHandler(id object)
{
@throw [OFEnumerationMutationException exceptionWithObject: object];
}
void OF_NO_RETURN_FUNC
of_method_not_found(id object, SEL selector)
OFMethodNotFound(id object, SEL selector)
{
[object doesNotRecognizeSelector: selector];
/*
* Just in case doesNotRecognizeSelector: returned, even though it must
* never return.
*/
abort();
OF_UNREACHABLE
}
void OF_NO_RETURN_FUNC
of_method_not_found_stret(void *stret, id object, SEL selector)
OFMethodNotFound_stret(void *stret, id object, SEL selector)
{
of_method_not_found(object, selector);
OFMethodNotFound(object, selector);
}
id
of_alloc_object(Class class, size_t extraSize, size_t extraAlignment,
OFAllocObject(Class class, size_t extraSize, size_t extraAlignment,
void **extra)
{
OFObject *instance;
size_t instanceSize;
instanceSize = class_getInstanceSize(class);
|
︙ | | |
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
|
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
|
-
-
+
+
-
+
-
-
+
+
-
+
-
+
|
* handler on load, we should not set ours, as this will break
* Foundation.
*
* Unfortunately, there is no way to check if a forward handler has
* already been set, so this is the best we can do.
*/
if (dlsym(RTLD_DEFAULT, "NSFoundationVersionNumber") == NULL)
objc_setForwardHandler((void *)&of_forward,
(void *)&of_forward_stret);
objc_setForwardHandler((void *)&OFForward,
(void *)&OFForward_stret);
#else
objc_setForwardHandler((IMP)&of_forward, (IMP)&of_forward_stret);
objc_setForwardHandler((IMP)&OFForward, (IMP)&OFForward_stret);
#endif
objc_setEnumerationMutationHandler(enumerationMutationHandler);
do {
of_hash_seed = of_random32();
} while (of_hash_seed == 0);
OFHashSeed = OFRandom32();
} while (OFHashSeed == 0);
#ifdef OF_OBJFW_RUNTIME
objc_setTaggedPointerSecret(sizeof(uintptr_t) == 4
? (uintptr_t)of_random32() : (uintptr_t)of_random64());
? (uintptr_t)OFRandom32() : (uintptr_t)OFRandom64());
#endif
}
+ (void)unload
{
}
+ (void)initialize
{
}
+ (instancetype)alloc
{
return of_alloc_object(self, 0, 0, NULL);
return OFAllocObject(self, 0, 0, NULL);
}
+ (instancetype)new
{
return [[self alloc] init];
}
|
︙ | | |
Modified src/OFString.m
from [3a78b74cc9]
to [723276e5f7].
︙ | | |
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
|
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
|
-
+
-
+
|
- (instancetype)initWithUTF8String: (const char *)UTF8String
{
OFUTF8String *string;
size_t length;
void *storage;
length = strlen(UTF8String);
string = of_alloc_object([OFUTF8String class], length + 1, 1, &storage);
string = OFAllocObject([OFUTF8String class], length + 1, 1, &storage);
return (id)[string of_initWithUTF8String: UTF8String
length: length
storage: storage];
}
- (instancetype)initWithUTF8String: (const char *)UTF8String
length: (size_t)UTF8StringLength
{
OFUTF8String *string;
void *storage;
string = of_alloc_object([OFUTF8String class], UTF8StringLength + 1, 1,
string = OFAllocObject([OFUTF8String class], UTF8StringLength + 1, 1,
&storage);
return (id)[string of_initWithUTF8String: UTF8String
length: UTF8StringLength
storage: storage];
}
|
︙ | | |
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
|
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
|
-
+
-
-
+
+
|
{
if (encoding == OFStringEncodingUTF8) {
OFUTF8String *string;
size_t length;
void *storage;
length = strlen(cString);
string = of_alloc_object([OFUTF8String class], length + 1, 1,
string = OFAllocObject([OFUTF8String class], length + 1, 1,
&storage);
return (id)[string of_initWithUTF8String: cString
length: length
storage: storage];
}
return (id)[[OFUTF8String alloc] initWithCString: cString
encoding: encoding];
}
- (instancetype)initWithCString: (const char *)cString
encoding: (OFStringEncoding)encoding
length: (size_t)cStringLength
{
if (encoding == OFStringEncodingUTF8) {
OFUTF8String *string;
void *storage;
string = of_alloc_object([OFUTF8String class],
cStringLength + 1, 1, &storage);
string = OFAllocObject([OFUTF8String class], cStringLength + 1,
1, &storage);
return (id)[string of_initWithUTF8String: cString
length: cStringLength
storage: storage];
}
return (id)[[OFUTF8String alloc] initWithCString: cString
|
︙ | | |
Modified src/forwarding/apple-forwarding-arm.S
from [818da0b02a]
to [909cff10e5].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-
-
+
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __objc_methname, cstring_literals
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section __DATA, __objc_selrefs, literal_pointers, no_dead_strip
sel_forwardingTargetForSelector_:
.long str_forwardingTargetForSelector_
.section __DATA, __objc_imageinfo, regular, no_dead_strip
.long 0, 0
.section __TEXT, __text, regular, pure_instructions
.arm
.align 2
_of_forward:
_OFForward:
stmfd sp!, {r0-r4, lr}
vstmdb sp!, {d0-d7}
ldr r4, sel_forwardingTargetForSelector_$indirect_L0
L0:
ldr r4, [pc, r4]
|
︙ | | |
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
-
+
-
+
|
ldmfd sp!, {r1-r4, lr}
b _objc_msgSend
0:
vldmia sp!, {d0-d7}
ldmfd sp!, {r0-r4, lr}
b _of_method_not_found
b _OFMethodNotFound
.data_region
sel_forwardingTargetForSelector_$indirect_L0:
.long sel_forwardingTargetForSelector_-(L0+8)
.end_data_region
.align 2
_of_forward_stret:
_OFForward_stret:
stmfd sp!, {r0-r4, lr}
vstmdb sp!, {d0-d7}
ldr r4, sel_forwardingTargetForSelector_$indirect_L1
L1:
ldr r4, [pc, r4]
|
︙ | | |
112
113
114
115
116
117
118
119
120
121
122
123
124
|
112
113
114
115
116
117
118
119
120
121
122
123
124
|
-
+
|
ldmfd sp!, {r2-r4, lr}
b _objc_msgSend_stret
0:
vldmia sp!, {d0-d7}
ldmfd sp!, {r0-r4, lr}
b _of_method_not_found_stret
b _OFMethodNotFound_stret
.data_region
sel_forwardingTargetForSelector_$indirect_L1:
.long sel_forwardingTargetForSelector_-(L1+8)
.end_data_region
|
Modified src/forwarding/apple-forwarding-arm64.S
from [a5ded6a46a]
to [9cba63c991].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
-
-
+
+
-
-
+
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __objc_methname, cstring_literals
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section __DATA, __objc_selrefs, literal_pointers, no_dead_strip
sel_forwardingTargetForSelector_:
.quad str_forwardingTargetForSelector_
.section __DATA, __objc_imageinfo, regular, no_dead_strip
.long 0, 0
.section __TEXT, __text, regular, pure_instructions
.align 2
_of_forward:
_of_forward_stret:
_OFForward:
_OFForward_stret:
stp fp, lr, [sp, #-208]!
mov fp, sp
sub sp, sp, #208
/* Save all arguments, x8 and x19 */
stp x0, x1, [sp]
stp x2, x3, [sp, #16]
|
︙ | | |
91
92
93
94
95
96
97
98
|
91
92
93
94
95
96
97
98
|
-
+
|
0:
ldp x0, x1, [sp]
ldr x19, [sp, #72]
mov sp, fp
ldp fp, lr, [sp], #208
b _of_method_not_found
b _OFMethodNotFound
|
Modified src/forwarding/apple-forwarding-i386.S
from [8365ab0d59]
to [8720a29870].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
-
-
+
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __cstring, cstring_literals
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section __OBJC, __message_refs, literal_pointers, no_dead_strip
sel_forwardingTargetForSelector_:
.long str_forwardingTargetForSelector_
.section __OBJC, __image_info
.long 0, 0
.section __TEXT, __text, regular, pure_instructions
_of_forward:
_OFForward:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call get_eip
|
︙ | | |
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
-
+
-
+
|
jmp _objc_msgSend
0:
addl $20, %esp
popl %ebx
popl %ebp
jmp _of_method_not_found
jmp _OFMethodNotFound
_of_forward_stret:
_OFForward_stret:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call get_eip
|
︙ | | |
124
125
126
127
128
129
130
131
132
133
134
135
|
124
125
126
127
128
129
130
131
132
133
134
135
|
-
+
|
jmp _objc_msgSend_stret
0:
addl $20, %esp
popl %ebx
popl %ebp
jmp _of_method_not_found_stret
jmp _OFMethodNotFound_stret
get_eip:
movl (%esp), %ebx
ret
|
Modified src/forwarding/apple-forwarding-powerpc.S
from [caae32d345]
to [df92748799].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
-
-
+
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __cstring, cstring_literals
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section __OBJC, __message_refs
sel_forwardingTargetForSelector_:
.long str_forwardingTargetForSelector_
.section __OBJC, __image_info
.long 0, 0
.section __TEXT, __text, regular, pure_instructions
_of_forward:
_OFForward:
mflr r0
stw r0, 8(r1)
stwu r1, -192(r1)
/*
* Save all arguments and r13.
*
|
︙ | | |
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
-
+
-
+
|
lwz r3, 216(r1)
lwz r4, 220(r1)
addi r1, r1, 192
lwz r0, 8(r1)
mtlr r0
b _of_method_not_found
b _OFMethodNotFound
_of_forward_stret:
_OFForward_stret:
mflr r0
stw r0, 8(r1)
stwu r1, -184(r1)
/*
* Save all arguments and r13.
*
|
︙ | | |
232
233
234
235
236
237
238
239
|
232
233
234
235
236
237
238
239
|
-
+
|
lwz r4, 212(r1)
lwz r5, 216(r1)
addi r1, r1, 184
lwz r0, 8(r1)
mtlr r0
b _of_method_not_found_stret
b _OFMethodNotFound_stret
|
Modified src/forwarding/apple-forwarding-x86_64.S
from [65a4d4b99a]
to [0da6f95099].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
-
-
+
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __objc_methname, cstring_literals
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section __DATA, __objc_selrefs, literal_pointers, no_dead_strip
sel_forwardingTargetForSelector_:
.quad str_forwardingTargetForSelector_
.section __DATA, __objc_imageinfo, regular, no_dead_strip
.long 0, 0
.section __TEXT, __text, regular, pure_instructions
_of_forward:
_OFForward:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0xC0, %rsp /* 16-byte alignment */
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
|
︙ | | |
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
-
+
-
+
|
0:
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq %rbp, %rsp
popq %rbp
jmp _of_method_not_found
jmp _OFMethodNotFound
_of_forward_stret:
_OFForward_stret:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0xC0, %rsp /* 16-byte alignment */
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
|
︙ | | |
171
172
173
174
175
176
177
178
|
171
172
173
174
175
176
177
178
|
-
+
|
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq %rbp, %rsp
popq %rbp
jmp _of_method_not_found_stret
jmp _OFMethodNotFound_stret
|
Modified src/forwarding/forwarding-arm-elf.S
from [cf76c10b12]
to [9186955894].
︙ | | |
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
-
-
+
+
-
+
|
#include "platform.h"
#ifdef HAVE_VFP2
.fpu vfp
#endif
.globl of_forward
.globl of_forward_stret
.globl OFForward
.globl OFForward_stret
.section .text
of_forward:
OFForward:
#ifdef HAVE_VFP2
vstmdb sp!, {d0-d7}
#endif
stmfd sp!, {r0-r4, lr}
ldr r4, sel_forwardingTargetForSelector_$indirect_.L0
.L0:
|
︙ | | |
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
-
-
-
+
+
+
-
+
|
bx r12
0:
ldmfd sp!, {r0-r4, lr}
#ifdef HAVE_VFP2
vldmia sp!, {d0-d7}
#endif
b of_method_not_found(PLT)
.type of_forward, %function
.size of_forward, .-of_forward
b OFMethodNotFound(PLT)
.type OFForward, %function
.size OFForward, .-OFForward
of_forward_stret:
OFForward_stret:
#ifdef HAVE_VFP2
vstmdb sp!, {d0-d7}
#endif
stmfd sp!, {r0-r4, lr}
ldr r4, sel_forwardingTargetForSelector_$indirect_.L1
.L1:
|
︙ | | |
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
-
-
-
+
+
+
|
bx r12
0:
ldmfd sp!, {r0-r4, lr}
#ifdef HAVE_VFP2
vldmia sp!, {d0-d7}
#endif
b of_method_not_found_stret(PLT)
.type of_forward_stret, %function
.size of_forward_stret, .-of_forward_stret
b OFMethodNotFound_stret(PLT)
.type OFForward_stret, %function
.size OFForward_stret, .-OFForward_stret
init:
ldr r0, module$indirect_.L2
.L2:
add r0, pc
b __objc_exec_class(PLT)
|
︙ | | |
Modified src/forwarding/forwarding-arm64-elf.S
from [8475d93bd5]
to [853844ab33].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
-
-
+
+
-
-
+
+
|
* file.
*/
#include "config.h"
#include "platform.h"
.globl of_forward
.globl of_forward_stret
.globl OFForward
.globl OFForward_stret
.section .text
of_forward:
of_forward_stret:
OFForward:
OFForward_stret:
stp fp, lr, [sp, #-208]!
mov fp, sp
sub sp, sp, #208
/* Save all arguments, x8 and x19 */
stp x0, x1, [sp]
stp x2, x3, [sp, #16]
|
︙ | | |
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
-
-
-
-
-
+
+
+
+
+
|
0:
ldp x0, x1, [sp]
ldr x19, [sp, #72]
mov sp, fp
ldp fp, lr, [sp], #208
b of_method_not_found
.type of_forward, %function
.size of_forward, .-of_forward
.type of_forward_stret, %function
.size of_forward_stret, .-of_forward_stret
b OFMethodNotFound
.type OFForward, %function
.size OFForward, .-OFForward
.type OFForward_stret, %function
.size OFForward_stret, .-OFForward_stret
init:
adrp x0, module
add x0, x0, :lo12:module
b __objc_exec_class
.section .init_array, "aw", %init_array
|
︙ | | |
Modified src/forwarding/forwarding-mips-elf.S
from [b9346e9fc8]
to [82117db4a0].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
-
+
+
-
+
|
* file.
*/
#include "config.h"
#include "platform.h"
.globl of_forward
.globl of_forward_stret
.globl OFForward
.globl OFForward_stret
#ifdef OF_PIC
.macro j_pic symbol
lw $t9, %call16(\symbol)($gp)
jr $t9
.endm
.macro jal_pic symbol
lw $t9, %call16(\symbol)($gp)
jalr $t9
.endm
#else
.macro j_pic symbol
j \symbol
.endm
.macro jal_pic symbol
jal \symbol
.endm
#endif
.section .text
of_forward:
OFForward:
#ifdef OF_PIC
lui $gp, %hi(_gp_disp)
addiu $gp, $gp, %lo(_gp_disp)
addu $gp, $gp, $t9
#endif
addiu $sp, $sp, -96
|
︙ | | |
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
-
-
+
+
-
+
|
lw $s1, 24($sp)
lw $s0, 20($sp)
lw $ra, 16($sp)
addiu $sp, $sp, 96
j_pic of_method_not_found
.type of_forward, %function
.size of_forward, .-of_forward
.type OFForward, %function
.size OFForward, .-OFForward
of_forward_stret:
OFForward_stret:
#ifdef OF_PIC
lui $gp, %hi(_gp_disp)
addiu $gp, $gp, %lo(_gp_disp)
addu $gp, $gp, $t9
#endif
addiu $sp, $sp, -96
|
︙ | | |
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
-
-
+
+
|
lw $s1, 24($sp)
lw $s0, 20($sp)
lw $ra, 16($sp)
addiu $sp, $sp, 96
j_pic of_method_not_found_stret
.type of_forward_stret, %function
.size of_forward_stret, .-of_forward_stret
.type OFForward_stret, %function
.size OFForward_stret, .-OFForward_stret
init:
#ifdef OF_PIC
lui $gp, %hi(_gp_disp)
addiu $gp, $gp, %lo(_gp_disp)
addu $gp, $gp, $t9
|
︙ | | |
Modified src/forwarding/forwarding-powerpc-elf.S
from [77e163195d]
to [aa95b3885f].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
-
+
+
-
+
|
* file.
*/
#include "config.h"
#include "platform.h"
.globl of_forward
.globl of_forward_stret
.globl OFForward
.globl OFForward_stret
.section .text
of_forward:
OFForward:
stwu %r1, -112(%r1)
mflr %r0
stw %r0, 116(%r1)
#ifdef OF_PIC
stw %r30, 104(%r1)
bl 0f
|
︙ | | |
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
-
+
-
+
-
-
+
+
-
+
|
bctr
0:
lwz %r3, 8(%r1)
lwz %r4, 12(%r1)
#ifdef OF_PIC
lwz %r0, .Lgot_of_method_not_found-.Lbiased_got2(%r30)
lwz %r0, .Lgot_OFMethodNotFound-.Lbiased_got2(%r30)
mtctr %r0
lwz %r30, 104(%r1)
#endif
lwz %r0, 116(%r1)
mtlr %r0
addi %r1, %r1, 112
#ifdef OF_PIC
bctr
#else
b of_method_not_found
b OFMethodNotFound
#endif
.type of_forward, @function
.size of_forward, .-of_forward
.type OFForward, @function
.size OFForward, .-OFForward
of_forward_stret:
OFForward_stret:
stwu %r1, -112(%r1)
mflr %r0
stw %r0, 116(%r1)
#ifdef OF_PIC
stw %r30, 104(%r1)
bl 0f
|
︙ | | |
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
-
+
-
+
-
-
+
+
|
0:
lwz %r3, 8(%r1)
lwz %r4, 12(%r1)
lwz %r5, 16(%r1)
#ifdef OF_PIC
lwz %r0, .Lgot_of_method_not_found_stret-.Lbiased_got2(%r30)
lwz %r0, .Lgot_OFMethodNotFound_stret-.Lbiased_got2(%r30)
mtctr %r0
lwz %r30, 104(%r1)
#endif
lwz %r0, 116(%r1)
mtlr %r0
addi %r1, %r1, 112
#ifdef OF_PIC
bctr
#else
b of_method_not_found_stret
b OFMethodNotFound_stret
#endif
.type of_forward_stret, @function
.size of_forward_stret, .-of_forward_stret
.type OFForward_stret, @function
.size OFForward_stret, .-OFForward_stret
init:
stwu %r1, -16(%r1)
mflr %r0
stw %r0, 20(%r1)
#ifdef OF_PIC
stw %r30, 8(%r1)
|
︙ | | |
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
|
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
|
-
-
-
-
+
+
+
+
|
#ifdef OF_PIC
.section .got2, "aw"
.Lbiased_got2 = .+0x8000
.Lgot_module:
.long module
.Lgot_sel_forwardingTargetForSelector_:
.long sel_forwardingTargetForSelector_
.Lgot_of_method_not_found:
.long of_method_not_found
.Lgot_of_method_not_found_stret:
.long of_method_not_found_stret
.Lgot_OFMethodNotFound:
.long OFMethodNotFound
.Lgot_OFMethodNotFound_stret:
.long OFMethodNotFound_stret
#endif
#ifdef OF_LINUX
.section .note.GNU-stack, "", @progbits
#endif
|
Modified src/forwarding/forwarding-sparc-elf.S
from [7f326e78b6]
to [8805e8dff7].
︙ | | |
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
-
+
|
call objc_msg_lookup
mov %i1, %o1
jmpl %o0, %g0
restore
0:
call of_method_not_found
call OFMethodNotFound
restore
.type of_forward, %function
.size of_forward, .-of_forward
of_forward_stret:
save %sp, -96, %sp
|
︙ | | |
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
-
+
|
call objc_msg_lookup
mov %i2, %o1
jmpl %o0, %g0
restore
0:
call of_method_not_found_stret
call OFMethodNotFound_stret
restore
.type of_forward_stret, %function
.size of_forward_stret, .-of_forward_stret
init:
save %sp, -96, %sp
|
︙ | | |
Modified src/forwarding/forwarding-sparc64-elf.S
from [4c8170f46f]
to [c2de431dd5].
︙ | | |
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
-
+
|
ldd [%sp + BIAS + 288], %f28
ldd [%sp + BIAS + 296], %f30
jmpl %o0, %g0
restore
0:
call of_method_not_found
call OFMethodNotFound
restore
.type of_forward, %function
.size of_forward, .-of_forward
of_forward_stret:
save %sp, -304, %sp
|
︙ | | |
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
-
+
|
ldd [%sp + BIAS + 288], %f28
ldd [%sp + BIAS + 296], %f30
jmpl %o0, %g0
restore
0:
call of_method_not_found_stret
call OFMethodNotFound_stret
restore
.type of_forward_stret, %function
.size of_forward_stret, .-of_forward_stret
init:
save %sp, -176, %sp
|
︙ | | |
Modified src/forwarding/forwarding-x86-elf.S
from [5d0fa55414]
to [73f4a139cb].
︙ | | |
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
-
+
|
addl $20, %esp
popl %ebx
popl %ebp
jmp *%eax
0:
leal of_method_not_found@GOTOFF(%ebx), %eax
leal OFMethodNotFound@GOTOFF(%ebx), %eax
addl $20, %esp
popl %ebx
popl %ebp
jmp *%eax
.type of_forward, %function
|
︙ | | |
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
-
+
|
addl $20, %esp
popl %ebx
popl %ebp
jmp *%eax
0:
leal of_method_not_found_stret@GOTOFF(%ebx), %eax
leal OFMethodNotFound_stret@GOTOFF(%ebx), %eax
addl $20, %esp
popl %ebx
popl %ebp
jmp *%eax
.type of_forward_stret, %function
|
︙ | | |
Modified src/forwarding/forwarding-x86-win32.S
from [7cc7ad47e7]
to [7197d1ad71].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
-
-
+
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section .text
_of_forward:
_OFForward:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
movl 8(%ebp), %eax
|
︙ | | |
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
-
-
+
+
-
+
|
jmp *%eax
0:
addl $20, %esp
popl %ebx
popl %ebp
jmp _of_method_not_found
.def _of_forward
jmp _OFMethodNotFound
.def _OFForward
.scl 2
.type 32
.endef
_of_forward_stret:
_OFForward_stret:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
movl 12(%ebp), %eax
|
︙ | | |
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
-
-
+
+
|
jmp *%eax
0:
addl $20, %esp
popl %ebx
popl %ebp
jmp _of_method_not_found_stret
.def _of_forward_stret
jmp _OFMethodNotFound_stret
.def _OFForward_stret
.scl 2
.type 32
.endef
init:
pushl %ebp
movl %esp, %ebp
|
︙ | | |
Modified src/forwarding/forwarding-x86_64-elf.S
from [95368ab171]
to [8ad5ac6701].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
-
+
+
-
+
|
* file.
*/
#include "config.h"
#include "platform.h"
.globl of_forward
.globl of_forward_stret
.globl OFForward
.globl OFForward_stret
.section .text
of_forward:
OFForward:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0xC0, %rsp /* 16-byte alignment */
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
|
︙ | | |
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
-
-
-
+
+
+
-
+
|
0:
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq %rbp, %rsp
popq %rbp
jmp of_method_not_found@PLT
.type of_forward, %function
.size of_forward, .-of_forward
jmp OFMethodNotFound@PLT
.type OFForward, %function
.size OFForward, .-OFForward
of_forward_stret:
OFForward_stret:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0xC0, %rsp /* 16-byte alignment */
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
|
︙ | | |
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
-
-
-
+
+
+
|
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq %rbp, %rsp
popq %rbp
jmp of_method_not_found_stret@PLT
.type of_forward_stret, %function
.size of_forward_stret, .-of_forward_stret
jmp OFMethodNotFound_stret@PLT
.type OFForward_stret, %function
.size OFForward_stret, .-OFForward_stret
init:
leaq module(%rip), %rdi
jmp __objc_exec_class@PLT
#ifdef OF_SOLARIS
.section .init_array, "aw"
|
︙ | | |
Modified src/forwarding/forwarding-x86_64-macho.S
from [820a074595]
to [96ab2eb2d0].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
-
+
+
-
+
|
* file.
*/
#include "config.h"
#include "platform.h"
.globl _of_forward
.globl _of_forward_stret
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __text, regular, pure_instructions
_of_forward:
_OFForward:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0xC0, %rsp /* 16-byte alignment */
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
|
︙ | | |
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
-
+
-
+
|
0:
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq %rbp, %rsp
popq %rbp
jmp _of_method_not_found
jmp _OFMethodNotFound
_of_forward_stret:
_OFForward_stret:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0xC0, %rsp /* 16-byte alignment */
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
|
︙ | | |
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
-
+
|
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq %rbp, %rsp
popq %rbp
jmp _of_method_not_found_stret
jmp _OFMethodNotFound_stret
init:
leaq module(%rip), %rdi
jmp ___objc_exec_class
.section __DATA, __mod_init_func, mod_init_funcs
.quad init
|
︙ | | |
Modified src/forwarding/forwarding-x86_64-win64.S
from [1a13549dcf]
to [b8c0737017].
︙ | | |
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
-
-
+
+
-
+
|
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl of_forward
.globl of_forward_stret
.globl OFForward
.globl OFForward_stret
.section .text
of_forward:
OFForward:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0x90, %rsp /* 16-byte alignment */
movq %rax, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
|
︙ | | |
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
-
-
+
+
-
+
|
0:
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %rdx
movq %rbp, %rsp
popq %rbp
jmp of_method_not_found
.def of_forward
jmp OFMethodNotFound
.def OFForward
.scl 2
.type 32
.endef
of_forward_stret:
OFForward_stret:
pushq %rbp
movq %rsp, %rbp
/* Save all arguments */
subq $0x90, %rsp /* 16-byte alignment */
movq %rax, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
|
︙ | | |
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
-
-
+
+
|
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %rdx
movq -0x40(%rbp), %r8
movq %rbp, %rsp
popq %rbp
jmp of_method_not_found_stret
.def of_forward_stret
jmp OFMethodNotFound_stret
.def OFForward_stret
.scl 2
.type 32
.endef
init:
leaq module(%rip), %rcx
jmp __objc_exec_class
|
︙ | | |
Modified src/macros.h
from [4a71564d16]
to [1a042f165d].
︙ | | |
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
|
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
|
-
+
-
+
-
+
|
"in " __FILE__ ":%d:\n" #cond "\n", \
__LINE__); \
abort(); \
} \
} while (0)
#endif
#define OF_UNRECOGNIZED_SELECTOR of_method_not_found(self, _cmd);
#define OF_UNRECOGNIZED_SELECTOR OFMethodNotFound(self, _cmd);
#if __has_feature(objc_arc)
# define OF_INVALID_INIT_METHOD of_method_not_found(self, _cmd);
# define OF_INVALID_INIT_METHOD OFMethodNotFound(self, _cmd);
#else
# define OF_INVALID_INIT_METHOD \
@try { \
of_method_not_found(self, _cmd); \
OFMethodNotFound(self, _cmd); \
} @catch (id e) { \
[self release]; \
@throw e; \
} \
\
abort();
#endif
|
︙ | | |
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
|
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
|
-
+
|
(((bits) % (sizeof(value) * 8)) > 0 \
? ((value) >> ((bits) % (sizeof(value) * 8))) | \
((value) << (sizeof(value) * 8 - ((bits) % (sizeof(value) * 8)))) \
: (value))
#define OF_ROUND_UP_POW2(pow2, value) (((value) + (pow2) - 1) & ~((pow2) - 1))
#define OF_HASH_INIT(hash) hash = of_hash_seed;
#define OF_HASH_INIT(hash) hash = OFHashSeed;
#define OF_HASH_ADD(hash, byte) \
{ \
hash += (uint8_t)(byte); \
hash += (hash << 10); \
hash ^= (hash >> 6); \
}
#define OF_HASH_FINALIZE(hash) \
|
︙ | | |
Modified tests/TestsAppDelegate.m
from [ce26788f19]
to [ec5b8946c4].
︙ | | |
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
-
+
|
* Calling objc_exit() via atexit() would result in the runtime being
* destructed before for the destructors ran.
*/
atexit(objc_exit);
#endif
/* We need deterministic hashes for tests */
of_hash_seed = 0;
OFHashSeed = 0;
#ifdef OF_WII
GXRModeObj *rmode;
void *xfb;
VIDEO_Init();
WPAD_Init();
|
︙ | | |