ObjFW  Check-in [153b825cdb]

Overview
Comment:runtime: Fix MorphOS library

This again works with both, SjLj and DWARF exceptions. The latest public
SDK still uses SjLj, so it still needs to be supported for now.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 153b825cdbcce1e415f3961299374a19aadf3ed35c2151a3576781e1915d7cea
User & Date: js on 2019-06-26 19:25:29
Other Links: manifest | tags
Context
2019-06-26
20:38
Fix non-blocking sockets on MorphOS check-in: d1d1843970 user: js tags: trunk
19:25
runtime: Fix MorphOS library check-in: 153b825cdb user: js tags: trunk
18:26
Use EOPNOTSUPP for SOCKS5 error code 7 check-in: f6b58b80a8 user: js tags: trunk
Changes

Modified src/runtime/amiga-library.m from [980704d720] to [55ee69eb97].

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
extern int objc_sync_enter_m68k(void);
extern int objc_sync_exit_m68k(void);
extern id _Nullable objc_getProperty_m68k(void);
extern void objc_setProperty_m68k(void);
extern void objc_getPropertyStruct_m68k(void);
extern void objc_setPropertyStruct_m68k(void);
extern void objc_enumerationMutation_m68k(void);
extern int __gnu_objc_personality_sj0_m68k(void);
extern int __gnu_objc_personality_v0_m68k(void);
extern id _Nullable objc_retain_m68k(void);
extern id _Nullable objc_retainBlock_m68k(void);
extern id _Nullable objc_retainAutorelease_m68k(void);
extern void objc_release_m68k(void);
extern id _Nullable objc_autorelease_m68k(void);
extern id _Nullable objc_autoreleaseReturnValue_m68k(void);
extern id _Nullable objc_retainAutoreleaseReturnValue_m68k(void);







|
|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
extern int objc_sync_enter_m68k(void);
extern int objc_sync_exit_m68k(void);
extern id _Nullable objc_getProperty_m68k(void);
extern void objc_setProperty_m68k(void);
extern void objc_getPropertyStruct_m68k(void);
extern void objc_setPropertyStruct_m68k(void);
extern void objc_enumerationMutation_m68k(void);
extern int __gnu_objc_personality_v0_m68k(void);
extern int __gnu_objc_personality_sj0_m68k(void);
extern id _Nullable objc_retain_m68k(void);
extern id _Nullable objc_retainBlock_m68k(void);
extern id _Nullable objc_retainAutorelease_m68k(void);
extern void objc_release_m68k(void);
extern id _Nullable objc_autorelease_m68k(void);
extern id _Nullable objc_autoreleaseReturnValue_m68k(void);
extern id _Nullable objc_retainAutoreleaseReturnValue_m68k(void);
583
584
585
586
587
588
589

590
591
592
593
594
595
596
	(CONST_APTR)objc_sync_exit_m68k,
	(CONST_APTR)objc_getProperty_m68k,
	(CONST_APTR)objc_setProperty_m68k,
	(CONST_APTR)objc_getPropertyStruct_m68k,
	(CONST_APTR)objc_setPropertyStruct_m68k,
	(CONST_APTR)objc_enumerationMutation_m68k,
	(CONST_APTR)__gnu_objc_personality_v0_m68k,

	(CONST_APTR)objc_retain_m68k,
	(CONST_APTR)objc_retainBlock_m68k,
	(CONST_APTR)objc_retainAutorelease_m68k,
	(CONST_APTR)objc_release_m68k,
	(CONST_APTR)objc_autorelease_m68k,
	(CONST_APTR)objc_autoreleaseReturnValue_m68k,
	(CONST_APTR)objc_retainAutoreleaseReturnValue_m68k,







>







583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
	(CONST_APTR)objc_sync_exit_m68k,
	(CONST_APTR)objc_getProperty_m68k,
	(CONST_APTR)objc_setProperty_m68k,
	(CONST_APTR)objc_getPropertyStruct_m68k,
	(CONST_APTR)objc_setPropertyStruct_m68k,
	(CONST_APTR)objc_enumerationMutation_m68k,
	(CONST_APTR)__gnu_objc_personality_v0_m68k,
	(CONST_APTR)__gnu_objc_personality_sj0_m68k,
	(CONST_APTR)objc_retain_m68k,
	(CONST_APTR)objc_retainBlock_m68k,
	(CONST_APTR)objc_retainAutorelease_m68k,
	(CONST_APTR)objc_release_m68k,
	(CONST_APTR)objc_autorelease_m68k,
	(CONST_APTR)objc_autoreleaseReturnValue_m68k,
	(CONST_APTR)objc_retainAutoreleaseReturnValue_m68k,

Modified src/runtime/amigaos3.sfd from [e2960d0e01] to [10ada06b71].

21
22
23
24
25
26
27
28

29
30
31
32
33
34
35
int objc_sync_enter(id _Nullable object)(a0)
int objc_sync_exit(id _Nullable object)(a0)
id objc_getProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, bool atomic)(a0,a1,d0,d1)
void objc_setProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, id value, bool atomic, signed char copy)(a0,a1,d0,a2,d1,d2)
void objc_getPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2)
void objc_setPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2)
void objc_enumerationMutation(id _Nonnull object)(a0)
int __gnu_objc_personality_v0(int version, int actions, uint64_t *_Nonnull exClass, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1)

id _Nullable objc_retain(id _Nullable object)(a0)
id _Nullable objc_retainBlock(id _Nullable block)(a0)
id _Nullable objc_retainAutorelease(id _Nullable object)(a0)
void objc_release(id _Nullable object)(a0)
id _Nullable objc_autorelease(id _Nullable object)(a0)
id _Nullable objc_autoreleaseReturnValue(id _Nullable object)(a0)
id _Nullable objc_retainAutoreleaseReturnValue(id _Nullable object)(a0)







|
>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int objc_sync_enter(id _Nullable object)(a0)
int objc_sync_exit(id _Nullable object)(a0)
id objc_getProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, bool atomic)(a0,a1,d0,d1)
void objc_setProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, id value, bool atomic, signed char copy)(a0,a1,d0,a2,d1,d2)
void objc_getPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2)
void objc_setPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2)
void objc_enumerationMutation(id _Nonnull object)(a0)
int __gnu_objc_personality_v0_m68k(int version, int actions, uint64_t *_Nonnull exClass, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1)
int __gnu_objc_personality_sj0_m68k(int version, int actions, uint64_t *_Nonnull exClass, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1)
id _Nullable objc_retain(id _Nullable object)(a0)
id _Nullable objc_retainBlock(id _Nullable block)(a0)
id _Nullable objc_retainAutorelease(id _Nullable object)(a0)
void objc_release(id _Nullable object)(a0)
id _Nullable objc_autorelease(id _Nullable object)(a0)
id _Nullable objc_autoreleaseReturnValue(id _Nullable object)(a0)
id _Nullable objc_retainAutoreleaseReturnValue(id _Nullable object)(a0)

Modified src/runtime/linklib/linklib.m from [8e395bc89c] to [1429bcc593].

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    bool atomic, signed char copy) SYM("objc_setProperty");
void linklib_objc_getPropertyStruct(void *dest, const void *src, ptrdiff_t size,
    bool atomic, bool strong) SYM("objc_getPropertyStruct");
void linklib_objc_setPropertyStruct(void *dest, const void *src, ptrdiff_t size,
    bool atomic, bool strong) SYM("objc_setPropertyStruct");
void linklib_objc_enumerationMutation(id object)
    SYM("objc_enumerationMutation");
#ifdef HAVE_SJLJ_EXCEPTIONS
int linklib___gnu_objc_personality_sj0(int version, int actions,
    uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_sj0");
#else
int linklib___gnu_objc_personality_v0(int version, int actions,
    uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_v0");
#endif
id linklib_objc_retain(id object) SYM("objc_retain");
id linklib_objc_retainBlock(id block) SYM("objc_retainBlock");
id linklib_objc_retainAutorelease(id object) SYM("objc_retainAutorelease");
void linklib_objc_release(id object) SYM("objc_release");
id linklib_objc_autorelease(id object) SYM("objc_autorelease");
id linklib_objc_autoreleaseReturnValue(id object)







|
|
|

|
|







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    bool atomic, signed char copy) SYM("objc_setProperty");
void linklib_objc_getPropertyStruct(void *dest, const void *src, ptrdiff_t size,
    bool atomic, bool strong) SYM("objc_getPropertyStruct");
void linklib_objc_setPropertyStruct(void *dest, const void *src, ptrdiff_t size,
    bool atomic, bool strong) SYM("objc_setPropertyStruct");
void linklib_objc_enumerationMutation(id object)
    SYM("objc_enumerationMutation");
#ifndef HAVE_SJLJ_EXCEPTIONS
int linklib___gnu_objc_personality_v0(int version, int actions,
    uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_v0");
#else
int linklib___gnu_objc_personality_sj0(int version, int actions,
    uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_sj0");
#endif
id linklib_objc_retain(id object) SYM("objc_retain");
id linklib_objc_retainBlock(id block) SYM("objc_retainBlock");
id linklib_objc_retainAutorelease(id object) SYM("objc_retainAutorelease");
void linklib_objc_release(id object) SYM("objc_release");
id linklib_objc_autorelease(id object) SYM("objc_autorelease");
id linklib_objc_autoreleaseReturnValue(id object)
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412

413




414










415

416
417
418
419
420
421
422
#else
	objc_enumerationMutation(object);
#endif

	OF_UNREACHABLE
}

#ifdef HAVE_SJLJ_EXCEPTIONS
int
linklib___gnu_objc_personality_sj0(int version, int actions, uint64_t exClass,
    void *ex, void *ctx)
{
	return __gnu_objc_personality_sj0(version, actions, &exClass, ex, ctx);
}
#else
int
linklib___gnu_objc_personality_v0(int version, int actions, uint64_t exClass,
    void *ex, void *ctx)
{

	return __gnu_objc_personality_v0(version, actions, &exClass, ex, ctx);




}










#endif


id
linklib_objc_retain(id object)
{
	return objc_retain(object);
}








<
<
<
<
<
<
<
<




>
|
>
>
>
>

>
>
>
>
>
>
>
>
>
>

>







394
395
396
397
398
399
400








401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
#else
	objc_enumerationMutation(object);
#endif

	OF_UNREACHABLE
}









int
linklib___gnu_objc_personality_v0(int version, int actions, uint64_t exClass,
    void *ex, void *ctx)
{
#ifndef HAVE_SJLJ_EXCEPTIONS
	return __gnu_objc_personality_v0_m68k(version, actions, &exClass, ex,
	    ctx);
#else
	abort();
#endif
}

int
linklib___gnu_objc_personality_sj0(int version, int actions, uint64_t exClass,
    void *ex, void *ctx)
{
#ifdef HAVE_SJLJ_EXCEPTIONS
	return __gnu_objc_personality_sj0_m68k(version, actions, &exClass, ex,
	    ctx);
#else
	abort();
#endif
}

id
linklib_objc_retain(id object)
{
	return objc_retain(object);
}

Modified src/runtime/morphos-clib.h from [752ecf36d7] to [d7622eaf7a].

15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
int objc_sync_enter(id);
int objc_sync_exit(id);
id objc_getProperty(id, SEL, ptrdiff_t, bool);
void objc_setProperty(id, SEL, ptrdiff_t, id, bool, signed char);
void objc_getPropertyStruct(void *, const void *, ptrdiff_t, bool, bool);
void objc_setPropertyStruct(void *, const void *, ptrdiff_t, bool, bool);
void objc_enumerationMutation(id);
int __gnu_objc_personality_v0(int, int, uint64_t *, void *, void *);

id objc_retain(id);
id objc_retainBlock(id);
id objc_retainAutorelease(id);
void objc_release(id);
id objc_autorelease(id);
id objc_autoreleaseReturnValue(id);
id objc_retainAutoreleaseReturnValue(id);







|
>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int objc_sync_enter(id);
int objc_sync_exit(id);
id objc_getProperty(id, SEL, ptrdiff_t, bool);
void objc_setProperty(id, SEL, ptrdiff_t, id, bool, signed char);
void objc_getPropertyStruct(void *, const void *, ptrdiff_t, bool, bool);
void objc_setPropertyStruct(void *, const void *, ptrdiff_t, bool, bool);
void objc_enumerationMutation(id);
int __gnu_objc_personality_v0_m68k(int, int, uint64_t *, void *, void *);
int __gnu_objc_personality_sj0_m68k(int, int, uint64_t *, void *, void *);
id objc_retain(id);
id objc_retainBlock(id);
id objc_retainAutorelease(id);
void objc_release(id);
id objc_autorelease(id);
id objc_autoreleaseReturnValue(id);
id objc_retainAutoreleaseReturnValue(id);

Modified src/runtime/morphos.fd from [7e9de9f641] to [dfb7c42406].

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
objc_sync_enter(object)(a0)
objc_sync_exit(object)(a0)
objc_getProperty(self,_cmd,offset,atomic)(a0,a1,d0,d1)
objc_setProperty(self,_cmd,offset,value,atomic,copy)(a0,a1,d0,a2,d1,d2)
objc_getPropertyStruct(dest,src,size,atomic,strong)(a0,a1,d0,d1,d2)
objc_setPropertyStruct(dest,src,size,atomic,strong)(a0,a1,d0,d1,d2)
objc_enumerationMutation(object)(a0)
__gnu_objc_personality_v0(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1)
__gnu_objc_personality_sj0(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1)
objc_retain(object)(a0)
objc_retainBlock(block)(a0)
objc_retainAutorelease(object)(a0)
objc_release(object)(a0)
objc_autorelease(object)(a0)
objc_autoreleaseReturnValue(object)(a0)
objc_retainAutoreleaseReturnValue(object)(a0)







|
|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
objc_sync_enter(object)(a0)
objc_sync_exit(object)(a0)
objc_getProperty(self,_cmd,offset,atomic)(a0,a1,d0,d1)
objc_setProperty(self,_cmd,offset,value,atomic,copy)(a0,a1,d0,a2,d1,d2)
objc_getPropertyStruct(dest,src,size,atomic,strong)(a0,a1,d0,d1,d2)
objc_setPropertyStruct(dest,src,size,atomic,strong)(a0,a1,d0,d1,d2)
objc_enumerationMutation(object)(a0)
__gnu_objc_personality_v0_m68k(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1)
__gnu_objc_personality_sj0_m68k(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1)
objc_retain(object)(a0)
objc_retainBlock(block)(a0)
objc_retainAutorelease(object)(a0)
objc_release(object)(a0)
objc_autorelease(object)(a0)
objc_autoreleaseReturnValue(object)(a0)
objc_retainAutoreleaseReturnValue(object)(a0)