aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2018-11-06 15:08:46 +0000
committerRainer Orth <ro@gcc.gnu.org>2018-11-06 15:08:46 +0000
commitcdb3f2f4314f5cd72927eb7f620e1df14e1da574 (patch)
treebe1ad2eca3c953039e51178dec64956bf58b03db /gcc
parentf8d69798fd096ab6fca98ab189f31b31cb004502 (diff)
downloadgcc-cdb3f2f4314f5cd72927eb7f620e1df14e1da574.zip
gcc-cdb3f2f4314f5cd72927eb7f620e1df14e1da574.tar.gz
gcc-cdb3f2f4314f5cd72927eb7f620e1df14e1da574.tar.bz2
Fix D compilation on Solaris
* config/default-d.c: Include memmodel.h. * config/sol2-d.c: New file. * config/t-sol2 (sol2-d.o): New rule. * config.gcc <*-*-solaris2*>: Set d_target_objs, target_has_targetdm. From-SVN: r265846
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/default-d.c1
-rw-r--r--gcc/config/sol2-d.c51
-rw-r--r--gcc/config/t-sol27
5 files changed, 69 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8dd1470..77fcf1e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2018-11-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/default-d.c: Include memmodel.h.
+
+ * config/sol2-d.c: New file.
+ * config/t-sol2 (sol2-d.o): New rule.
+ * config.gcc <*-*-solaris2*>: Set d_target_objs,
+ target_has_targetdm.
+
2018-11-06 Jan Hubicka <jh@suse.cz>
* tree.c (fld_type_variant): Also copy alignment; be sure that
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 5e5c328..284f7d1 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -917,6 +917,7 @@ case ${target} in
tmake_file="${tmake_file} t-sol2 t-slibgcc"
c_target_objs="${c_target_objs} sol2-c.o"
cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
+ d_target_objs="${d_target_objs} sol2-d.o"
extra_objs="${extra_objs} sol2.o sol2-stubs.o"
extra_options="${extra_options} sol2.opt"
case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
@@ -924,6 +925,7 @@ case ${target} in
thread_file=posix
;;
esac
+ target_has_targetdm=yes
;;
*-*-*vms*)
extra_options="${extra_options} vms/vms.opt"
diff --git a/gcc/config/default-d.c b/gcc/config/default-d.c
index 6c95205..85c70e0 100644
--- a/gcc/config/default-d.c
+++ b/gcc/config/default-d.c
@@ -18,6 +18,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
#include "coretypes.h"
+#include "memmodel.h"
#include "tm_d.h"
#include "d/d-target.h"
#include "d/d-target-def.h"
diff --git a/gcc/config/sol2-d.c b/gcc/config/sol2-d.c
new file mode 100644
index 0000000..534ad2a
--- /dev/null
+++ b/gcc/config/sol2-d.c
@@ -0,0 +1,51 @@
+/* Solaris support needed only by D front-end.
+ Copyright (C) 2018 Free Software Foundation, Inc.
+
+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 3, 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 COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "memmodel.h"
+#include "tm_p.h"
+#include "d/d-target.h"
+#include "d/d-target-def.h"
+
+/* Implement TARGET_D_OS_VERSIONS for Solaris targets. */
+
+static void
+solaris_d_os_builtins (void)
+{
+ d_add_builtin_version ("Posix");
+ d_add_builtin_version ("Solaris"); \
+}
+
+/* Implement TARGET_D_CRITSEC_SIZE for Solaris targets. */
+
+static unsigned
+solaris_d_critsec_size (void)
+{
+ /* This is the sizeof pthread_mutex_t. */
+ return 24;
+}
+
+#undef TARGET_D_OS_VERSIONS
+#define TARGET_D_OS_VERSIONS solaris_d_os_builtins
+
+#undef TARGET_D_CRITSEC_SIZE
+#define TARGET_D_CRITSEC_SIZE solaris_d_critsec_size
+
+struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff --git a/gcc/config/t-sol2 b/gcc/config/t-sol2
index e275c0b..f1983cf 100644
--- a/gcc/config/t-sol2
+++ b/gcc/config/t-sol2
@@ -16,7 +16,7 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# Solaris-specific format checking and pragmas
+# Solaris-specific format checking and pragmas.
sol2-c.o: $(srcdir)/config/sol2-c.c
$(COMPILE) $<
$(POSTCOMPILE)
@@ -26,6 +26,11 @@ sol2-cxx.o: $(srcdir)/config/sol2-cxx.c
$(COMPILE) $<
$(POSTCOMPILE)
+# Solaris-specific D support.
+sol2-d.o: $(srcdir)/config/sol2-d.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
# Corresponding stub routines.
sol2-stubs.o: $(srcdir)/config/sol2-stubs.c
$(COMPILE) $<