︙ | | | ︙ | |
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
extern void glue_objc_hashtable_set(void);
extern void *glue_objc_hashtable_get(void);
extern void glue_objc_hashtable_delete(void);
extern void glue_objc_hashtable_free(void);
extern void glue_objc_setTaggedPointerSecret(void);
extern int glue_objc_registerTaggedPointerClass(void);
extern bool glue_object_isTaggedPointer(void);
extern Class glue_object_getTaggedPointerClass(void);
extern uintptr_t glue_object_getTaggedPointerValue(void);
extern id glue_objc_createTaggedPointer(void);
#ifdef OF_MORPHOS
const ULONG __abox__ = 1;
#endif
struct ExecBase *SysBase;
|
<
|
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
extern void glue_objc_hashtable_set(void);
extern void *glue_objc_hashtable_get(void);
extern void glue_objc_hashtable_delete(void);
extern void glue_objc_hashtable_free(void);
extern void glue_objc_setTaggedPointerSecret(void);
extern int glue_objc_registerTaggedPointerClass(void);
extern bool glue_object_isTaggedPointer(void);
extern uintptr_t glue_object_getTaggedPointerValue(void);
extern id glue_objc_createTaggedPointer(void);
#ifdef OF_MORPHOS
const ULONG __abox__ = 1;
#endif
struct ExecBase *SysBase;
|
︙ | | | ︙ | |
413
414
415
416
417
418
419
420
421
422
423
424
425
426
|
objc_init(unsigned int version, struct objc_libc *libc_, FILE **sF)
{
#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;
if (base->initialized)
|
>
>
>
|
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
|
objc_init(unsigned int version, struct objc_libc *libc_, FILE **sF)
{
#ifdef OF_AMIGAOS_M68K
OBJC_M68K_ARG(struct ObjFWRTBase *, base, a6)
#else
register struct ObjFWRTBase *r12 __asm__("r12");
struct ObjFWRTBase *base = r12;
#endif
#ifdef OF_MORPHOS
void *frame;
#endif
uintptr_t *iter, *iter0;
if (version > 1)
return false;
if (base->initialized)
|
︙ | | | ︙ | |
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
|
for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++)
libc.__register_frame_info((&_EH_FRAME_BEGINS__)[i],
(&_EH_FRAME_OBJECTS__)[i]);
iter0 = &__CTOR_LIST__[1];
#elif defined(OF_MORPHOS)
__asm__ (
"lis %0, ctors+4@ha\n\t"
"la %0, ctors+4@l(%0)\n\t"
: "=r"(iter0)
);
#endif
for (iter = iter0; *iter != 0; iter++);
while (iter > iter0) {
void (*ctor)(void) = (void (*)(void))*--iter;
ctor();
|
|
|
>
>
|
>
>
|
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
|
for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++)
libc.__register_frame_info((&_EH_FRAME_BEGINS__)[i],
(&_EH_FRAME_OBJECTS__)[i]);
iter0 = &__CTOR_LIST__[1];
#elif defined(OF_MORPHOS)
__asm__ (
"lis %0, __EH_FRAME_BEGIN__@ha\n\t"
"la %0, __EH_FRAME_BEGIN__@l(%0)\n\t"
"lis %1, __CTOR_LIST__@ha\n\t"
"la %1, __CTOR_LIST__@l(%1)\n\t"
: "=r"(frame), "=r"(iter0)
);
libc.__register_frame(frame);
#endif
for (iter = iter0; *iter != 0; iter++);
while (iter > iter0) {
void (*ctor)(void) = (void (*)(void))*--iter;
ctor();
|
︙ | | | ︙ | |
586
587
588
589
590
591
592
593
594
595
596
597
598
599
|
#else
void
_Unwind_Resume(void *ex)
{
libc._Unwind_Resume(ex);
}
#endif
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
static CONST_APTR functionTable[] = {
#ifdef OF_MORPHOS
(CONST_APTR)FUNCARRAY_BEGIN,
(CONST_APTR)FUNCARRAY_32BIT_NATIVE,
|
>
>
>
>
>
>
|
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
|
#else
void
_Unwind_Resume(void *ex)
{
libc._Unwind_Resume(ex);
}
#endif
int *
objc_get_errno(void)
{
return libc.get_errno();
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
static CONST_APTR functionTable[] = {
#ifdef OF_MORPHOS
(CONST_APTR)FUNCARRAY_BEGIN,
(CONST_APTR)FUNCARRAY_32BIT_NATIVE,
|
︙ | | | ︙ | |
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
|
(CONST_APTR)glue_objc_hashtable_set,
(CONST_APTR)glue_objc_hashtable_get,
(CONST_APTR)glue_objc_hashtable_delete,
(CONST_APTR)glue_objc_hashtable_free,
(CONST_APTR)glue_objc_setTaggedPointerSecret,
(CONST_APTR)glue_objc_registerTaggedPointerClass,
(CONST_APTR)glue_object_isTaggedPointer,
(CONST_APTR)glue_object_getTaggedPointerClass,
(CONST_APTR)glue_object_getTaggedPointerValue,
(CONST_APTR)glue_objc_createTaggedPointer,
(CONST_APTR)-1,
#ifdef OF_MORPHOS
(CONST_APTR)FUNCARRAY_END
#endif
};
|
<
|
701
702
703
704
705
706
707
708
709
710
711
712
713
714
|
(CONST_APTR)glue_objc_hashtable_set,
(CONST_APTR)glue_objc_hashtable_get,
(CONST_APTR)glue_objc_hashtable_delete,
(CONST_APTR)glue_objc_hashtable_free,
(CONST_APTR)glue_objc_setTaggedPointerSecret,
(CONST_APTR)glue_objc_registerTaggedPointerClass,
(CONST_APTR)glue_object_isTaggedPointer,
(CONST_APTR)glue_object_getTaggedPointerValue,
(CONST_APTR)glue_objc_createTaggedPointer,
(CONST_APTR)-1,
#ifdef OF_MORPHOS
(CONST_APTR)FUNCARRAY_END
#endif
};
|
︙ | | | ︙ | |
738
739
740
741
742
743
744
745
746
747
748
749
750
|
.rt_Revision = OBJFWRT_LIB_MINOR,
.rt_Tags = NULL,
#endif
};
#ifdef OF_MORPHOS
__asm__ (
".section .ctors, \"aw\", @progbits\n"
"ctors:\n"
" .long -1\n"
".section .text"
);
#endif
|
>
>
>
>
|
|
>
|
|
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
|
.rt_Revision = OBJFWRT_LIB_MINOR,
.rt_Tags = NULL,
#endif
};
#ifdef OF_MORPHOS
__asm__ (
".section .eh_frame, \"aw\"\n"
".globl __EH_FRAME_BEGIN__\n"
".type __EH_FRAME_BEGIN__, @object\n"
"__EH_FRAME_BEGIN__:\n"
".section .ctors, \"aw\"\n"
".globl __CTOR_LIST__\n"
".type __CTOR_LIST__, @object\n"
"__CTOR_LIST__:\n"
".section .text"
);
#endif
|