+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
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
thread_file=posix
;;
esac
+ target_has_targetdm=yes
;;
*-*-*vms*)
extra_options="${extra_options} vms/vms.opt"
--- /dev/null
+/* 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;
# 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)
$(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) $<