Artifact eb7972f6427568678d74d80327169d69e1f9a50ab549a3720df0ab17fa558299:
- File
src/runtime/ObjFW_RT.sfd
— part of check-in
[482698c5be]
at
2018-05-06 21:39:06
on branch trunk
— runtime: Make Amiga library work with -fbaserel
This currently uses __saveds on all exported functions for simplicity.
As an optimization, __saveds can be removed from some functions later
after careful verification that no code path starting from that function
accesses any data. (user: js, size: 5335) [annotate] [blame] [check-ins using]
==base _ObjFWRTBase ==basetype struct Library * ==libname objfw_rt.library ==bias 30 ==public * Functions for the linklib void objc_init(struct objc_libc *libc, FILE *stdout, FILE *stdin)(a0,a1,a2) * Used by the compiler - these need glue code void glue___objc_exec_class(void *_Nonnull module)(a0) IMP _Nonnull glue_objc_msg_lookup(id _Nullable obj, SEL _Nonnull sel)(a0,a1) IMP _Nonnull glue_objc_msg_lookup_stret(id _Nullable obj, SEL _Nonnull sel)(a0,a1) IMP _Nonnull glue_objc_msg_lookup_super(struct objc_super *_Nonnull super, SEL _Nonnull sel)(a0,a1) IMP _Nonnull glue_objc_msg_lookup_super_stret(struct objc_super *_Nonnull super, SEL _Nonnull sel)(a0,a1) Class _Nullable glue_objc_lookUpClass(const char *_Nonnull name)(a0) Class _Nullable glue_objc_getClass(const char *_Nonnull name)(a0) Class _Nonnull glue_objc_getRequiredClass(const char *_Nonnull name)(a0) Class _Nullable glue_objc_lookup_class(const char *_Nonnull name)(a0) Class _Nonnull glue_objc_get_class(const char *_Nonnull name)(a0) void glue_objc_exception_throw(id _Nonnull object)(a0) int glue_objc_sync_enter(id _Nullable object)(a0) int glue_objc_sync_exit(id _Nullable object)(a0) id glue_objc_getProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, bool atomic)(a0,a1,d0,d1) void glue_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 glue_objc_getPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2) void glue_objc_setPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2) void glue_objc_enumerationMutation(id _Nonnull obj)(a0) int glue___gnu_objc_personality_v0(int version, int actions, uint64_t *_Nonnull ex_class, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1) id _Nullable glue_objc_retain(id _Nullable object)(a0) id _Nullable glue_objc_retainBlock(id _Nullable block)(a0) id _Nullable glue_objc_retainAutorelease(id _Nullable object)(a0) void glue_objc_release(id _Nullable object)(a0) id _Nullable glue_objc_autorelease(id _Nullable object)(a0) id _Nullable glue_objc_autoreleaseReturnValue(id _Nullable object)(a0) id _Nullable glue_objc_retainAutoreleaseReturnValue(id _Nullable object)(a0) id _Nullable glue_objc_retainAutoreleasedReturnValue(id _Nullable object)(a0) id _Nullable glue_objc_storeStrong(id _Nullable *_Nonnull object, id _Nullable value)(a0/a1) id _Nullable glue_objc_storeWeak(id _Nullable *_Nonnull object, id _Nullable value)(a0,a1) id _Nullable glue_objc_loadWeakRetained(id _Nullable *_Nonnull object)(a0) id _Nullable glue_objc_initWeak(id _Nullable *_Nonnull object, id _Nullable value)(a0,a1) void glue_objc_destroyWeak(id _Nullable *_Nonnull object)(a0) id _Nullable glue_objc_loadWeak(id _Nullable *_Nonnull object)(a0) void glue_objc_copyWeak(id _Nullable *_Nonnull dest, id _Nullable *_Nonnull src)(a0,a1) void glue_objc_moveWeak(id _Nullable *_Nonnull dest, id _Nullable *_Nonnull src)(a0,a1) * Functions declared in ObjFW_RT.h SEL _Nonnull sel_registerName(const char *_Nonnull name)(a0) const char *_Nonnull sel_getName(SEL _Nonnull sel)(a0) bool sel_isEqual(SEL _Nonnull sel1, SEL _Nonnull sel2)(a0,a1) Class _Nonnull objc_allocateClassPair(Class _Nullable superclass, const char *_Nonnull name, size_t extra_bytes)(a0,a1,d0) void objc_registerClassPair(Class _Nonnull cls)(a0) unsigned int objc_getClassList(Class _Nonnull *_Nullable buf, unsigned int count)(a0,d0) Class _Nonnull *_Nonnull objc_copyClassList(unsigned int *_Nullable)(a0) bool class_isMetaClass(Class _Nullable cls)(a0) const char *_Nullable class_getName(Class _Nullable cls)(a0) Class _Nullable class_getSuperclass(Class _Nullable cls)(a0) unsigned long class_getInstanceSize(Class _Nullable cls)(a0) bool class_respondsToSelector(Class _Nullable cls, SEL _Nonnull sel)(a0,a1) bool class_conformsToProtocol(Class _Nullable cls, Protocol *_Nonnull p)(a0,a1) IMP _Nullable class_getMethodImplementation(Class _Nullable cls, SEL _Nonnull sel)(a0,a1) IMP _Nullable class_getMethodImplementation_stret(Class _Nullable cls, SEL _Nonnull sel)(a0,a1) const char *_Nullable class_getMethodTypeEncoding(Class _Nullable cls, SEL _Nonnull sel)(a0,a1) bool class_addMethod(Class _Nonnull cls, SEL _Nonnull sel, IMP _Nonnull imp, const char *_Nullable types)(a0,a1,a2,a3) IMP _Nullable class_replaceMethod(Class _Nonnull cls, SEL _Nonnull sel, IMP _Nonnull imp, const char *_Nullable types)(a0,a1,a2,a3) Class _Nullable object_getClass(id _Nullable obj)(a0) Class _Nullable object_setClass(id _Nullable obj, Class _Nonnull)(a0,a1) const char *_Nullable object_getClassName(id _Nullable obj)(a0) const char *_Nonnull protocol_getName(Protocol *_Nonnull p)(a0) bool protocol_isEqual(Protocol *_Nonnull a, Protocol *_Nonnull b)(a0,a1) bool protocol_conformsToProtocol(Protocol *_Nonnull a, Protocol *_Nonnull b)(a0,a1) void objc_exit(void)() _Nullable objc_uncaught_exception_handler objc_setUncaughtExceptionHandler(objc_uncaught_exception_handler _Nullable handler)(a0) void objc_setForwardHandler(IMP _Nullable forward, IMP _Nullable forward_stret)(a0,a1) void objc_setEnumerationMutationHandler(objc_enumeration_mutation_handler _Nullable handler)(a0) void objc_zero_weak_references(id _Nonnull value)(a0) ==end