>>>> "Olivier" == Olivier Galibert
<galibert(a)pobox.com> writes:
> INLINE int
> bit_vector_bit (struct Lisp_Bit_Vector *v, int i)
> {
> unsigned int ui = (unsigned int) i;
>
> return (((v)->bits[ui >> LONGBITS_LOG2] >> (ui &
(LONGBITS_POWER_OF_2 - 1)))
> & 1);
> }
Olivier> While Lisp_Bit_Vector::bits is declared as an int array for alignment
Olivier> purposes, which is arguably a bug but not a real problem (because of
Olivier> the long size preceding it, and the alignment requirements of sizeof),
Olivier> they really are allocated as longs. This code is correct, and I'm
Olivier> sending a patch for the declaration.
My private workspace already has this in lisp.h:
struct Lisp_Bit_Vector
{
struct lrecord_header lheader;
Lisp_Object next;
size_t size;
unsigned long bits[1];
};
typedef struct Lisp_Bit_Vector Lisp_Bit_Vector;
> The end result is that temacs goes off to visit Elvis when it is
> trying to do the dynodump.
Olivier> Dynodump, being sun specific, has afaik never been tested on a 64bits
Olivier> architecture. The problem probably lies there. I don't think anybody
Olivier> here has the required hardware to fix it, so all I can say is good
Olivier> luck. But you can trust the common code for 64bits cleanliness.
There's this code in src/s/sol2.h, which tries to ensure that
dynodump is only used for SunOS 5.5 and earlier.
#undef UNEXEC
#if OS_RELEASE < 56
#define UNEXEC "unexsol2.o"
#else
#define UNEXEC "unexsol2-6.o"
#endif
Georg Nikodym <georgn(a)Canada.Sun.COM> is the authority on getting
dumping to work on Suns, and has a successful build of XEmacs on
Solaris Bleeding-Edge Operating Environment.
Martin