Date: Tue, 1 Jul 2003 00:53:06 +0200 From: Anders Nordby <anders@FreeBSD.org> To: freebsd-sparc64@freebsd.org Cc: freebsd-ports@FreeBSD.org Subject: Making VNC work on FreeBSD/Sparc64 Message-ID: <20030630225305.GA28861@totem.fix.no>
next in thread | raw e-mail | index | archive | help
--NzB8fVQJ5HfG6fxh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, Attached is a minimal diff to make the vnc port successfully build + run (Xvnc starts!) on FreeBSD/Sparc64. It doesn't work well yet, however I thought I'd share my results so far in case someone wanted to help out. When trying to connect to Xvnc running in 5.1-RELEASE on my Blade 100 from 4.7-STABLE on i386, vncviewer dumps core. Truss log of vncviewer running on my i386 system when this happens: (..) break(0x80de000) = 0 (0x0) socket(0x2,0x1,0x0) = 4 (0x4) connect(0x4,{ AF_INET 0.0.0.0:0 },16) = 0 (0x0) setsockopt(0x4,0x6,0x1,0xbfbff718,0x4) = 0 (0x0) getpeername(0x4,{ AF_INET 192.168.78.3:5901 },0xbfbff664) = 0 (0x0) getsockname(0x4,{ AF_INET 192.168.78.1:2781 },0xbfbff664) = 0 (0x0) select(0x5,0xbfbff270,0x0,0x0,0xbfbff268) = 0 (0x0) poll(0x80cd1e0,0x1,0x0) = 0 (0x0) ioctl(3,FIONREAD,0xbfbfe9fc) = 0 (0x0) ioctl(3,FIONREAD,0xbfbfe9fc) = 0 (0x0) gettimeofday(0xbfbff1ec,0x0) = 0 (0x0) poll(0x80cd1e0,0x2,0xffffffff) = 1 (0x1) ioctl(3,FIONREAD,0xbfbfea4c) = 0 (0x0) ioctl(3,FIONREAD,0xbfbfea4c) = 0 (0x0) poll(0x80cd1e0,0x1,0x0) = 0 (0x0) read(0x4,0x80ce000,0x2000) = 12 (0xc) VNC server supports protocol version 3.3 (viewer 3.3) write(2,0xbfbfeff8,54) = 54 (0x36) write(4,0x80d0000,12) = 12 (0xc) select(0x5,0xbfbff270,0x0,0x0,0xbfbff268) = 0 (0x0) poll(0x80cd1e0,0x1,0x0) = 0 (0x0) ioctl(3,FIONREAD,0xbfbfe9fc) = 0 (0x0) ioctl(3,FIONREAD,0xbfbfe9fc) = 0 (0x0) gettimeofday(0xbfbff1ec,0x0) = 0 (0x0) poll(0x80cd1e0,0x2,0xffffffff) = 1 (0x1) ioctl(3,FIONREAD,0xbfbfea4c) = 0 (0x0) ioctl(3,FIONREAD,0xbfbfea4c) = 0 (0x0) poll(0x80cd1e0,0x1,0x0) = 0 (0x0) read(0x4,0x80ce000,0x2000) = 20 (0x14) break(0xc542d000) ERR#12 'Cannot allocate memory' SIGNAL 11 SIGNAL 11 Process stopped because of: 16 process exit, rval = 139 Segmentation fault (core dumped) Trussing Xvnc on the sparc64 system shows this: (null)() = 1 (0x1) select(0x4,0x7fdfffff500,0x0,0x0,0x7fdfffff4f0) = 1 (0x1) accept(0x3,{ AF_INET 192.168.78.1:2781 },0x7fdfffff4dc) = 5 (0x5) fcntl(0x5,0x4,0x4) = 0 (0x0) setsockopt(0x5,0x6,0x1,0x7fdfffff4d8,0x4) = 0 (0x0) write(2,0x40a7803f,1) = 1 (0x1) gettimeofday(0x7fdfffff230,0x0) = 0 (0x0) write(2,0x7fdffffe870,18) = 18 (0x12) write(2,0x7fdffffe930,40) = 40 (0x28) gettimeofday(0x7fdfffff200,0x0) = 0 (0x0) getpeername(0x5,{ AF_INET 192.168.78.1:2781 },0x7fdfffff3dc) = 0 (0x0) write(5,0x7fdfffff400,12) = 12 (0xc) select(0x5,0x7fdfffff500,0x0,0x0,0x7fdfffff4f0) = 0 (0x0) gettimeofday(0x7fdfffff3d0,0x0) = 0 (0x0) select(0x3f,0x35a8a0,0x0,0x0,0x7fdfffff630) = 1 (0x1) select(0x6,0x7fdfffff500,0x0,0x0,0x7fdfffff4f0) = 1 (0x1) read(0x5,0x7fdfffff400,0xc) = 12 (0xc) gettimeofday(0x7fdfffff050,0x0) = 0 (0x0) write(2,0x7fdffffe690,18) = 18 (0x12) write(2,0x7fdffffe750,21) = 21 (0x15) gettimeofday(0x7fdfffff080,0x0) = 0 (0x0) getpid() = 37935 (0x942f) write(5,0x7fdfffff210,20) = 20 (0x14) select(0x5,0x7fdfffff500,0x0,0x0,0x7fdfffff4f0) = 0 (0x0) gettimeofday(0x7fdfffff3d0,0x0) = 0 (0x0) select(0x3f,0x35a8a0,0x0,0x0,0x7fdfffff630) = 1 (0x1) select(0x6,0x7fdfffff500,0x0,0x0,0x7fdfffff4f0) = 1 (0x1) read(0x5,0x7fdfffff400,0x10) = 0 (0x0) gettimeofday(0x7fdfffff150,0x0) = 0 (0x0) write(2,0x7fdffffe790,18) = 18 (0x12) write(2,0x7fdffffe850,41) = 41 (0x29) close(5) = 0 (0x0) gettimeofday(0x7fdffffefd0,0x0) = 0 (0x0) write(2,0x7fdffffe610,18) = 18 (0x12) write(2,0x7fdffffe6d0,25) = 25 (0x19) gettimeofday(0x7fdffffef00,0x0) = 0 (0x0) write(2,0x7fdffffe540,18) = 18 (0x12) write(2,0x7fdffffe600,12) = 12 (0xc) gettimeofday(0x7fdffffef00,0x0) = 0 (0x0) write(2,0x7fdffffe540,18) = 18 (0x12) write(2,0x7fdffffe600,47) = 47 (0x2f) select(0x5,0x7fdfffff500,0x0,0x0,0x7fdfffff4f0) = 0 (0x0) gettimeofday(0x7fdfffff3d0,0x0) = 0 (0x0) ^C IMO, running VNC off headless UltraSPARC systems is a practical way to run and test GUI stuff without connecing a monitor and keyboard. Oh, BTW, NetBSD has some useful patches in their pkgsrc patches for vnc, see http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/net/vnc/. Cheers, -- Anders. --NzB8fVQJ5HfG6fxh Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="vnc.mindiff" Binary files vnc.old/Xvnc.core and vnc/Xvnc.core differ diff -Nur vnc.old/files/patch-FreeBSD.cf vnc/files/patch-FreeBSD.cf --- vnc.old/files/patch-FreeBSD.cf Thu Jan 1 01:00:00 1970 +++ vnc/files/patch-FreeBSD.cf Mon Jun 30 23:17:45 2003 @@ -0,0 +1,51 @@ +--- Xvnc/config/cf/FreeBSD.cf.orig Sat May 11 12:57:05 2002 ++++ Xvnc/config/cf/FreeBSD.cf Mon Jun 30 22:50:52 2003 +@@ -26,6 +26,7 @@ + #define UseGas YES + #define GnuCpp YES + #define HasNdbm YES ++#define DBMLibrary /**/ + #define HasPutenv YES + #define HasSnprintf YES + #define HasBSD44Sockets YES +@@ -40,6 +41,7 @@ + #define AvoidNullMakeCommand YES + #define StripInstalledPrograms YES + #define CompressAllFonts YES ++#define GzipFontCompression YES + #define Malloc0ReturnsNull YES + #define NeedConstPrototypes YES + #define NeedFunctionPrototypes YES +@@ -50,7 +52,7 @@ + #define MkdirHierCmd mkdir -p + + #define CcCmd cc +-#define CppCmd /usr/libexec/cpp ++#define CppCmd cpp + #define PreProcessCmd CppCmd + #define StandardCppDefines -traditional + #if defined(UseInstalled) && (!defined(XF86LinkKit) || !XF86LinkKit) +@@ -223,12 +225,22 @@ + # define GccGasOption /**/ + #endif + ++#ifndef XFree86ServerDefines ++#define XFree86ServerDefines ++#endif ++#if defined(SparcArchitecture) ++#define ServerExtraDefines GccGasOption ++#else + #define ServerExtraDefines GccGasOption XFree86ServerDefines +- ++#endif + #define StandardDefines -DCSRG_BASED + + #if OSMajorVersion > 1 ++#ifdef SparcArchitecture ++#define ServerOSDefines -DDDXOSINIT ++#else + #define ServerOSDefines XFree86ServerOSDefines -DDDXTIME ++#endif + #define XawI18nDefines -DUSE_XWCHAR_STRING + #define HasMakefileSafeInclude YES + #define IncludeMakefile(file) @@# dependencies are in .depend diff -Nur vnc.old/files/patch-cf-Imake.cf vnc/files/patch-cf-Imake.cf --- vnc.old/files/patch-cf-Imake.cf Thu Jan 1 01:00:00 1970 +++ vnc/files/patch-cf-Imake.cf Wed Jun 25 23:17:36 2003 @@ -0,0 +1,13 @@ +--- Xvnc/config/cf/Imake.cf.orig Sat May 11 10:57:05 2002 ++++ Xvnc/config/cf/Imake.cf Fri Jun 6 05:33:03 2003 +@@ -154,6 +154,10 @@ + # define i386Architecture + # undef i386 + # endif ++# ifdef __sparc__ ++# define SparcArchitecture ++# undef sparc ++# endif + #endif /* __FreeBSD__ */ + + #ifdef AMOEBA diff -Nur vnc.old/files/patch-cfb-stipsparc.s vnc/files/patch-cfb-stipsparc.s --- vnc.old/files/patch-cfb-stipsparc.s Thu Jan 1 01:00:00 1970 +++ vnc/files/patch-cfb-stipsparc.s Tue Jun 24 23:19:21 2003 @@ -0,0 +1,11 @@ +--- Xvnc/programs/Xserver/cfb/stipsparc.s.orig Fri Jun 6 08:31:12 2003 ++++ Xvnc/programs/Xserver/cfb/stipsparc.s Fri Jun 6 08:31:53 2003 +@@ -85,7 +85,7 @@ + #define ForEachBits LY4 + #define NextBits LY5 + +-#ifdef SVR4 ++#if defined(SVR4) || defined(__ELF__) + #ifdef TETEXT + #define _cfbStippleStack cfbStippleStackTE + #else diff -Nur vnc.old/files/patch-cfb-stipsprc32.s vnc/files/patch-cfb-stipsprc32.s --- vnc.old/files/patch-cfb-stipsprc32.s Thu Jan 1 01:00:00 1970 +++ vnc/files/patch-cfb-stipsprc32.s Tue Jun 24 23:19:21 2003 @@ -0,0 +1,11 @@ +--- Xvnc/programs/Xserver/cfb/stipsprc32.s.orig Fri Jun 6 08:41:42 2003 ++++ Xvnc/programs/Xserver/cfb/stipsprc32.s Fri Jun 6 08:42:09 2003 +@@ -81,7 +81,7 @@ + #define ForEachBits LY4 + #define NextBits LY5 + +-#ifdef SVR4 ++#if defined(SVR4) || defined(__ELF__) + #ifdef TETEXT + #define _cfb32StippleStack cfb32StippleStackTE + #else --NzB8fVQJ5HfG6fxh--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030630225305.GA28861>