The attached change has been tested on hppa-unknown-linux-gnu with an initial implementation of libphobos. Committed to trunk.
Dave -- John David Anglin dave.ang...@bell.net
2018-12-09 John David Anglin <dang...@gcc.gnu.org> * config.gcc (hppa*-*-linux*): Add pa/t-pa to tmake_file. Define d_target_objs. * config/pa/pa-protos.h (pa_d_target_versions): New prototype. * config/pa/pa.h (TARGET_D_CPU_VERSIONS): Define. * config/pa/pa-d.c: New file. * config/pa/t-pa: New file. Index: config.gcc =================================================================== --- config.gcc (revision 266405) +++ config.gcc (working copy) @@ -1447,7 +1447,8 @@ target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES" tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \ pa/pa32-regs.h pa/pa32-linux.h" - tmake_file="${tmake_file} pa/t-linux" + tmake_file="${tmake_file} pa/t-pa pa/t-linux" + d_target_objs="${d_target_objs} pa-d.o" ;; hppa*-*-openbsd*) target_cpu_default="MASK_PA_11" Index: config/pa/pa-protos.h =================================================================== --- config/pa/pa-protos.h (revision 266405) +++ config/pa/pa-protos.h (working copy) @@ -110,3 +110,6 @@ extern HOST_WIDE_INT pa_function_arg_size (machine_mode, const_tree); extern const int pa_magic_milli[]; + +/* Routines implemented in pa-d.c */ +extern void pa_d_target_versions (void); Index: config/pa/pa.h =================================================================== --- config/pa/pa.h (revision 266405) +++ config/pa/pa.h (working copy) @@ -1302,3 +1302,6 @@ (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000) #define NEED_INDICATE_EXEC_STACK 0 + +/* Target CPU versions for D. */ +#define TARGET_D_CPU_VERSIONS pa_d_target_versions --- /dev/null 2018-11-24 12:57:36.820000000 -0500 +++ config/pa/pa-d.c 2018-11-20 18:17:23.807892880 -0500 @@ -0,0 +1,39 @@ +/* Subroutines for the D front end on the HPPA architecture. + 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 "target.h" +#include "d/d-target.h" +#include "d/d-target-def.h" + +/* Implement TARGET_D_CPU_VERSIONS for HPPA targets. */ + +void +pa_d_target_versions (void) +{ + if (TARGET_64BIT) + d_add_builtin_version ("HPPA64"); + else + d_add_builtin_version ("HPPA"); + + if (TARGET_SOFT_FLOAT) + d_add_builtin_version ("D_SoftFloat"); + else + d_add_builtin_version ("D_HardFloat"); +} --- /dev/null 2018-11-24 12:57:36.820000000 -0500 +++ config/pa/t-pa 2018-11-20 07:45:53.982380350 -0500 @@ -0,0 +1,4 @@ +pa-d.o: $(srcdir)/config/pa/pa-d.c + $(COMPILE) $< + $(POSTCOMPILE) +