Commit 2f2b8e40 by Maya Rashish Committed by Iain Buclaw

Add netbsd support for D compiler and runtime

Merges upstream druntime fb4bda91.

2019-02-14  Maya Rashish  <coypu@sdf.org>

gcc/ChangeLog:

	* config.gcc (*-*-netbsd*): Add netbsd-d.o
	* config/netbsd-d.c: New file.
	* config/t-netbsd: Add netbsd-d.o

gcc/d/ChangeLog:

	* d-system.h: NetBSD is POSIX.

libphobos/ChangeLog:

	* configure.tgt: Add netbsd/x86 as supported target.

From-SVN: r268905
parent a6c723e2
2019-02-14 Maya Rashish <coypu@sdf.org>
* config.gcc (*-*-netbsd*): Add netbsd-d.o
* config/netbsd-d.c: New file.
* config/t-netbsd: Add netbsd-d.o
2018-02-14 Steve Ellcey <sellcey@marvell.com> 2018-02-14 Steve Ellcey <sellcey@marvell.com>
* config/aarch64/aarch64.c (aarch64_attribute_table): Change * config/aarch64/aarch64.c (aarch64_attribute_table): Change
......
...@@ -839,6 +839,7 @@ case ${target} in ...@@ -839,6 +839,7 @@ case ${target} in
tm_p_file="${tm_p_file} netbsd-protos.h" tm_p_file="${tm_p_file} netbsd-protos.h"
tmake_file="t-netbsd t-slibgcc" tmake_file="t-netbsd t-slibgcc"
extra_objs="${extra_objs} netbsd.o" extra_objs="${extra_objs} netbsd.o"
d_target_objs="${d_target_objs} netbsd-d.o"
gas=yes gas=yes
gnu_ld=yes gnu_ld=yes
use_gcc_stdint=wrap use_gcc_stdint=wrap
...@@ -847,6 +848,7 @@ case ${target} in ...@@ -847,6 +848,7 @@ case ${target} in
esac esac
nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h" nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
default_use_cxa_atexit=yes default_use_cxa_atexit=yes
target_has_targetdm=yes
;; ;;
*-*-openbsd*) *-*-openbsd*)
tmake_file="t-openbsd" tmake_file="t-openbsd"
......
/* Functions for generic NetBSD as target machine for GNU D compiler.
Copyright (C) 2019 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 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 "tree.h"
#include "varasm.h"
#include "netbsd-protos.h"
#include "tm_p.h"
#include "d/d-target.h"
#include "d/d-target-def.h"
static void
netbsd_d_os_builtins (void)
{
d_add_builtin_version ("Posix");
d_add_builtin_version ("NetBSD");
}
#undef TARGET_D_OS_VERSIONS
#define TARGET_D_OS_VERSIONS netbsd_d_os_builtins
struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
...@@ -19,3 +19,7 @@ ...@@ -19,3 +19,7 @@
netbsd.o: $(srcdir)/config/netbsd.c netbsd.o: $(srcdir)/config/netbsd.c
$(COMPILE) $< $(COMPILE) $<
$(POSTCOMPILE) $(POSTCOMPILE)
netbsd-d.o: $(srcdir)/config/netbsd-d.c
$(COMPILE) $<
$(POSTCOMPILE)
2019-02-14 Maya Rashish <coypu@sdf.org>
* d-system.h: NetBSD is POSIX.
2019-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2019-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR d/87864 PR d/87864
......
...@@ -24,7 +24,8 @@ ...@@ -24,7 +24,8 @@
/* Used by the dmd front-end to determine if we have POSIX-style IO. */ /* Used by the dmd front-end to determine if we have POSIX-style IO. */
#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ \ #define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ \
|| __FreeBSD__ || __OpenBSD__ || __DragonFly__ || __sun) || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ \
|| __sun)
/* Forward assert invariants to gcc_assert. */ /* Forward assert invariants to gcc_assert. */
#undef assert #undef assert
......
2019-02-14 Maya Rashish <coypu@sdf.org>
* configure.tgt: Add netbsd/x86 as supported target.
2019-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2019-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR d/87864 PR d/87864
......
...@@ -30,6 +30,8 @@ case "${target}" in ...@@ -30,6 +30,8 @@ case "${target}" in
;; ;;
x86_64-*-linux* | i?86-*-linux*) x86_64-*-linux* | i?86-*-linux*)
;; ;;
x86_64-*-netbsd* | i?86-*-netbsd*)
;;
*) *)
UNSUPPORTED=1 UNSUPPORTED=1
;; ;;
......
2fd957307d94b5ce89eb173910cc7f1995d99031 fb4bda91b0b43b5a18e1c143943c101ad4e17667
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the dlang/druntime repository. merge done from the dlang/druntime repository.
...@@ -53,6 +53,13 @@ else version (FreeBSD) ...@@ -53,6 +53,13 @@ else version (FreeBSD)
*/ */
void __assert(const(char)* exp, const(char)* file, uint line); void __assert(const(char)* exp, const(char)* file, uint line);
} }
else version (NetBSD)
{
/***
* Assert failure function in the NetBSD C library.
*/
void __assert(const(char)* file, int line, const(char)* exp);
}
else version (DragonFlyBSD) else version (DragonFlyBSD)
{ {
/*** /***
......
...@@ -198,12 +198,6 @@ else version (FreeBSD) ...@@ -198,12 +198,6 @@ else version (FreeBSD)
ubyte *_base; ubyte *_base;
int _size; int _size;
} }
union __mbstate_t // <sys/_types.h>
{
char[128] _mbstate8;
long _mbstateL;
}
} }
else version (NetBSD) else version (NetBSD)
{ {
...@@ -228,12 +222,6 @@ else version (NetBSD) ...@@ -228,12 +222,6 @@ else version (NetBSD)
ubyte *_base; ubyte *_base;
int _size; int _size;
} }
union __mbstate_t // <sys/_types.h>
{
char[128] _mbstate8;
long _mbstateL;
}
} }
else version (OpenBSD) else version (OpenBSD)
{ {
...@@ -258,12 +246,6 @@ else version (OpenBSD) ...@@ -258,12 +246,6 @@ else version (OpenBSD)
ubyte *_base; ubyte *_base;
int _size; int _size;
} }
union __mbstate_t // <sys/_types.h>
{
char[128] __mbstate8;
long __mbstateL;
}
} }
else version (DragonFlyBSD) else version (DragonFlyBSD)
{ {
...@@ -297,12 +279,6 @@ else version (DragonFlyBSD) ...@@ -297,12 +279,6 @@ else version (DragonFlyBSD)
SBUF_DYNSTRUCT = 0x00080000, // sbuf must be freed SBUF_DYNSTRUCT = 0x00080000, // sbuf must be freed
SBUF_INSECTION = 0x00100000, // set by sbuf_start_section() SBUF_INSECTION = 0x00100000, // set by sbuf_start_section()
} }
union __mbstate_t // <sys/stdint.h>
{
char[128] _mbstate8;
long _mbstateL;
}
} }
else version (Solaris) else version (Solaris)
{ {
...@@ -518,6 +494,9 @@ else version (Darwin) ...@@ -518,6 +494,9 @@ else version (Darwin)
} }
else version (FreeBSD) else version (FreeBSD)
{ {
// Need to import wchar_ now since __mbstate_t now resides there
import core.stdc.wchar_ : mbstate_t;
/// ///
alias off_t fpos_t; alias off_t fpos_t;
...@@ -554,7 +533,7 @@ else version (FreeBSD) ...@@ -554,7 +533,7 @@ else version (FreeBSD)
pthread_t _fl_owner; pthread_t _fl_owner;
int _fl_count; int _fl_count;
int _orientation; int _orientation;
__mbstate_t _mbstate; mbstate_t _mbstate;
} }
/// ///
...@@ -664,10 +643,7 @@ else version (DragonFlyBSD) ...@@ -664,10 +643,7 @@ else version (DragonFlyBSD)
} }
else version (Solaris) else version (Solaris)
{ {
import core.stdc.wchar_ : __mbstate_t; import core.stdc.wchar_ : mbstate_t;
///
alias mbstate_t = __mbstate_t;
/// ///
alias c_long fpos_t; alias c_long fpos_t;
......
...@@ -43,13 +43,52 @@ version (CRuntime_Glibc) ...@@ -43,13 +43,52 @@ version (CRuntime_Glibc)
___value __value; ___value __value;
} }
} }
else version (FreeBSD)
{
///
union __mbstate_t // <sys/_types.h>
{
char[128] _mbstate8 = 0;
long _mbstateL;
}
///
alias mbstate_t = __mbstate_t;
}
else version (NetBSD)
{
///
union __mbstate_t
{
int64_t __mbstateL;
char[128] __mbstate8;
}
///
alias mbstate_t = __mbstate_t;
}
else version (OpenBSD) else version (OpenBSD)
{ {
///
union __mbstate_t union __mbstate_t
{ {
char[128] __mbstate8; char[128] __mbstate8;
int64_t __mbstateL; int64_t __mbstateL;
} }
///
alias mbstate_t = __mbstate_t;
}
else version (DragonFlyBSD)
{
///
union __mbstate_t // <sys/stdint.h>
{
char[128] _mbstate8 = 0;
long _mbstateL;
}
///
alias mbstate_t = __mbstate_t; alias mbstate_t = __mbstate_t;
} }
else version (Solaris) else version (Solaris)
...@@ -66,6 +105,9 @@ else version (Solaris) ...@@ -66,6 +105,9 @@ else version (Solaris)
int[6] __filler; int[6] __filler;
} }
} }
///
alias mbstate_t = __mbstate_t;
} }
else version (CRuntime_UClibc) else version (CRuntime_UClibc)
{ {
......
...@@ -103,7 +103,7 @@ static if (__BSD_VISIBLE) ...@@ -103,7 +103,7 @@ static if (__BSD_VISIBLE)
//void* fdlopen(int, int); //void* fdlopen(int, int);
int dladdr(const(void)*, Dl_info*); int dladdr(const(void)*, Dl_info*);
//dlfunc_t dlfunc(void*, const(char)*); //dlfunc_t dlfunc(void*, const(char)*);
//int dlinfo(void*, int, void*); int dlinfo(void*, int, void*);
/+void dllockinit(void* _context, /+void dllockinit(void* _context,
void* function(void* _context) _lock_create, void* function(void* _context) _lock_create,
void function(void* _lock) _rlock_acquire, void function(void* _lock) _rlock_acquire,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment