ObjFW  Check-in [28fdcad722]

Overview
Comment:runtime: Generate function table from .sfd file
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 28fdcad722ebd1ef7cb5805bbb96d2efad470cdd41990058b0e7d6c987d8c39b
User & Date: js on 2018-04-30 10:54:55
Other Links: manifest | tags
Context
2018-04-30
11:20
runtime: Generate and install Amiga inline header check-in: ec343c7ae6 user: js tags: trunk
10:54
runtime: Generate function table from .sfd file check-in: 28fdcad722 user: js tags: trunk
10:47
runtime: Replace .fd file with .sfd file check-in: dca587df1f user: js tags: trunk
Changes

Modified src/runtime/Makefile from [f20a53b036] to [16c807433c].

34
35
36
37
38
39
40
41
42
43
44
45
46

47
48
49
50
51
52
53
54
LIB_OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_LIB_A}
AMIGA_LIB_OBJS_EXTRA = amiga-glue.amigalib.o		\
		       amiga-library.amigalib.o		\
		       ${LOOKUP_ASM_LOOKUP_ASM_A}

include ../../buildsys.mk

ppcinline.h: ObjFW_RT.fd protos.h
	cvinclude.pl			\
		--root ObjFW_RT		\
		--fd ObjFW_RT.fd	\
		--clib protos.h		\
		--inline $@


CPPFLAGS += -I. -I.. -I../..				\
	    -DOF_COMPILING_OBJFW_RT			\
	    -DOBJFW_RT_LIB_MAJOR=${OBJFW_RT_LIB_MAJOR}	\
	    -DOBJFW_RT_LIB_MINOR=${OBJFW_RT_LIB_MINOR}
AMIGA_LIB_CFLAGS += -DOBJC_AMIGA_LIBRARY
LD = ${OBJC}
FRAMEWORK_LIBS = ${LIBS}







<
|
|
|
<
<
>








34
35
36
37
38
39
40

41
42
43


44
45
46
47
48
49
50
51
52
LIB_OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_LIB_A}
AMIGA_LIB_OBJS_EXTRA = amiga-glue.amigalib.o		\
		       amiga-library.amigalib.o		\
		       ${LOOKUP_ASM_LOOKUP_ASM_A}

include ../../buildsys.mk


amiga-library.m: amiga-library-functable.inc

amiga-library-functable.inc: ObjFW_RT.sfd


	sfdc -q --mode=functable -o $@ $<

CPPFLAGS += -I. -I.. -I../..				\
	    -DOF_COMPILING_OBJFW_RT			\
	    -DOBJFW_RT_LIB_MAJOR=${OBJFW_RT_LIB_MAJOR}	\
	    -DOBJFW_RT_LIB_MINOR=${OBJFW_RT_LIB_MINOR}
AMIGA_LIB_CFLAGS += -DOBJC_AMIGA_LIBRARY
LD = ${OBJC}
FRAMEWORK_LIBS = ${LIBS}

Modified src/runtime/amiga-library.m from [da3bf90dad] to [edb787949c].

183
184
185
186
187
188
189


190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256

void
abort(void)
{
	libc->abort();
}



static ULONG function_table[] = {
	(ULONG)lib_open,
	(ULONG)lib_close,
	(ULONG)lib_expunge,
	(ULONG)lib_null,
	/* Functions for the linklib */
	(ULONG)objc_set_libc,
	/* Used by the compiler - these need glue code */
	(ULONG)glue___objc_exec_class,
	(ULONG)glue_objc_msg_lookup,
	(ULONG)glue_objc_msg_lookup_stret,
	(ULONG)glue_objc_msg_lookup_super,
	(ULONG)glue_objc_msg_lookup_super_stret,
	(ULONG)glue_objc_lookUpClass,
	(ULONG)glue_objc_getClass,
	(ULONG)glue_objc_getRequiredClass,
	(ULONG)glue_objc_exception_throw,
	(ULONG)glue_objc_sync_enter,
	(ULONG)glue_objc_sync_exit,
	(ULONG)glue_objc_getProperty,
	(ULONG)glue_objc_setProperty,
	(ULONG)glue_objc_getPropertyStruct,
	(ULONG)glue_objc_setPropertyStruct,
	(ULONG)glue_objc_enumerationMutation,
	/* Functions declared in ObjFW_RT.h */
	(ULONG)sel_registerName,
	(ULONG)sel_getName,
	(ULONG)sel_isEqual,
	(ULONG)objc_allocateClassPair,
	(ULONG)objc_registerClassPair,
	(ULONG)objc_getClassList,
	(ULONG)objc_copyClassList,
	(ULONG)class_isMetaClass,
	(ULONG)class_getName,
	(ULONG)class_getSuperclass,
	(ULONG)class_getInstanceSize,
	(ULONG)class_respondsToSelector,
	(ULONG)class_conformsToProtocol,
	(ULONG)class_getMethodImplementation,
	(ULONG)class_getMethodImplementation_stret,
	(ULONG)class_getMethodTypeEncoding,
	(ULONG)class_addMethod,
	(ULONG)class_replaceMethod,
	(ULONG)object_getClass,
	(ULONG)object_setClass,
	(ULONG)object_getClassName,
	(ULONG)protocol_getName,
	(ULONG)protocol_isEqual,
	(ULONG)protocol_conformsToProtocol,
	(ULONG)objc_exit,
	(ULONG)objc_setUncaughtExceptionHandler,
	(ULONG)objc_setForwardHandler,
	(ULONG)objc_setEnumerationMutationHandler,
	(ULONG)objc_zero_weak_references,
	-1,
};


static struct {
	ULONG data_size;
	ULONG *function_table;
	ULONG *data_table;
	struct Library *(*init_func)(
	    struct ExecBase *exec_base OBJC_M68K_REG("a6"),
	    BPTR seg_list OBJC_M68K_REG("a0"),
	    struct ObjFWRTBase *base OBJC_M68K_REG("d0"));
} initTable = {
	sizeof(struct ObjFWRTBase),







>
>
|
|
|
|
|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|

>



|







183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
















































198
199
200
201
202
203
204
205
206
207
208
209
210
211

void
abort(void)
{
	libc->abort();
}

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
static CONST_APTR function_table[] = {
	(CONST_APTR)lib_open,
	(CONST_APTR)lib_close,
	(CONST_APTR)lib_expunge,
	(CONST_APTR)lib_null,
#include "amiga-library-functable.inc"
















































	(CONST_APTR)-1,
};
#pragma GCC diagnostic pop

static struct {
	ULONG data_size;
	CONST_APTR *function_table;
	ULONG *data_table;
	struct Library *(*init_func)(
	    struct ExecBase *exec_base OBJC_M68K_REG("a6"),
	    BPTR seg_list OBJC_M68K_REG("a0"),
	    struct ObjFWRTBase *base OBJC_M68K_REG("d0"));
} initTable = {
	sizeof(struct ObjFWRTBase),