config.host: Add a section for generic hosts, and a subsection for Darwin.
authorGeoffrey Keating <geoffk@apple.com>
Wed, 6 Apr 2005 08:41:37 +0000 (08:41 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Wed, 6 Apr 2005 08:41:37 +0000 (08:41 +0000)
* config.host: Add a section for generic hosts, and a subsection
for Darwin.  Add a case for x86-darwin.  Update ppc-darwin case.
* config/host-darwin.c: New, split out of config/rs6000/host-darwin.c.
* config/host-darwin.h: New.
* config/x-darwin: New.
* config/i386/host-i386-darwin.c: New.
* config/i386/x-darwin: New.
* config/rs6000/host-darwin.c: Include host-darwin.h.
(darwin_rs6000_gt_pch_get_address): Move to config/host-darwin.c.
(darwin_rs6000_gt_pch_use_address): Likewise.
* config/rs6000/x-darwin: Change name of .o built, update
dependencies for changes to rs6000/host-darwin.c.

From-SVN: r97709

gcc/ChangeLog
gcc/config.host
gcc/config/host-darwin.c [new file with mode: 0644]
gcc/config/host-darwin.h [new file with mode: 0644]
gcc/config/i386/host-i386-darwin.c [new file with mode: 0644]
gcc/config/i386/x-darwin [new file with mode: 0644]
gcc/config/rs6000/host-darwin.c
gcc/config/rs6000/x-darwin
gcc/config/x-darwin [new file with mode: 0644]

index fb180288479fd12f11aabf8f7c63561dacb6857c..fbdb5157aab302d08a3a0d15694bf939810c9845 100644 (file)
@@ -1,3 +1,18 @@
+2005-04-06  Geoffrey Keating  <geoffk@apple.com>
+
+       * config.host: Add a section for generic hosts, and a subsection
+       for Darwin.  Add a case for x86-darwin.  Update ppc-darwin case.
+       * config/host-darwin.c: New, split out of config/rs6000/host-darwin.c.
+       * config/host-darwin.h: New.
+       * config/x-darwin: New.
+       * config/i386/host-i386-darwin.c: New.
+       * config/i386/x-darwin: New.
+       * config/rs6000/host-darwin.c: Include host-darwin.h.
+       (darwin_rs6000_gt_pch_get_address): Move to config/host-darwin.c.
+       (darwin_rs6000_gt_pch_use_address): Likewise.
+       * config/rs6000/x-darwin: Change name of .o built, update
+       dependencies for changes to rs6000/host-darwin.c.
+
 2005-04-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
 
        PR target/17824
index 64280c9436cd94cdb5702100354edc7b401bef35..dbbf5b129e046230787ec11cda9e4c2fcc3bc71b 100644 (file)
@@ -85,6 +85,15 @@ case ${host} in
     ;;
 esac
 
+# Common parts for widely ported systems.
+case ${target} in
+  *-darwin*)
+    # Generic darwin host support.
+    out_host_hook_obj=host-darwin.o
+    host_xmake_file=x-darwin
+    ;;
+esac
+
 # Machine-specific settings.
 case ${host} in
   alpha*-dec-*vms*)
@@ -164,6 +173,10 @@ case ${host} in
   i[34567]86-*-interix3*)
     host_xmake_file="x-interix"
     ;;
+  i[34567]86-*-darwin*)
+    out_host_hook_obj="${out_host_hook_obj} host-i386-darwin.o"
+    host_xmake_file="${host_xmake_file} i386/x-darwin"
+    ;;
   i860-*-sysv4*)
     host_xmake_file=i860/x-sysv4
     ;;
@@ -171,9 +184,8 @@ case ${host} in
     host_can_use_collect2=no
     ;;
   powerpc-*-darwin*)
-    # powerpc-darwin host support.
-    out_host_hook_obj=host-darwin.o
-    host_xmake_file=rs6000/x-darwin
+    out_host_hook_obj="${out_host_hook_obj} host-ppc-darwin.o"
+    host_xmake_file="${host_xmake_file} rs6000/x-darwin"
     ;;
   *-*-solaris2*)
     out_host_hook_obj=host-solaris.o
diff --git a/gcc/config/host-darwin.c b/gcc/config/host-darwin.c
new file mode 100644 (file)
index 0000000..8bf32aa
--- /dev/null
@@ -0,0 +1,81 @@
+/* Darwin host-specific hook definitions.
+   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 2, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING.  If not, write to the
+   Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+   MA 02111-1307, USA.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include <sys/mman.h>
+#include "toplev.h"
+#include "config/host-darwin.h"
+
+/* Yes, this is really supposed to work.  */
+static char pch_address_space[1024*1024*1024] __attribute__((aligned (4096)));
+
+/* Return the address of the PCH address space, if the PCH will fit in it.  */
+
+void *
+darwin_gt_pch_get_address (size_t sz, int fd ATTRIBUTE_UNUSED)
+{
+  if (sz <= sizeof (pch_address_space))
+    return pch_address_space;
+  else
+    return NULL;
+}
+
+/* Check ADDR and SZ for validity, and deallocate (using munmap) that part of
+   pch_address_space beyond SZ.  */
+
+int
+darwin_gt_pch_use_address (void *addr, size_t sz, int fd, size_t off)
+{
+  const size_t pagesize = getpagesize();
+  void *mmap_result;
+  int ret;
+
+  if ((size_t)pch_address_space % pagesize != 0
+      || sizeof (pch_address_space) % pagesize != 0)
+    abort ();
+  
+  ret = (addr == pch_address_space && sz <= sizeof (pch_address_space));
+  if (! ret)
+    sz = 0;
+
+  /* Round the size to a whole page size.  Normally this is a no-op.  */
+  sz = (sz + pagesize - 1) / pagesize * pagesize;
+
+  if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
+    fatal_error ("couldn't unmap pch_address_space: %m\n");
+
+  if (ret)
+    {
+      mmap_result = mmap (addr, sz,
+                         PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
+                         fd, off);
+
+      /* The file might not be mmap-able.  */
+      ret = mmap_result != (void *) MAP_FAILED;
+
+      /* Sanity check for broken MAP_FIXED.  */
+      if (ret && mmap_result != addr)
+       abort ();
+    }
+
+  return ret;
+}
diff --git a/gcc/config/host-darwin.h b/gcc/config/host-darwin.h
new file mode 100644 (file)
index 0000000..7425707
--- /dev/null
@@ -0,0 +1,28 @@
+/* Darwin host-specific hook definitions.
+   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 2, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING.  If not, write to the
+   Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+   MA 02111-1307, USA.  */
+
+extern void * darwin_gt_pch_get_address (size_t sz, int fd);
+extern int darwin_gt_pch_use_address (void *addr, size_t sz, int fd, 
+                                     size_t off);
+
+#undef HOST_HOOKS_GT_PCH_GET_ADDRESS
+#define HOST_HOOKS_GT_PCH_GET_ADDRESS darwin_gt_pch_get_address
+#undef HOST_HOOKS_GT_PCH_USE_ADDRESS
+#define HOST_HOOKS_GT_PCH_USE_ADDRESS darwin_gt_pch_use_address
diff --git a/gcc/config/i386/host-i386-darwin.c b/gcc/config/i386/host-i386-darwin.c
new file mode 100644 (file)
index 0000000..80a9a9a
--- /dev/null
@@ -0,0 +1,31 @@
+/* i386-darwin host-specific hook definitions.
+   Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "hosthooks.h"
+#include "hosthooks-def.h"
+#include "config/host-darwin.h"
+
+/* Darwin doesn't do anything special for x86 hosts; this file exists just
+   to include config/host-darwin.h.  */
+
+const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
diff --git a/gcc/config/i386/x-darwin b/gcc/config/i386/x-darwin
new file mode 100644 (file)
index 0000000..9a3b0f2
--- /dev/null
@@ -0,0 +1,4 @@
+host-i386-darwin.o : $(srcdir)/config/i386/host-i386-darwin.c \
+  $(CONFIG_H) $(SYSTEM_H) coretypes.h hosthooks.h $(HOSTHOOKS_DEF_H) \
+  config/host-darwin.h
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
index 599e30603d61b1f67885d1b5788eb9903ecc76b8..1b8cb83a1ea3658a32656d633ab4dfb3d794f7ed 100644 (file)
@@ -1,5 +1,5 @@
 /* Darwin/powerpc host-specific hook definitions.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
 
    This file is part of GCC.
 
 #include "coretypes.h"
 #include <signal.h>
 #include <sys/ucontext.h>
-#include <sys/mman.h>
 #include "hosthooks.h"
 #include "hosthooks-def.h"
 #include "toplev.h"
 #include "diagnostic.h"
+#include "config/host-darwin.h"
 
 static void segv_crash_handler (int);
 static void segv_handler (int, siginfo_t *, void *);
@@ -137,65 +137,5 @@ darwin_rs6000_extra_signals (void)
     fatal_error ("While setting up signal handler: %m");
 }
 \f
-#undef HOST_HOOKS_GT_PCH_GET_ADDRESS
-#define HOST_HOOKS_GT_PCH_GET_ADDRESS darwin_rs6000_gt_pch_get_address
-#undef HOST_HOOKS_GT_PCH_USE_ADDRESS
-#define HOST_HOOKS_GT_PCH_USE_ADDRESS darwin_rs6000_gt_pch_use_address
-
-/* Yes, this is really supposed to work.  */
-static char pch_address_space[1024*1024*1024] __attribute__((aligned (4096)));
-
-/* Return the address of the PCH address space, if the PCH will fit in it.  */
-
-static void *
-darwin_rs6000_gt_pch_get_address (size_t sz, int fd ATTRIBUTE_UNUSED)
-{
-  if (sz <= sizeof (pch_address_space))
-    return pch_address_space;
-  else
-    return NULL;
-}
-
-/* Check ADDR and SZ for validity, and deallocate (using munmap) that part of
-   pch_address_space beyond SZ.  */
-
-static int
-darwin_rs6000_gt_pch_use_address (void *addr, size_t sz, int fd, size_t off)
-{
-  const size_t pagesize = getpagesize();
-  void *mmap_result;
-  int ret;
-
-  if ((size_t)pch_address_space % pagesize != 0
-      || sizeof (pch_address_space) % pagesize != 0)
-    abort ();
-  
-  ret = (addr == pch_address_space && sz <= sizeof (pch_address_space));
-  if (! ret)
-    sz = 0;
-
-  /* Round the size to a whole page size.  Normally this is a no-op.  */
-  sz = (sz + pagesize - 1) / pagesize * pagesize;
-
-  if (munmap (pch_address_space + sz, sizeof (pch_address_space) - sz) != 0)
-    fatal_error ("couldn't unmap pch_address_space: %m\n");
-
-  if (ret)
-    {
-      mmap_result = mmap (addr, sz,
-                         PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED,
-                         fd, off);
-
-      /* The file might not be mmap-able.  */
-      ret = mmap_result != (void *) MAP_FAILED;
-
-      /* Sanity check for broken MAP_FIXED.  */
-      if (ret && mmap_result != addr)
-       abort ();
-    }
-
-  return ret;
-}
-\f
 
 const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
index e133c21f928366a44696ca250b45c0e4c9540c0f..bcf1c9ecb1ffb244db0d206e9b672445f9d34cd4 100644 (file)
@@ -1,4 +1,4 @@
-host-darwin.o : $(srcdir)/config/rs6000/host-darwin.c $(CONFIG_H) $(SYSTEM_H) \
-  coretypes.h hosthooks.h hosthooks-def.h toplev.h diagnostic.h $(HOOKS_H)
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-               $(srcdir)/config/rs6000/host-darwin.c
+host-ppc-darwin.o : $(srcdir)/config/rs6000/host-darwin.c \
+  $(CONFIG_H) $(SYSTEM_H) coretypes.h hosthooks.h $(HOSTHOOKS_DEF_H) toplev.h \
+  diagnostic.h config/host-darwin.h
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< -o $@
diff --git a/gcc/config/x-darwin b/gcc/config/x-darwin
new file mode 100644 (file)
index 0000000..c2ffd7d
--- /dev/null
@@ -0,0 +1,3 @@
+host-darwin.o : $(srcdir)/config/host-darwin.c $(CONFIG_H) $(SYSTEM_H) \
+  coretypes.h toplev.h config/host-darwin.h
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<