On Friday 01 June 2007 16:51:18 Steve Peters wrote: > The attached patch gets Parrot partially compiles with C++ (g++ actually). > This work gets the compile going through the start of the imcc compiler.
Danger! The patch to src/stm/waitlist.c causes segfaults in t/stm/runtime.t, test 3: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1230156912 (LWP 30260)] 0xb7e02645 in alloc_entry (interp=0x8231358) at src/stm/waitlist.c:57 57 assert(thr->entries[i]->head == NULL); (gdb) x thr 0x8237700: 0x00000000 (gdb) p thr $1 = (struct waitlist_thread_data *) 0x8237700 The patch to Parrot::Ops2c::Utils causes errors about multiple definitions of `core_numops' in interpreter.o and core_ops.o. This patch to the CGP core: --- lib/Parrot/OpTrans/CGP.pm. (revision 3741) +++ lib/Parrot/OpTrans/CGP.pm. (local) @@ -68,7 +68,7 @@ return $pred_def . <<END; /* defines - $0 -> $type */ # define opcode_to_prederef(i, op) \\ - (void**) (op - CONTEXT(i->ctx)->pred_offset) + (opcode_t*) (op - (opcode_t*)CONTEXT(i->ctx)->pred_offset) ... causes segfaults for me in the shootout tests (probably because they run with -jC). If I remove the second cast from the line, the segfault goes away. I applied the rest as r18744. Thanks! -- c