diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 527caf987aa923643c3705f53245f2426de632a1..73dae90219b201158c80d68021be31e0c153afaf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -2,6 +2,16 @@ Thu Nov  4 06:39:47 1999  Jeffrey A Law  (law@cygnus.com)
 
 	* haifa-sched.c (schedule_block): Fix thinko.
 
+1999-11-03  James McKelvey <mckelvey@fafnir.com>
+
+	* fixinc/fixincl.c(create_file):  Allow for systems that do not have
+	S_IR* defined values
+
+1999-11-03  Philippe De Muyter  <phdm@macqel.be>
+
+	* fixlib.c (load_file_data): Do not call `realloc' with a NULL pointer;
+	call `malloc' instead.
+
 Wed Nov  3 23:05:14 1999  Mark Mitchell  <mark@codesourcery.com>
 
 	* flags.h (flag_renumber_insns): Declare.
diff --git a/gcc/fixinc/fixincl.c b/gcc/fixinc/fixincl.c
index 6a143fd95354096582c81d7c0a67af1d70e0d638..5a13cbeb212ac5a3f61863eaf4cbfbef749dbb48 100644
--- a/gcc/fixinc/fixincl.c
+++ b/gcc/fixinc/fixincl.c
@@ -636,7 +636,22 @@ run_compiles ()
    Input:    the name of the file to create
    Returns:  a file pointer to the new, open file  */
 
-#define S_IRALL (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
+#if defined(S_IRUSR) && defined(S_IWUSR) && \
+    defined(S_IRGRP) && defined(S_IROTH)
+
+#   define S_IRALL (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
+#else
+#   define S_IRALL 0644
+#endif
+
+#if defined(S_IRWXU) && defined(S_IRGRP) && defined(S_IXGRP) && \
+    defined(S_IROTH) && defined(S_IXOTH)
+
+#   define S_DIRALL (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
+#else
+#   define S_DIRALL 0755
+#endif
+
 
 FILE *
 create_file ()
@@ -660,8 +675,7 @@ create_file ()
           *pz_dir = NUL;
           if (stat (fname, &stbf) < 0)
             {
-              mkdir (fname, S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP
-                     | S_IROTH | S_IXOTH);
+              mkdir (fname, S_IFDIR | S_DIRALL);
             }
 
           *pz_dir = '/';
diff --git a/gcc/fixinc/fixlib.c b/gcc/fixinc/fixlib.c
index 25a672ede4f0ecd1e84653fa68cd55176e1604c6..85f92421222ba8c93b38c431bf1070077ecd233c 100644
--- a/gcc/fixinc/fixlib.c
+++ b/gcc/fixinc/fixlib.c
@@ -23,7 +23,10 @@ load_file_data (fp)
       if (space_left < 1024)
         {
           space_left += 4096;
-          pz_data = realloc ((void*)pz_data, space_left + space_used + 1 );
+         if (pz_data)
+            pz_data = realloc ((void*)pz_data, space_left + space_used + 1 );
+         else
+            pz_data = malloc (space_left + space_used + 1 );
         }
       size_read = fread (pz_data + space_used, 1, space_left, fp);