Gary_Edmunds_Miller@cup.portal.com (11/15/89)
I was just using Emacs version 18.55 to test a recent port of
GCC to a Charles River Data Systems/Universe 32. In the
process a bug in alloc.c in Emacs 18.55 was found that causes a core
dump. As an approximation of the code:
-----
char staticvec1[NSTATICS * sizeof(Lisp_Object *)] = {0};
#define staticvec((Lisp_Object **)) staticvec1)
void
staticpro(varaddress)
Lisp_Object *varaddress;
{
staticvec[staticidx++] = varaddress;
-----
Now it just so happens that staticvec1 was aligned on an ODD byte,
but GCC used a MOVE.L instruction on a 68000. A word write to an
odd address causes a TRAP on a 68000. The fix is to define
staticvec1 as an int and to descreas the size of staticvec1 by
sizeof(int).
..
RGDS
GARY