From 7b1908898e237edd79e0dbd1196b85d8fcd2abb9 Mon Sep 17 00:00:00 2001 From: Robert Schuster Date: Wed, 16 Jan 2008 16:08:33 +0000 Subject: cacaoh-native: Small cleanup in include file. cacao: Added N800 quirk and a patch to fix AttachCurrentThread behavior. --- packages/cacao/cacao_0.98+hg20071001.bb | 8 +- packages/cacao/cacaoh-native.inc | 3 +- .../cacao/files/cacao-0.98+hg-attachthread.patch | 89 ++++++++++++++++++++-- 3 files changed, 91 insertions(+), 9 deletions(-) (limited to 'packages') diff --git a/packages/cacao/cacao_0.98+hg20071001.bb b/packages/cacao/cacao_0.98+hg20071001.bb index 38fcb37b82..65203189b4 100644 --- a/packages/cacao/cacao_0.98+hg20071001.bb +++ b/packages/cacao/cacao_0.98+hg20071001.bb @@ -1,6 +1,6 @@ require cacao.inc -PR = "r5" +PR = "r6" SRC_URI = "\ http://jalimo.evolvis.org/repository/sources/cacao-${PV}.tar.bz2;md5sum=9ff10c929bd0cbf15909107c1aff7518 \ @@ -14,3 +14,9 @@ EXTRA_OECONF += "\ --enable-annotations \ " +# Quirks for Nokia N800: +# - with mfloat-abi=softfp the runtime fails to run anything +# - without --enable-softfloat it cannot find files within Jars +TARGET_CC_ARCH_nokia800 = "-march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=soft" + +EXTRA_OECONF_append_nokia800 = "--enable-softfloat" diff --git a/packages/cacao/cacaoh-native.inc b/packages/cacao/cacaoh-native.inc index 1f81672e7f..3e7fdd60c6 100644 --- a/packages/cacao/cacaoh-native.inc +++ b/packages/cacao/cacaoh-native.inc @@ -8,8 +8,7 @@ S = "${WORKDIR}/cacao-${PV}" PR = "r1" -inherit autotools -inherit native +inherit autotools native EXTRA_OECONF = " \ --with-classpath-includedir=${STAGING_INCDIR}/classpath \ diff --git a/packages/cacao/files/cacao-0.98+hg-attachthread.patch b/packages/cacao/files/cacao-0.98+hg-attachthread.patch index b3dfabc625..cda01bcfb2 100644 --- a/packages/cacao/files/cacao-0.98+hg-attachthread.patch +++ b/packages/cacao/files/cacao-0.98+hg-attachthread.patch @@ -1,12 +1,89 @@ -diff -r d8fe2c3ba284 src/threads/native/threads.c ---- a/src/threads/native/threads.c Sun Dec 30 17:43:35 2007 +0100 -+++ b/src/threads/native/threads.c Wed Jan 02 16:41:57 2008 +0100 -@@ -1432,6 +1432,8 @@ bool threads_attach_current_thread(JavaV +# Makes the JNI function AttachCurrentThread work properly. + +Index: cacao-0.98+hg20071001/src/mm/boehm-gc/include/gc.h +=================================================================== +--- cacao-0.98+hg20071001.orig/src/mm/boehm-gc/include/gc.h 2008-01-15 14:45:41.000000000 +0100 ++++ cacao-0.98+hg20071001/src/mm/boehm-gc/include/gc.h 2008-01-15 14:46:30.000000000 +0100 +@@ -905,6 +905,8 @@ + /* in returned list. */ + extern void GC_thr_init GC_PROTO((void));/* Needed for Solaris/X86 */ - threads_thread_set_object(thread, (java_handle_t *) t); ++extern void GC_thr_init_foreign GC_PROTO((void));/* Needed for Solaris/X86 */ ++ + #endif /* THREADS && !SRC_M3 */ + + #if defined(GC_WIN32_THREADS) && !defined(__CYGWIN32__) && !defined(__CYGWIN__) +Index: cacao-0.98+hg20071001/src/mm/boehm-gc/pthread_support.c +=================================================================== +--- cacao-0.98+hg20071001.orig/src/mm/boehm-gc/pthread_support.c 2008-01-15 14:45:41.000000000 +0100 ++++ cacao-0.98+hg20071001/src/mm/boehm-gc/pthread_support.c 2008-01-15 14:46:30.000000000 +0100 +@@ -864,6 +864,27 @@ + } + #endif /* GC_NETBSD_THREADS */ -+ threads_set_current_threadobject(thread); ++void GC_thr_init_foreign() ++{ ++# ifndef GC_DARWIN_THREADS ++ int dummy; ++# endif ++ GC_thread t; ++ LOCK(); ++ ++ /* Add the initial thread, so we can stop it. */ ++ t = GC_new_thread(pthread_self()); ++# ifdef GC_DARWIN_THREADS ++ t -> stop_info.mach_thread = mach_thread_self(); ++# else ++ t -> stop_info.stack_ptr = (ptr_t)(&dummy); ++# endif ++ t -> flags = DETACHED; ++ ++ UNLOCK(); + ++} ++ + /* We hold the allocation lock. */ + void GC_thr_init() + { +Index: cacao-0.98+hg20071001/src/mm/boehm.c +=================================================================== +--- cacao-0.98+hg20071001.orig/src/mm/boehm.c 2008-01-15 14:45:41.000000000 +0100 ++++ cacao-0.98+hg20071001/src/mm/boehm.c 2008-01-15 14:46:30.000000000 +0100 +@@ -108,6 +108,10 @@ + GC_expand_hp(heapstartsize - heapcurrentsize); + } + ++void gc_init_foreign() ++{ ++ GC_thr_init_foreign(); ++} + + static void gc_ignore_warnings(char *msg, GC_word arg) + { +Index: cacao-0.98+hg20071001/src/mm/gc-common.h +=================================================================== +--- cacao-0.98+hg20071001.orig/src/mm/gc-common.h 2008-01-15 14:45:41.000000000 +0100 ++++ cacao-0.98+hg20071001/src/mm/gc-common.h 2008-01-15 14:46:30.000000000 +0100 +@@ -74,6 +74,7 @@ + void gc_finalize_all(void); + void *gc_out_of_memory(size_t bytes_requested); + ++void gc_init_foreign(); + + /* inlined functions **********************************************************/ + +Index: cacao-0.98+hg20071001/src/threads/native/threads.c +=================================================================== +--- cacao-0.98+hg20071001.orig/src/threads/native/threads.c 2008-01-15 14:45:41.000000000 +0100 ++++ cacao-0.98+hg20071001/src/threads/native/threads.c 2008-01-15 16:01:22.000000000 +0100 +@@ -1392,7 +1392,10 @@ + /* thread is completely initialized */ ++ gc_init_foreign(); ++ threads_thread_state_runnable(thread); ++ threads_set_current_threadobject(thread); + + DEBUGTHREADS("attaching", thread); + -- cgit 1.2.3-korg