[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] HEAD and GBC on Windows.
From: |
Camm Maguire |
Subject: |
Re: [Gcl-devel] HEAD and GBC on Windows. |
Date: |
16 Dec 2005 10:34:00 -0500 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings!
"Mike Thomas" <address@hidden> writes:
> Hi Camm.
>
> | > Following your overnight advice I set base in unexnt.c to
> | > DBEGIN+PAGESIZE*500 rather than DBEGIN which puts DBEGIN below the
> | > DBEGIN+start
> | > of the heap sufficiently to avoid that early call to GBC.
> | >
> |
> | Great!
> |
> | > raw_pre_gcl.exe then barfs in the first find_package due to
> | a problem
> | > in the check_package_designator() macro.
> | >
> |
> | I've seen this before too, but have forgotten the cause. It
> | is simple if memory serves.
>
>
> Would you agee that the sequence below is wrong, specifically the part
> where set_type_of alters the value of *(object*) obj.
>
> The new value of 0x80090000 is above the immediate fixnum configuration
> constant and so causes the later problem with find_package.
>
Is it possible the endianness of your system is being incorrectly
determined by configure? This is goeverned by the LITTLE_END C macro.
Briefly, cvs head now determines the object type from the first word
indirected by each object pointer. Cons are even, 8 byte aligned
valid addresses in the heap, or immediate fixnums. All other types
are odd integers, indicating that they should be interpreted as a
special type word which has a type field enumerating the actual type.
I.e. if *(unsigned *)obj is odd (and not an imm fixnum), then the type is
obj->d.t
otherwise
obj->c.c_cdr
is either another object, or an imm fixnum.
You can look at obj->d in gdb. obj->d.e should be set for non-cons
objects as is the case here. This should be the least significant
bit, but it appears that the most significant is set in your case.
Take care,
> ==========================================================
> Breakpoint 3, alloc_object (t=t_string) at alloc.c:364
> 364 if ((obj=maybe_alloc_on_stack(tm->tm_size,t))) {
> (gdb) s
> 370 CHECK_INTERRUPT;
> (gdb) n
> 372 obj = tm->tm_free;
> (gdb) n
> 373 if (obj == OBJNULL) {
> (gdb) n
> 389 tm->tm_free = OBJ_LINK(obj);
> (gdb) s
> 390 --(tm->tm_nfree);
> (gdb) obj->c.c_cdr
> Undefined command: "obj-". Try "help".
> (gdb) p obj->c.c_cdr
> $1 = 0xa0170000
> (gdb) p *(object *) obj
> $2 = 0xa0170000
> (gdb) n
> 391 (tm->tm_nused)++;
> (gdb) n
> 392 set_type_of(obj,t);/*FIXME try removing this*/
> (gdb) s
> 393 return(obj);
> (gdb) p *(object *) obj
> $3 = 0x80090000
> (gdb) p obj->c.c_cdr
> $4 = 0x80090000
> (gdb)
> ==========================================================
>
> Cheers
>
> Mike Thomas
>
>
> _______________________________________________
> Gcl-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gcl-devel
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
- [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/13
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/13
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/14
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/15
- Re: [Gcl-devel] HEAD and GBC on Windows.,
Camm Maguire <=
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/15
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/15
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/18
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/18
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/19
- RE: [Gcl-devel] HEAD and GBC on Windows., Mike Thomas, 2005/12/20