On Tue, May 04, 2004 at 02:55:25PM +0200, Leopold Toetsch wrote: > Bernhard Schmalhofer <[EMAIL PROTECTED]> wrote: > > > 'libnci.so' is used for testing the native call interface. However I noticed > > that the tests in t/pmc/nci.t were skipped, because 'libnci.so' wasn't built > > by default. The attached patch adds that library to the target 'all'. > > Thanks, applied. Let's see, which platforms break.
OS X. With this patch I get make to pass, but I suspect that this patch will break Win32, assuming that $(LIBNCI_SO) is libnci.dll on Win32, as there is a second, explict libnci.dll target next in the Makefile Index: config/gen/makefiles/root.in =================================================================== RCS file: /cvs/public/parrot/config/gen/makefiles/root.in,v retrieving revision 1.205 diff -d -u -r1.205 root.in --- config/gen/makefiles/root.in 4 May 2004 12:55:21 -0000 1.205 +++ config/gen/makefiles/root.in 6 May 2004 13:51:12 -0000 @@ -1141,7 +1141,7 @@ $(SRC)/libnci$(O): $(SRC)/nci_test.c -$(DYNEXT_DIR)/libnci.so: $(SRC)/nci_test$(O) +$(LIBNCI_SO): $(SRC)/nci_test$(O) $(LD) $(LD_SHARED) $(LDFLAGS) \ $(LD_OUT)$@ $(SRC)/nci_test$(O) However, with this I now have a failing regression test. running in gdb: Starting program: /Users/nick/Parrot/parrot02/parrot -b --gc-debug /Users/nick/Parrot/parrot02/t/pmc/nci_20.pasm Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries .+ done Reading symbols for shared libraries . done Program received signal EXC_BAD_ACCESS, Could not access memory. 0x0002e354 in pobject_lives (interpreter=0x1000200, obj=0xd13a68) at src/dod.c:194 194 PObj_live_SET(obj); (gdb) print *obj $1 = { obj = { u = { _b = { _bufstart = 0x7c0802a6, _buflen = 3217162232 }, _ptrs = { _struct_val = 0x7c0802a6, _pmc_val = 0xbfc1fff8 }, _int_val = 2080899750, _num_val = 2.9248558425698019e+289, _string_val = 0x7c0802a6 }, flags = 2415984648, _pobj_version = 2485256112 } } which is now confusing me mightily, because I can change the value of flags inside gdb with a set command. Yet attempting to restart the process will fail with the EXC_BAD_ACCESS signal straight away. Am I confusing what EXC_BAD_ACCESS means? Error is here: (gdb) where #0 0x0002e354 in pobject_lives (interpreter=0x1000200, obj=0xd13a68) at src/dod.c:194 #1 0x0002e434 in trace_active_PMCs (interpreter=0x1000200, trace_stack=1) at src/dod.c:254 #2 0x0002f224 in Parrot_do_dod_run (interpreter=0x1000200, flags=1) at src/dod.c:1051 #3 0x000321c8 in string_compare (interpreter=0x1000200, s1=0x1001ba8, s2=0x1012a40) at src/string.c:1710 #4 0x001e4360 in build_call_func (interpreter=0x1000200, pmc_nci=0x100f6a0, signature=0x1001ba8) at src/nci.c:2925 #5 0x001ae474 in Parrot_NCI_set_string_keyed (interpreter=0x1000200, pmc=0x100f6a0, func=0xd13a68, value=0x1001ba8) at classes/nci.c:86 #6 0x0006b144 in Parrot_set_p_k_sc (cur_opcode=0xc0b218, interpreter=0x1000200) at ops/set.ops:458 #7 0x00112318 in runops_slow_core (interpreter=0x1000200, pc=0xc0b218) at src/runops_cores.c:146 #8 0x0000b4fc in runops_int (interpreter=0x1000200, offset=0) at src/interpreter.c:819 #9 0x0000b62c in runops (interpreter=0x1000200, offset=0) at src/interpreter.c:872 #10 0x0000fb50 in Parrot_runcode (interpreter=0x1000200, argc=1, argv=0xbffff784) at src/embed.c:742 #11 0x0000f960 in Parrot_runcode (interpreter=0x1000200, argc=1, argv=0xbffff784) at src/embed.c:676 #12 0x00004284 in main (argc=1, argv=0xbffff784) at imcc/main.c:556 Nicholas Clark