Differences From Artifact [55ee69eb97]:
- File
src/runtime/amiga-library.m
— part of check-in
[153b825cdb]
at
2019-06-26 19:25:29
on branch trunk
— 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. (user: js, size: 16523) [annotate] [blame] [check-ins using]
To Artifact [2c24631f83]:
- File src/runtime/amiga-library.m — part of check-in [7138892706] at 2019-06-27 19:24:32 on branch trunk — runtime: Switch MorphOS library to SysV ABI (user: js, size: 16490) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
58 59 60 61 62 63 64 | #ifdef OF_AMIGAOS_M68K extern uintptr_t __CTOR_LIST__[]; extern const void *_EH_FRAME_BEGINS__; extern void *_EH_FRAME_OBJECTS__; #endif | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | > > < < < | 58 59 60 61 62 63 64 65 66 67 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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 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 | #ifdef OF_AMIGAOS_M68K extern uintptr_t __CTOR_LIST__[]; extern const void *_EH_FRAME_BEGINS__; extern void *_EH_FRAME_OBJECTS__; #endif extern bool glue_objc_init(void); extern void glue___objc_exec_class(void); extern IMP _Nonnull glue_objc_msg_lookup(void); extern IMP _Nonnull glue_objc_msg_lookup_stret(void); extern IMP _Nonnull glue_objc_msg_lookup_super(void); extern IMP _Nonnull glue_objc_msg_lookup_super_stret(void); extern Class _Nullable glue_objc_lookUpClass(void); extern Class _Nullable glue_objc_getClass(void); extern Class _Nonnull glue_objc_getRequiredClass(void); extern Class _Nullable glue_objc_lookup_class(void); extern Class _Nonnull glue_objc_get_class(void); extern void glue_objc_exception_throw(void); extern int glue_objc_sync_enter(void); extern int glue_objc_sync_exit(void); extern id _Nullable glue_objc_getProperty(void); extern void glue_objc_setProperty(void); extern void glue_objc_getPropertyStruct(void); extern void glue_objc_setPropertyStruct(void); extern void glue_objc_enumerationMutation(void); extern int glue___gnu_objc_personality(void); extern id _Nullable glue_objc_retain(void); extern id _Nullable glue_objc_retainBlock(void); extern id _Nullable glue_objc_retainAutorelease(void); extern void glue_objc_release(void); extern id _Nullable glue_objc_autorelease(void); extern id _Nullable glue_objc_autoreleaseReturnValue(void); extern id _Nullable glue_objc_retainAutoreleaseReturnValue(void); extern id _Nullable glue_objc_retainAutoreleasedReturnValue(void); extern id _Nullable glue_objc_storeStrong(void); extern id _Nullable glue_objc_storeWeak(void); extern id _Nullable glue_objc_loadWeakRetained(void); extern id _Nullable glue_objc_initWeak(void); extern void glue_objc_destroyWeak(void); extern id _Nullable glue_objc_loadWeak(void); extern void glue_objc_copyWeak(void); extern void glue_objc_moveWeak(void); extern SEL _Nonnull glue_sel_registerName(void); extern const char *_Nonnull glue_sel_getName(void); extern bool glue_sel_isEqual(void); extern Class _Nonnull glue_objc_allocateClassPair(void); extern void glue_objc_registerClassPair(void); extern unsigned int glue_objc_getClassList(void); extern Class _Nonnull *_Nonnull glue_objc_copyClassList(void); extern bool glue_class_isMetaClass(void); extern const char *_Nullable glue_class_getName(void); extern Class _Nullable glue_class_getSuperclass(void); extern unsigned long glue_class_getInstanceSize(void); extern bool glue_class_respondsToSelector(void); extern bool glue_class_conformsToProtocol(void); extern IMP _Nullable glue_class_getMethodImplementation(void); extern IMP _Nullable glue_class_getMethodImplementation_stret(void); extern const char *_Nullable glue_class_getMethodTypeEncoding(void); extern bool glue_class_addMethod(void); extern IMP _Nullable glue_class_replaceMethod(void); extern Class _Nullable glue_object_getClass(void); extern Class _Nullable glue_object_setClass(void); extern const char *_Nullable glue_object_getClassName(void); extern const char *_Nonnull glue_protocol_getName(void); extern bool glue_protocol_isEqual(void); extern bool glue_protocol_conformsToProtocol(void); extern _Nullable objc_uncaught_exception_handler_t glue_objc_setUncaughtExceptionHandler(void); extern void glue_objc_setForwardHandler(void); extern void glue_objc_setEnumerationMutationHandler(void); extern void glue_objc_zero_weak_references(void); extern void glue_objc_exit(void); #ifdef OF_MORPHOS const ULONG __abox__ = 1; #endif struct ExecBase *SysBase; struct objc_libc libc; FILE *stdout; FILE *stderr; #if defined(OF_AMIGAOS_M68K) __asm__ ( ".text\n" ".globl ___restore_a4\n" ".align 1\n" "___restore_a4:\n" " movea.l 42(a6), a4\n" " rts" ); #elif defined(OF_MORPHOS) /* All __saveds functions in this file need to use the M68K ABI */ __asm__ ( ".section .text\n" ".align 2\n" "__restore_r13:\n" " lwz %r13, 56(%r2)\n" " lwz %r13, 44(%r13)\n" " blr\n" ); #endif static OF_INLINE char * getDataSeg(void) { char *dataSeg; |
︙ | ︙ | |||
373 374 375 376 377 378 379 | static void * lib_null(void) { return NULL; } bool | | > > < > > | < < | | 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | static void * lib_null(void) { return NULL; } bool objc_init(unsigned int version, struct objc_libc *libc_, FILE *stdout_, FILE *stderr_) { #ifdef OF_AMIGAOS_M68K OBJC_M68K_ARG(struct ObjFWRTBase *, base, a6) #else register struct ObjFWRTBase *r12 __asm__("r12"); struct ObjFWRTBase *base = r12; #endif uintptr_t *iter, *iter0; if (version > 1) return false; memcpy(&libc, libc_, sizeof(libc)); stdout = stdout_; |
︙ | ︙ | |||
563 564 565 566 567 568 569 | (CONST_APTR)FUNCARRAY_BEGIN, (CONST_APTR)FUNCARRAY_32BIT_NATIVE, #endif (CONST_APTR)lib_open, (CONST_APTR)lib_close, (CONST_APTR)lib_expunge, (CONST_APTR)lib_null, | > | > > > | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | > | 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 | (CONST_APTR)FUNCARRAY_BEGIN, (CONST_APTR)FUNCARRAY_32BIT_NATIVE, #endif (CONST_APTR)lib_open, (CONST_APTR)lib_close, (CONST_APTR)lib_expunge, (CONST_APTR)lib_null, #ifdef OF_MORPHOS (CONST_APTR)-1, (CONST_APTR)FUNCARRAY_32BIT_SYSTEMV, #endif (CONST_APTR)glue_objc_init, (CONST_APTR)glue___objc_exec_class, (CONST_APTR)glue_objc_msg_lookup, (CONST_APTR)glue_objc_msg_lookup_stret, (CONST_APTR)glue_objc_msg_lookup_super, (CONST_APTR)glue_objc_msg_lookup_super_stret, (CONST_APTR)glue_objc_lookUpClass, (CONST_APTR)glue_objc_getClass, (CONST_APTR)glue_objc_getRequiredClass, (CONST_APTR)glue_objc_lookup_class, (CONST_APTR)glue_objc_get_class, (CONST_APTR)glue_objc_exception_throw, (CONST_APTR)glue_objc_sync_enter, (CONST_APTR)glue_objc_sync_exit, (CONST_APTR)glue_objc_getProperty, (CONST_APTR)glue_objc_setProperty, (CONST_APTR)glue_objc_getPropertyStruct, (CONST_APTR)glue_objc_setPropertyStruct, (CONST_APTR)glue_objc_enumerationMutation, (CONST_APTR)glue___gnu_objc_personality, (CONST_APTR)glue_objc_retain, (CONST_APTR)glue_objc_retainBlock, (CONST_APTR)glue_objc_retainAutorelease, (CONST_APTR)glue_objc_release, (CONST_APTR)glue_objc_autorelease, (CONST_APTR)glue_objc_autoreleaseReturnValue, (CONST_APTR)glue_objc_retainAutoreleaseReturnValue, (CONST_APTR)glue_objc_retainAutoreleasedReturnValue, (CONST_APTR)glue_objc_storeStrong, (CONST_APTR)glue_objc_storeWeak, (CONST_APTR)glue_objc_loadWeakRetained, (CONST_APTR)glue_objc_initWeak, (CONST_APTR)glue_objc_destroyWeak, (CONST_APTR)glue_objc_loadWeak, (CONST_APTR)glue_objc_copyWeak, (CONST_APTR)glue_objc_moveWeak, (CONST_APTR)glue_sel_registerName, (CONST_APTR)glue_sel_getName, (CONST_APTR)glue_sel_isEqual, (CONST_APTR)glue_objc_allocateClassPair, (CONST_APTR)glue_objc_registerClassPair, (CONST_APTR)glue_objc_getClassList, (CONST_APTR)glue_objc_copyClassList, (CONST_APTR)glue_class_isMetaClass, (CONST_APTR)glue_class_getName, (CONST_APTR)glue_class_getSuperclass, (CONST_APTR)glue_class_getInstanceSize, (CONST_APTR)glue_class_respondsToSelector, (CONST_APTR)glue_class_conformsToProtocol, (CONST_APTR)glue_class_getMethodImplementation, (CONST_APTR)glue_class_getMethodImplementation_stret, (CONST_APTR)glue_class_getMethodTypeEncoding, (CONST_APTR)glue_class_addMethod, (CONST_APTR)glue_class_replaceMethod, (CONST_APTR)glue_object_getClass, (CONST_APTR)glue_object_setClass, (CONST_APTR)glue_object_getClassName, (CONST_APTR)glue_protocol_getName, (CONST_APTR)glue_protocol_isEqual, (CONST_APTR)glue_protocol_conformsToProtocol, (CONST_APTR)glue_objc_setUncaughtExceptionHandler, (CONST_APTR)glue_objc_setForwardHandler, (CONST_APTR)glue_objc_setEnumerationMutationHandler, (CONST_APTR)glue_objc_zero_weak_references, (CONST_APTR)glue_objc_exit, (CONST_APTR)-1, #ifdef OF_MORPHOS (CONST_APTR)FUNCARRAY_END #endif }; #pragma GCC diagnostic pop |
︙ | ︙ |