Subject: Re: Solaris emulation
To: Peter Svensson <petersv@df.lth.se>
From: Stefan Monnier <stefan.monnier@lia.di.epfl.ch>
List: port-sparc
Date: 02/19/1996 20:09:37
> You need to run the SVR4_MAKEDEV in /usr/src/etc/etc.svr4. It will build 
> the necesarry devices. I have run a few Solaris 2.4 binaries, without too 
> much trouble.

Great !

> Eh, xlock I am not so sure about, but xclock works.

Oops, I meant xclock.
So, now xclock works !
But of course, as soon as I tried something else, it's not quite as convincing:
- less as well as MH's scan doesn't output the CRs (only the LFs) which 
  makes for unreadbale output. Any idea how to solve this problem ?
  Of course tons of other such programs show the same behavior (gdb, ...)
s- emacs running without X has trouble executing the startup files (site-init
  and ~/.emacs), even though "M-x load-file ~/.emacs" after startup works fine.
- emacs running with X exits immediately with error code 22.
  The trace always ends with something like:

 17345 emacs-19.29 PSIG  SIGALRM caught handler=0x434bfb4 mask=0x0 code=0x0
 17345 emacs-19.29 RET   read 1566/0x61e
 17345 emacs-19.29 CALL  ioctl(0x4,FIONREAD,0xf7fdc4cc)
 17345 emacs-19.29 RET   ioctl 0
 17345 emacs-19.29 CALL  sigaction(0xe,0xf7ffd698,0x16d05c)
 17345 emacs-19.29 RET   sigaction 0
 17345 emacs-19.29 CALL  alarm(0x2)
 17345 emacs-19.29 RET   alarm 0
 17345 emacs-19.29 CALL  context(0x1,0xf7ffd930)
 17345 emacs-19.29 RET   context -1 errno 22 Invalid argument
 17345 emacs-19.29 CALL  context(0x1,0xf7ffd930)
 17345 emacs-19.29 RET   context -1 errno 22 Invalid argument
 17345 emacs-19.29 CALL  exit(0x16)

- for some reason access to usr/lib/libdl.so.1 is not reliable (it's NFS mounted
  from a Solaris-2.4 machine). I sometimes get the error:
	ld.so.1: /logiciels/distribution/public/X11R5/sun4-5.2/bin/xterm: fatal: /usr/lib/libdl.so.1: corrupt or truncated file
	Killed
  This error shows up only from time to time with xclock, but always showed up
  with xterm (and never showed up with emacs). I haven't tried it with a local
  copy because the NFS mount is used for so many other files (like the terminfo
  database, which I believe is not available in NetBSD).
 
- xclock sometimes crashes with a segmentation fault. Sadly I can't use the
  core file since gdb doesn't understand Solaris's executable format and
  Solaris's gdb doesn't understand NetBSD's /proc format. And the trace
  isn't too helpful either:

 17386 xclock   NAMI  "/emul/svr4/usr/lib/libresolv.so.1"
 17386 xclock   NAMI  "/emul/svr4"
 17386 xclock   NAMI  "/emul/svr4/usr/lib/libresolv.so.1"
 17386 xclock   RET   open 3
 17386 xclock   CALL  fstat(0x3,0xf7ffe740)
 17386 xclock   RET   fstat 0
 17386 xclock   CALL  mmap(0,0x1000,0x1,0x80000001,0x3,0)
 17386 xclock   RET   mmap 67244032/0x4021000
 17386 xclock   CALL  mmap(0,0x16000,0x5,0x80000001,0x3,0)
 17386 xclock   RET   mmap 70328320/0x4312000
 17386 xclock   CALL  munmap(0x4312000,0x16000)
 17386 xclock   RET   munmap 0
 17386 xclock   CALL  mmap(0,0x26000,0x5,0x80000001,0x3,0)
 17386 xclock   RET   mmap 70328320/0x4312000
 17386 xclock   CALL  munmap(0x4312000,0xe000)
 17386 xclock   RET   munmap 0
 17386 xclock   CALL  mmap(0x4320000,0x5851,0x5,0x80000012,0x3,0)
 17386 xclock   RET   mmap 70385664/0x4320000
 17386 xclock   CALL  munmap(0x4326000,0xf000)
 17386 xclock   RET   munmap 0
 17386 xclock   CALL  mmap(0x4335000,0xaa8,0x7,0x80000012,0x3,0x5000)
 17386 xclock   RET   mmap 70471680/0x4335000
 17386 xclock   CALL  munmap(0x4336000,0x2000)
 17386 xclock   RET   munmap 0
 17386 xclock   PSIG  SIGSEGV SIG_DFL
 17386 xclock   NAMI  "xclock.core"

  since it seems related to dynamic loading, maybe it's related to the previous
  libdl.so.1 problem ?


	Stefan