ObjFW  Diff

Differences From Artifact [7777d822b1]:

To Artifact [0e90e7af65]:


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
64
65
66
67
68
69
70


71
72
73
74
75
76
77







-
-







	bool initialized;
};

#ifdef OF_AMIGAOS_M68K
extern uintptr_t __CTOR_LIST__[];
extern const void *_EH_FRAME_BEGINS__;
extern void *_EH_FRAME_OBJECTS__;
void __register_frame_info(const void *, void *);
void *__deregister_frame_info(const void *);
#endif

extern bool glue_of_init(void);
extern void *glue_of_alloc(void);
extern void *glue_of_alloc_zeroed(void);
extern void *glue_of_realloc(void);
extern uint32_t *glue_of_hash_seed_ref(void);
350
351
352
353
354
355
356
357

358
359
360
361
362
363
364
348
349
350
351
352
353
354

355
356
357
358
359
360
361
362







-
+








	if (base->parent != NULL) {
		struct ObjFWBase *parent;

#ifdef OF_AMIGAOS_M68K
		if (base->initialized)
			for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++)
				__deregister_frame_info(
				libc.__deregister_frame_info(
				    (&_EH_FRAME_BEGINS__)[i]);
#endif

		parent = base->parent;

		FreeMem(base->dataSeg - DATA_OFFSET, getDataSize());
		FreeMem((char *)base - base->library.lib_NegSize,
408
409
410
411
412
413
414
415

416
417
418
419
420
421
422
406
407
408
409
410
411
412

413
414
415
416
417
418
419
420







-
+







	__sF = sF;

#ifdef OF_AMIGAOS_M68K
	if ((size_t)_EH_FRAME_BEGINS__ != (size_t)_EH_FRAME_OBJECTS__)
		return false;

	for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++)
		__register_frame_info((&_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"
588
589
590
591
592
593
594












595
596
597
598
599
600
601
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







+
+
+
+
+
+
+
+
+
+
+
+








void
*__deregister_frame_info(const void *begin)
{
	return libc.__deregister_frame_info(begin);
}
#endif

#ifdef OF_MORPHOS
void __register_frame(void *frame)
{
	libc.__register_frame(frame);
}

void __deregister_frame(void *frame)
{
	libc.__deregister_frame(frame);
}
#endif

int *
of_get_errno(void)
{
	return libc.get_errno();
}