diff src/s/sunos4-0.h @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children e9a3f8b4de53
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s/sunos4-0.h	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,115 @@
+/* Synched up with: FSF 19.31. */
+
+/* For building XEmacs under SunOS 4.1.* with static libraries. */
+
+#ifndef _S_SUNOS4_H_
+#define _S_SUNOS4_H_
+
+#include "bsd4-2.h"
+
+#ifndef SUNOS4
+#define SUNOS4
+#endif
+
+#if 0  /* This may have been needed for an earlier version of Sun OS 4.
+	  It seems to cause warnings in 4.0.3 and 4.1.  */
+#define O_NDELAY        FNDELAY /* Non-blocking I/O (4.2 style) */
+#endif
+
+#ifdef NOT_C_CODE
+  /* The new sunOS unexec eliminates the need for a custom crt0.o, so we
+     can just let the compiler invoke the linker and don't have to guess
+     what options it might have passed it. */
+# define ORDINARY_LINK
+# define START_FILES
+# define LD_CMD $(CC)
+# ifndef LD_SWITCH_SYSTEM
+# define LD_SWITCH_SYSTEM "-Bstatic"
+# endif
+# define UNEXEC "unexsunos4.o"
+#endif /* NOT_C_CODE */
+
+#define RUN_TIME_REMAP
+
+/* these don't matter, but we have to define something to keep
+   sysdep.c from introducing bogus symbols */
+#define TEXT_START 0
+#define DATA_START 0
+
+/* #### XEmacs: #define of SYSTEM_MALLOC removed.  Is this OK?  FSF says:
+
+   In SunOS 4.1, a static function called by tzsetwall reportedly
+   clears the byte just past an eight byte region it mallocs, corrupting
+   GNU malloc's memory pool.  But Sun's malloc doesn't seem to mind. */
+
+/* XEmacs: additions for proper prototyping. */
+#ifndef NOT_C_CODE
+#ifdef __STDC__
+/* Sun's headers are categorically losing.
+   Mly uses broken-sun.h to get the protos for this, but lcc provides all
+   of the prototypes for the ANSI routines.  So I'm just going to put the
+   protos of the non-ANSI routines that we use here (I guess that would
+   be things that are Posix but not ANSI?)  You're in a maze of twisty
+   little standards, all alike...
+ */
+/* Since lcc is not going to be heavily used anymore if it ever was, I'm
+   putting broken-sun.h back in. */
+/* Since Gcc 2.8 appears to have fixed the problem, I'm conditionalizing */
+/* this ugly hack. */
+
+#if defined (__GNUC__)
+#if defined (__GNUC_MINOR__)
+#if ((__GNUC__ == 2) && (__GNUC_MINOR__ > 7)) || ((__GNUC__ > 2))
+/* Don't include for gcc 2.8.0*/
+#else
+#include "../broken-sun.h"
+#endif
+
+#else /* __GNUC_MINOR__ is undefined */
+#include "../broken-sun.h"
+#endif
+
+#else
+/* Not GNU C */
+#endif
+
+extern char *strdup ();
+extern char *ttyname (int);
+extern void tzsetwall (void);
+extern int getpagesize (void);
+
+#include <memory.h>
+#ifdef __SUNPRO_C
+/* Suppress zillions of warnings from outdated SunOS4 prototypes */
+/* Bother! Sun can't even get the arg types right. */
+#include <string.h>
+#define memset(a,b,c) memset((char*) (a), b, c)
+#define memcpy(a,b,c) memcpy((char*) (a), (char*) (b), c)
+#define memcmp(a,b,c) memcmp((char*) (a), (char*) (b), c)
+#define memchr(a,b,c) memchr((char*) (a), b, c)
+void * __builtin_alloca(int);
+#ifdef HAVE_X_WINDOWS
+#include <X11/Xlib.h>
+#define XFree(p) XFree((char*)(p))
+#endif /* X Windows */
+#endif /* __SUNPRO_C */
+
+#endif /* __STDC__ */
+
+# ifdef __GNUC__
+  /* XEmacs addition: */
+  /* gcc has the bug that it claims to conform to the ANSI C standard
+     (which is what setting __STDC__ to 1 means) but does not necessarily
+     provide all of the library routines which the standard requires of a
+     conforming compiler -- such as memmove.  The other Sun ANSI compilers
+     (Sun's acc and Lucid's lcc) do not have this bug. */
+#  define memmove(to, from, size) bcopy ((char *) (from), (char *) (to), (size))
+/* We must define mkdir with this arg prototype
+   to match GCC's fixed stat.h.  */
+#  define MKDIR_PROTOTYPE \
+  int mkdir (const char *dpath, unsigned short dmode)
+# endif /* __GNUC__ */
+
+#endif /* C_CODE */
+
+#endif /* _S_SUNOS4_H_ */