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
This commit is contained in:
Maya Rashish 2019-02-14 21:25:39 +00:00 committed by Iain Buclaw
parent a6c723e202
commit 2f2b8e4054
13 changed files with 121 additions and 32 deletions

View file

@ -1,3 +1,9 @@
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>
* config/aarch64/aarch64.c (aarch64_attribute_table): Change

View file

@ -839,6 +839,7 @@ case ${target} in
tm_p_file="${tm_p_file} netbsd-protos.h"
tmake_file="t-netbsd t-slibgcc"
extra_objs="${extra_objs} netbsd.o"
d_target_objs="${d_target_objs} netbsd-d.o"
gas=yes
gnu_ld=yes
use_gcc_stdint=wrap
@ -847,6 +848,7 @@ case ${target} in
esac
nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
default_use_cxa_atexit=yes
target_has_targetdm=yes
;;
*-*-openbsd*)
tmake_file="t-openbsd"

41
gcc/config/netbsd-d.c Normal file
View file

@ -0,0 +1,41 @@
/* 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;

View file

@ -19,3 +19,7 @@
netbsd.o: $(srcdir)/config/netbsd.c
$(COMPILE) $<
$(POSTCOMPILE)
netbsd-d.o: $(srcdir)/config/netbsd-d.c
$(COMPILE) $<
$(POSTCOMPILE)

View file

@ -1,3 +1,7 @@
2019-02-14 Maya Rashish <coypu@sdf.org>
* d-system.h: NetBSD is POSIX.
2019-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR d/87864

View file

@ -24,7 +24,8 @@
/* Used by the dmd front-end to determine if we have POSIX-style IO. */
#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ \
|| __FreeBSD__ || __OpenBSD__ || __DragonFly__ || __sun)
|| __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ \
|| __sun)
/* Forward assert invariants to gcc_assert. */
#undef assert

View file

@ -1,3 +1,7 @@
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>
PR d/87864

View file

@ -30,6 +30,8 @@ case "${target}" in
;;
x86_64-*-linux* | i?86-*-linux*)
;;
x86_64-*-netbsd* | i?86-*-netbsd*)
;;
*)
UNSUPPORTED=1
;;

View file

@ -1,4 +1,4 @@
2fd957307d94b5ce89eb173910cc7f1995d99031
fb4bda91b0b43b5a18e1c143943c101ad4e17667
The first line of this file holds the git revision number of the last
merge done from the dlang/druntime repository.

View file

@ -53,6 +53,13 @@ else version (FreeBSD)
*/
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)
{
/***

View file

@ -198,12 +198,6 @@ else version (FreeBSD)
ubyte *_base;
int _size;
}
union __mbstate_t // <sys/_types.h>
{
char[128] _mbstate8;
long _mbstateL;
}
}
else version (NetBSD)
{
@ -228,12 +222,6 @@ else version (NetBSD)
ubyte *_base;
int _size;
}
union __mbstate_t // <sys/_types.h>
{
char[128] _mbstate8;
long _mbstateL;
}
}
else version (OpenBSD)
{
@ -258,12 +246,6 @@ else version (OpenBSD)
ubyte *_base;
int _size;
}
union __mbstate_t // <sys/_types.h>
{
char[128] __mbstate8;
long __mbstateL;
}
}
else version (DragonFlyBSD)
{
@ -297,12 +279,6 @@ else version (DragonFlyBSD)
SBUF_DYNSTRUCT = 0x00080000, // sbuf must be freed
SBUF_INSECTION = 0x00100000, // set by sbuf_start_section()
}
union __mbstate_t // <sys/stdint.h>
{
char[128] _mbstate8;
long _mbstateL;
}
}
else version (Solaris)
{
@ -518,6 +494,9 @@ else version (Darwin)
}
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;
@ -554,7 +533,7 @@ else version (FreeBSD)
pthread_t _fl_owner;
int _fl_count;
int _orientation;
__mbstate_t _mbstate;
mbstate_t _mbstate;
}
///
@ -664,10 +643,7 @@ else version (DragonFlyBSD)
}
else version (Solaris)
{
import core.stdc.wchar_ : __mbstate_t;
///
alias mbstate_t = __mbstate_t;
import core.stdc.wchar_ : mbstate_t;
///
alias c_long fpos_t;

View file

@ -43,13 +43,52 @@ version (CRuntime_Glibc)
___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)
{
///
union __mbstate_t
{
char[128] __mbstate8;
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;
}
else version (Solaris)
@ -66,6 +105,9 @@ else version (Solaris)
int[6] __filler;
}
}
///
alias mbstate_t = __mbstate_t;
}
else version (CRuntime_UClibc)
{

View file

@ -103,7 +103,7 @@ static if (__BSD_VISIBLE)
//void* fdlopen(int, int);
int dladdr(const(void)*, Dl_info*);
//dlfunc_t dlfunc(void*, const(char)*);
//int dlinfo(void*, int, void*);
int dlinfo(void*, int, void*);
/+void dllockinit(void* _context,
void* function(void* _context) _lock_create,
void function(void* _lock) _rlock_acquire,