[comp.emacs] Help with GNU emacs 18.55 on sunos 4.1

mike@rad.wustl.edu (Mike Ehlers) (09/26/90)

I have been trying to compile GNU emacs under SUNOS 4.1 (on both
sparc and sun3 models.  The problem is that xemacs gets built but
runs aborts with Fatal Error (6).  The dbx traceback looks like:

program terminated by signal ABRT (abort)
(dbx) kill(0x278, 0x6) at 0x407ec
abort() at 0x427a9
malloc(n = 5), line 515 in "malloc.c"
yp_unbind() at 0x45dc3
yp_get_default_domain(0xe586a) at 0x45dfd
setpwent() at 0x414e3
getpwuid(0x0) at 0x41369
init_editfns(), line 69 in "editfns.c"
main(argc = 1, argv = 0xdffff2c, envp = 0xdffff34), line 361 in "emacs.c"
start1(ignore = 0, argc = 1, xargv = 0xdffff58 "xemacs"), line 395 in "crt0.c"
warning: object file read error: text address not found
warning: core file read error: data space address too high
warning: core file read error: data space address too high
_start(), line 373 in "crt0.c"

Any ideas/suggestions appreciated.

thanks

mike

------------------------------------------------------------
Michael Ehlers				mike@wucs1.wustl.edu 
Department of Computer Science		uunet!wucs1!mike
Washington University			(314)-889-6429
Box 1045, Bryan 509
1 Brookings Drive
St. Louis, MO 63130   USA

	
------------------------------------------------------------
Michael Ehlers				mike@wucs1.wustl.edu 
Department of Computer Science		uunet!wucs1!mike
Washington University			(314)-889-6429

denio@beno.CSS.GOV (Dennis O'Neill) (09/27/90)

In article <1990Sep26.163734.4471@cec1.wustl.edu> mike@rad.wustl.edu
(Mike Ehlers) writes:
>I have been trying to compile GNU emacs under SUNOS 4.1 (on both
>sparc and sun3 models.  The problem is that xemacs gets built but
>runs aborts with Fatal Error (6).  The dbx traceback looks like:
>

   ... I also got ...

>program terminated by signal ABRT (abort)
>(dbx) kill(0x278, 0x6) at 0x407ec
>abort() at 0x427a9
>malloc(n = 5), line 515 in "malloc.c"
>yp_unbind() at 0x45dc3
>yp_get_default_domain(0xe586a) at 0x45dfd
>setpwent() at 0x414e3
>getpwuid(0x0) at 0x41369
>init_editfns(), line 69 in "editfns.c"
>main(argc = 1, argv = 0xdffff2c, envp = 0xdffff34), line 361 in "emacs.c"

  ... but I didn't get the following ...

>start1(ignore = 0, argc = 1, xargv = 0xdffff58 "xemacs"), line 395 in "crt0.c"
>warning: object file read error: text address not found
>warning: core file read error: data space address too high
>warning: core file read error: data space address too high
>_start(), line 373 in "crt0.c"

I also tried compiling with the X stuff enabled; same error messages,but
the traceback showed a different path, to wit:

(dbx) where
kill() at 0x7ceb0
abort() at 0x80d4c
malloc(n = 5), line 515 in "malloc.c"
copystring() at 0x7995c
_XConnectDisplay() at 0x79a14
XOpenDisplay() at 0x703d8
x_term_init(), line 1534 in "x11term.c"
init_display(), line 1411 in "dispnew.c"
main(argc = 1, argv = 0xf7fffb4c, envp = 0xf7fffb54), line 357 in "emacs.c"

System info:
  o  Sun SparcStation 1+
  o  Sun OS 4.1
  o  X Version 11 Release 4 Patchlevel 14, generic
  o  window manager twm
  o  C compiler is "cc"

Options set in src/config.h are:
#include "s-sunos4.h"
#include "m-sparc.h"
#define HAVE_X_WINDOWS
#define X11
#define HAVE_X_MENU


So, Mike is not alone.  Any ideas?

Dennis O'Neill
denio@seismo.css.gov

djm@eng.umd.edu (David J. MacKenzie) (09/27/90)

There are several bugs and incompatibilities involved; some are in
SunOS 4.1, and some are in emacs.  Here are diffs from 18.55 that make
it work (also a patch for an Ultrix bug on Decstations).

diff -2rc dist-18.55.dist/src/alloc.c dist-18.55/src/alloc.c
*** dist-18.55.dist/src/alloc.c	Mon Feb 13 05:23:35 1989
--- dist-18.55/src/alloc.c	Mon Nov 27 23:30:13 1989
***************
*** 665,673 ****
  #define NSTATICS 200
  
- char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0};
- 
  int staticidx = 0;
  
  #define staticvec ((Lisp_Object **) staticvec1)
  
  /* Put an entry in staticvec, pointing at the variable whose address is given */
--- 665,676 ----
  #define NSTATICS 200
  
  int staticidx = 0;
  
+ #ifdef __GNUC__
+ Lisp_Object *staticvec[NSTATICS] = {0};
+ #else
+ char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0};
  #define staticvec ((Lisp_Object **) staticvec1)
+ #endif
  
  /* Put an entry in staticvec, pointing at the variable whose address is given */
diff -2rc dist-18.55.dist/src/m-pmax.h dist-18.55/src/m-pmax.h
*** dist-18.55.dist/src/m-pmax.h	Thu Jun  8 11:53:55 1989
--- dist-18.55/src/m-pmax.h	Fri Jul 13 19:16:29 1990
***************
*** 2,3 ****
--- 2,5 ----
  #undef LIBS_MACHINE
  #undef BIG_ENDIAN
+ #define DATA_START 0x10000000
+ #define DATA_SEG_BITS 0x10000000
diff -2rc dist-18.55.dist/src/malloc.c dist-18.55/src/malloc.c
*** dist-18.55.dist/src/malloc.c	Fri Apr  7 21:12:10 1989
--- dist-18.55/src/malloc.c	Wed Jul 11 16:11:15 1990
***************
*** 477,481 ****
--- 477,486 ----
       Both the beginning of the header and the beginning of the
       block should be on an eight byte boundary.  */
+ #ifdef sun
+   /* SunOS 4.1 localtime scribbles on the ninth byte.  */
+   nbytes = (n + ((sizeof *p + 15) & ~15) + EXTRA + 15) & ~15;
+ #else
    nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
+ #endif
    {
      register unsigned int   shiftr = (nbytes - 1) >> 2;
diff -2rc dist-18.55.dist/src/process.c dist-18.55/src/process.c
*** dist-18.55.dist/src/process.c	Sun Aug  6 17:01:31 1989
--- dist-18.55/src/process.c	Fri Jul 13 19:18:25 1990
***************
*** 1032,1035 ****
--- 1032,1038 ----
  	    ioctl (j, TIOCNOTTY, 0);
  	    close (j);
+ #ifndef USG
+ 	    setpgrp (0, 0);
+ #endif
  	  }
  #endif /* TIOCNOTTY */
diff -2rc dist-18.55.dist/src/x11term.c dist-18.55/src/x11term.c
*** dist-18.55.dist/src/x11term.c	Wed Aug  2 21:56:42 1989
--- dist-18.55/src/x11term.c	Fri Jul 13 19:22:32 1990
***************
*** 1213,1216 ****
--- 1213,1218 ----
  #endif /* not sun */
  	
+ static XComposeStatus status;
+ 
  internal_socket_read(bufp, numchars)
  	register unsigned char *bufp;
***************
*** 1223,1227 ****
    BLOCK_INPUT_DECLARE ();
    XEvent event;
-   XComposeStatus status;
    KeySym keysym;
  
--- 1225,1228 ----
***************
*** 1330,1334 ****
        nbytes = XLookupString (&event,
  			      mapping_buf, 20, &keysym,
! 			      0);
        /* Someday this will be unnecessary as we will
  	 be able to use XRebindKeysym so XLookupString
--- 1331,1335 ----
        nbytes = XLookupString (&event,
  			      mapping_buf, 20, &keysym,
! 			      &status);
        /* Someday this will be unnecessary as we will
  	 be able to use XRebindKeysym so XLookupString
--
David J. MacKenzie <djm@eng.umd.edu> <djm@ai.mit.edu>