Commit 8a9edcf7 authored by Joel Sing's avatar Joel Sing

runtime: fix netbsd runtime defs

Fix and regenerate runtime defs for NetBSD.

Whilst the mcontext struct can be handled across architectures,
the registers are provided as defines that index an array, rather
than as members of the struct. Since these are architecture
dependent, include them via a defs_netbsd_<arch>.go file.

R=golang-dev, m4dh4tt3r, rsc
CC=golang-dev
https://golang.org/cl/6190070
parent 773685b4
...@@ -7,18 +7,21 @@ ...@@ -7,18 +7,21 @@
/* /*
Input to cgo. Input to cgo.
GOARCH=amd64 cgo -cdefs defs.go >amd64/defs.h GOARCH=amd64 go tool cgo -cdefs defs_netbsd.go defs_netbsd_amd64.go >defs_netbsd_amd64.h
GOARCH=386 cgo -cdefs defs.go >386/defs.h GOARCH=386 go tool cgo -cdefs defs_netbsd.go defs_netbsd_386.go >defs_netbsd_386.h
*/ */
// +godefs map __fpregset_t [644]byte
package runtime package runtime
/* /*
#include <sys/types.h> #include <sys/types.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/signal.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/ucontext.h>
#include <sys/unistd.h> #include <sys/unistd.h>
#include <sys/signal.h>
#include <errno.h> #include <errno.h>
#include <signal.h> #include <signal.h>
*/ */
...@@ -95,8 +98,7 @@ const ( ...@@ -95,8 +98,7 @@ const (
type Sigaltstack C.struct_sigaltstack type Sigaltstack C.struct_sigaltstack
type Sigset C.sigset_t type Sigset C.sigset_t
type Siginfo C.siginfo_t type Siginfo C.struct__ksiginfo
type Sigval C.union_sigval
type StackT C.stack_t type StackT C.stack_t
...@@ -104,8 +106,5 @@ type Timespec C.struct_timespec ...@@ -104,8 +106,5 @@ type Timespec C.struct_timespec
type Timeval C.struct_timeval type Timeval C.struct_timeval
type Itimerval C.struct_itimerval type Itimerval C.struct_itimerval
// This is a hack to avoid pulling in machine/fpu.h. type McontextT C.mcontext_t
type sfxsave64 struct{} type UcontextT C.ucontext_t
type usavefpu struct{}
type Sigcontext C.struct_sigcontext
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build ignore
/*
Input to cgo.
GOARCH=amd64 go tool cgo -cdefs defs_netbsd.go defs_netbsd_amd64.go >defs_netbsd_amd64.h
GOARCH=386 go tool cgo -cdefs defs_netbsd.go defs_netbsd_386.go >defs_netbsd_386.h
*/
package runtime
/*
#include <sys/types.h>
#include <machine/mcontext.h>
*/
import "C"
const (
REG_GS = C._REG_GS
REG_FS = C._REG_FS
REG_ES = C._REG_ES
REG_DS = C._REG_DS
REG_EDI = C._REG_EDI
REG_ESI = C._REG_ESI
REG_EBP = C._REG_EBP
REG_ESP = C._REG_ESP
REG_EBX = C._REG_EBX
REG_EDX = C._REG_EDX
REG_ECX = C._REG_ECX
REG_EAX = C._REG_EAX
REG_TRAPNO = C._REG_TRAPNO
REG_ERR = C._REG_ERR
REG_EIP = C._REG_EIP
REG_CS = C._REG_CS
REG_EFL = C._REG_EFL
REG_UESP = C._REG_UESP
REG_SS = C._REG_SS
)
// godefs -f -m32 defs.c // Created by cgo -cdefs - DO NOT EDIT
// cgo -cdefs defs_netbsd.go defs_netbsd_386.go
// MACHINE GENERATED - DO NOT EDIT.
// Constants
enum { enum {
PROT_NONE = 0, PROT_NONE = 0x0,
PROT_READ = 0x1, PROT_READ = 0x1,
PROT_WRITE = 0x2, PROT_WRITE = 0x2,
PROT_EXEC = 0x4, PROT_EXEC = 0x4,
MAP_ANON = 0x1000, MAP_ANON = 0x1000,
MAP_PRIVATE = 0x2, MAP_PRIVATE = 0x2,
MAP_FIXED = 0x10, MAP_FIXED = 0x10,
SA_SIGINFO = 0x40, SA_SIGINFO = 0x40,
SA_RESTART = 0x2, SA_RESTART = 0x2,
SA_ONSTACK = 0x1, SA_ONSTACK = 0x1,
EINTR = 0x4, EINTR = 0x4,
SIGHUP = 0x1, SIGHUP = 0x1,
SIGINT = 0x2, SIGINT = 0x2,
SIGQUIT = 0x3, SIGQUIT = 0x3,
...@@ -46,6 +49,7 @@ enum { ...@@ -46,6 +49,7 @@ enum {
SIGINFO = 0x1d, SIGINFO = 0x1d,
SIGUSR1 = 0x1e, SIGUSR1 = 0x1e,
SIGUSR2 = 0x1f, SIGUSR2 = 0x1f,
FPE_INTDIV = 0x1, FPE_INTDIV = 0x1,
FPE_INTOVF = 0x2, FPE_INTOVF = 0x2,
FPE_FLTDIV = 0x3, FPE_FLTDIV = 0x3,
...@@ -54,93 +58,104 @@ enum { ...@@ -54,93 +58,104 @@ enum {
FPE_FLTRES = 0x6, FPE_FLTRES = 0x6,
FPE_FLTINV = 0x7, FPE_FLTINV = 0x7,
FPE_FLTSUB = 0x8, FPE_FLTSUB = 0x8,
BUS_ADRALN = 0x1, BUS_ADRALN = 0x1,
BUS_ADRERR = 0x2, BUS_ADRERR = 0x2,
BUS_OBJERR = 0x3, BUS_OBJERR = 0x3,
SEGV_MAPERR = 0x1, SEGV_MAPERR = 0x1,
SEGV_ACCERR = 0x2, SEGV_ACCERR = 0x2,
ITIMER_REAL = 0,
ITIMER_REAL = 0x0,
ITIMER_VIRTUAL = 0x1, ITIMER_VIRTUAL = 0x1,
ITIMER_PROF = 0x2, ITIMER_PROF = 0x2,
}; };
// Types typedef struct Sigaltstack Sigaltstack;
typedef struct Sigset Sigset;
typedef struct Siginfo Siginfo;
typedef struct StackT StackT;
typedef struct Timespec Timespec;
typedef struct Timeval Timeval;
typedef struct Itimerval Itimerval;
typedef struct McontextT McontextT;
typedef struct UcontextT UcontextT;
#pragma pack on #pragma pack on
typedef struct Sigaltstack Sigaltstack;
struct Sigaltstack { struct Sigaltstack {
void *ss_sp; byte *ss_sp;
uint32 ss_size; uint32 ss_size;
int32 ss_flags; int32 ss_flags;
}; };
struct Sigset {
typedef uint32 Sigset; uint32 __bits[4];
typedef struct Siginfo Siginfo;
struct Siginfo {
int32 si_signo;
int32 si_code;
int32 si_errno;
byte _data[116];
}; };
struct Siginfo {
typedef union Sigval Sigval; int32 _signo;
union Sigval { int32 _code;
int32 sival_int; int32 _errno;
void *sival_ptr; byte _reason[20];
}; };
typedef struct StackT StackT;
struct StackT { struct StackT {
void *ss_sp; byte *ss_sp;
uint32 ss_size; uint32 ss_size;
int32 ss_flags; int32 ss_flags;
}; };
typedef struct Timespec Timespec;
struct Timespec { struct Timespec {
int32 tv_sec; int64 tv_sec;
int32 tv_nsec; int32 tv_nsec;
}; };
typedef struct Timeval Timeval;
struct Timeval { struct Timeval {
int32 tv_sec; int64 tv_sec;
int32 tv_usec; int32 tv_usec;
}; };
typedef struct Itimerval Itimerval;
struct Itimerval { struct Itimerval {
Timeval it_interval; Timeval it_interval;
Timeval it_value; Timeval it_value;
}; };
typedef void sfxsave64; struct McontextT {
int32 __gregs[19];
typedef void usavefpu; byte __fpregs[644];
int32 _mc_tlsbase;
typedef struct Sigcontext Sigcontext; };
struct Sigcontext { struct UcontextT {
int32 sc_gs; uint32 uc_flags;
int32 sc_fs; UcontextT *uc_link;
int32 sc_es; Sigset uc_sigmask;
int32 sc_ds; StackT uc_stack;
int32 sc_edi; McontextT uc_mcontext;
int32 sc_esi; int32 __uc_pad[4];
int32 sc_ebp;
int32 sc_ebx;
int32 sc_edx;
int32 sc_ecx;
int32 sc_eax;
int32 sc_eip;
int32 sc_cs;
int32 sc_eflags;
int32 sc_esp;
int32 sc_ss;
int32 sc_onstack;
int32 sc_mask;
int32 sc_trapno;
int32 sc_err;
usavefpu *sc_fpstate;
}; };
#pragma pack off #pragma pack off
// Created by cgo -cdefs - DO NOT EDIT
// cgo -cdefs defs_netbsd.go defs_netbsd_386.go
enum {
REG_GS = 0x0,
REG_FS = 0x1,
REG_ES = 0x2,
REG_DS = 0x3,
REG_EDI = 0x4,
REG_ESI = 0x5,
REG_EBP = 0x6,
REG_ESP = 0x7,
REG_EBX = 0x8,
REG_EDX = 0x9,
REG_ECX = 0xa,
REG_EAX = 0xb,
REG_TRAPNO = 0xc,
REG_ERR = 0xd,
REG_EIP = 0xe,
REG_CS = 0xf,
REG_EFL = 0x10,
REG_UESP = 0x11,
REG_SS = 0x12,
};
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build ignore
/*
Input to cgo.
GOARCH=amd64 go tool cgo -cdefs defs_netbsd.go defs_netbsd_amd64.go >defs_netbsd_amd64.h
GOARCH=386 go tool cgo -cdefs defs_netbsd.go defs_netbsd_386.go >defs_netbsd_386.h
*/
package runtime
/*
#include <sys/types.h>
#include <machine/mcontext.h>
*/
import "C"
const (
REG_RDI = C._REG_RDI
REG_RSI = C._REG_RSI
REG_RDX = C._REG_RDX
REG_RCX = C._REG_RCX
REG_R8 = C._REG_R8
REG_R9 = C._REG_R9
REG_R10 = C._REG_R10
REG_R11 = C._REG_R11
REG_R12 = C._REG_R12
REG_R13 = C._REG_R13
REG_R14 = C._REG_R14
REG_R15 = C._REG_R15
REG_RBP = C._REG_RBP
REG_RBX = C._REG_RBX
REG_RAX = C._REG_RAX
REG_GS = C._REG_GS
REG_FS = C._REG_FS
REG_ES = C._REG_ES
REG_DS = C._REG_DS
REG_TRAPNO = C._REG_TRAPNO
REG_ERR = C._REG_ERR
REG_RIP = C._REG_RIP
REG_CS = C._REG_CS
REG_RFLAGS = C._REG_RFLAGS
REG_RSP = C._REG_RSP
REG_SS = C._REG_SS
)
// godefs -f -m64 defs.c // Created by cgo -cdefs - DO NOT EDIT
// cgo -cdefs defs_netbsd.go defs_netbsd_amd64.go
// MACHINE GENERATED - DO NOT EDIT.
// Constants
enum { enum {
PROT_NONE = 0, PROT_NONE = 0x0,
PROT_READ = 0x1, PROT_READ = 0x1,
PROT_WRITE = 0x2, PROT_WRITE = 0x2,
PROT_EXEC = 0x4, PROT_EXEC = 0x4,
MAP_ANON = 0x1000, MAP_ANON = 0x1000,
MAP_PRIVATE = 0x2, MAP_PRIVATE = 0x2,
MAP_FIXED = 0x10, MAP_FIXED = 0x10,
SA_SIGINFO = 0x40, SA_SIGINFO = 0x40,
SA_RESTART = 0x2, SA_RESTART = 0x2,
SA_ONSTACK = 0x1, SA_ONSTACK = 0x1,
EINTR = 0x4, EINTR = 0x4,
SIGHUP = 0x1, SIGHUP = 0x1,
SIGINT = 0x2, SIGINT = 0x2,
SIGQUIT = 0x3, SIGQUIT = 0x3,
...@@ -46,6 +49,7 @@ enum { ...@@ -46,6 +49,7 @@ enum {
SIGINFO = 0x1d, SIGINFO = 0x1d,
SIGUSR1 = 0x1e, SIGUSR1 = 0x1e,
SIGUSR2 = 0x1f, SIGUSR2 = 0x1f,
FPE_INTDIV = 0x1, FPE_INTDIV = 0x1,
FPE_INTOVF = 0x2, FPE_INTOVF = 0x2,
FPE_FLTDIV = 0x3, FPE_FLTDIV = 0x3,
...@@ -54,105 +58,115 @@ enum { ...@@ -54,105 +58,115 @@ enum {
FPE_FLTRES = 0x6, FPE_FLTRES = 0x6,
FPE_FLTINV = 0x7, FPE_FLTINV = 0x7,
FPE_FLTSUB = 0x8, FPE_FLTSUB = 0x8,
BUS_ADRALN = 0x1, BUS_ADRALN = 0x1,
BUS_ADRERR = 0x2, BUS_ADRERR = 0x2,
BUS_OBJERR = 0x3, BUS_OBJERR = 0x3,
SEGV_MAPERR = 0x1, SEGV_MAPERR = 0x1,
SEGV_ACCERR = 0x2, SEGV_ACCERR = 0x2,
ITIMER_REAL = 0,
ITIMER_REAL = 0x0,
ITIMER_VIRTUAL = 0x1, ITIMER_VIRTUAL = 0x1,
ITIMER_PROF = 0x2, ITIMER_PROF = 0x2,
}; };
// Types typedef struct Sigaltstack Sigaltstack;
typedef struct Sigset Sigset;
typedef struct Siginfo Siginfo;
typedef struct StackT StackT;
typedef struct Timespec Timespec;
typedef struct Timeval Timeval;
typedef struct Itimerval Itimerval;
typedef struct McontextT McontextT;
typedef struct UcontextT UcontextT;
#pragma pack on #pragma pack on
typedef struct Sigaltstack Sigaltstack;
struct Sigaltstack { struct Sigaltstack {
void *ss_sp; byte *ss_sp;
uint64 ss_size; uint64 ss_size;
int32 ss_flags; int32 ss_flags;
byte pad_godefs_0[4]; byte Pad_cgo_0[4];
}; };
struct Sigset {
typedef uint32 Sigset; uint32 __bits[4];
typedef struct Siginfo Siginfo;
struct Siginfo {
int32 si_signo;
int32 si_code;
int32 si_errno;
byte pad_godefs_0[4];
byte _data[120];
}; };
struct Siginfo {
typedef union Sigval Sigval; int32 _signo;
union Sigval { int32 _code;
int32 sival_int; int32 _errno;
void *sival_ptr; int32 _pad;
byte _reason[24];
}; };
typedef struct StackT StackT;
struct StackT { struct StackT {
void *ss_sp; byte *ss_sp;
uint64 ss_size; uint64 ss_size;
int32 ss_flags; int32 ss_flags;
byte pad_godefs_0[4]; byte Pad_cgo_0[4];
}; };
typedef struct Timespec Timespec;
struct Timespec { struct Timespec {
int32 tv_sec; int64 tv_sec;
byte pad_godefs_0[4];
int64 tv_nsec; int64 tv_nsec;
}; };
typedef struct Timeval Timeval;
struct Timeval { struct Timeval {
int64 tv_sec; int64 tv_sec;
int64 tv_usec; int32 tv_usec;
byte Pad_cgo_0[4];
}; };
typedef struct Itimerval Itimerval;
struct Itimerval { struct Itimerval {
Timeval it_interval; Timeval it_interval;
Timeval it_value; Timeval it_value;
}; };
typedef void sfxsave64; struct McontextT {
uint64 __gregs[26];
typedef void usavefpu; uint64 _mc_tlsbase;
int8 __fpregs[512];
typedef struct Sigcontext Sigcontext; };
struct Sigcontext { struct UcontextT {
int64 sc_rdi; uint32 uc_flags;
int64 sc_rsi; byte Pad_cgo_0[4];
int64 sc_rdx; UcontextT *uc_link;
int64 sc_rcx; Sigset uc_sigmask;
int64 sc_r8; StackT uc_stack;
int64 sc_r9; McontextT uc_mcontext;
int64 sc_r10;
int64 sc_r11;
int64 sc_r12;
int64 sc_r13;
int64 sc_r14;
int64 sc_r15;
int64 sc_rbp;
int64 sc_rbx;
int64 sc_rax;
int64 sc_gs;
int64 sc_fs;
int64 sc_es;
int64 sc_ds;
int64 sc_trapno;
int64 sc_err;
int64 sc_rip;
int64 sc_cs;
int64 sc_rflags;
int64 sc_rsp;
int64 sc_ss;
sfxsave64 *sc_fpstate;
int32 sc_onstack;
int32 sc_mask;
}; };
#pragma pack off #pragma pack off
// Created by cgo -cdefs - DO NOT EDIT
// cgo -cdefs defs_netbsd.go defs_netbsd_amd64.go
enum {
REG_RDI = 0x0,
REG_RSI = 0x1,
REG_RDX = 0x2,
REG_RCX = 0x3,
REG_R8 = 0x4,
REG_R9 = 0x5,
REG_R10 = 0x6,
REG_R11 = 0x7,
REG_R12 = 0x8,
REG_R13 = 0x9,
REG_R14 = 0xa,
REG_R15 = 0xb,
REG_RBP = 0xc,
REG_RBX = 0xd,
REG_RAX = 0xe,
REG_GS = 0xf,
REG_FS = 0x10,
REG_ES = 0x11,
REG_DS = 0x12,
REG_TRAPNO = 0x13,
REG_ERR = 0x14,
REG_RIP = 0x15,
REG_CS = 0x16,
REG_RFLAGS = 0x17,
REG_RSP = 0x18,
REG_SS = 0x19,
};
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