aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/include/sparcv9-linux-gnu/sys
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-07-15 20:46:12 -0400
committerGitHub <noreply@github.com>2019-07-15 20:46:12 -0400
commit3f4abe97bdbe666dbb3532c14a97e414aae4caca (patch)
treeba08f2f14e79a8c8f7e83cea0344826fefffd9a2 /lib/libc/include/sparcv9-linux-gnu/sys
parent33eaaadd01b20d1327b67758664ce1265216e471 (diff)
parentaff90c22520bbbadd56fbfd1378f161ee8a3cdb2 (diff)
downloadzig-3f4abe97bdbe666dbb3532c14a97e414aae4caca.tar.gz
zig-3f4abe97bdbe666dbb3532c14a97e414aae4caca.zip
Merge pull request #2892 from ziglang/install-with-zig-build
move some of the installation from cmake to zig build
Diffstat (limited to 'lib/libc/include/sparcv9-linux-gnu/sys')
-rw-r--r--lib/libc/include/sparcv9-linux-gnu/sys/ptrace.h229
-rw-r--r--lib/libc/include/sparcv9-linux-gnu/sys/ucontext.h304
-rw-r--r--lib/libc/include/sparcv9-linux-gnu/sys/user.h86
3 files changed, 619 insertions, 0 deletions
diff --git a/lib/libc/include/sparcv9-linux-gnu/sys/ptrace.h b/lib/libc/include/sparcv9-linux-gnu/sys/ptrace.h
new file mode 100644
index 0000000000..c64858789a
--- /dev/null
+++ b/lib/libc/include/sparcv9-linux-gnu/sys/ptrace.h
@@ -0,0 +1,229 @@
+/* `ptrace' debugger support interface. Linux/SPARC version.
+ Copyright (C) 1996-2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_PTRACE_H
+#define _SYS_PTRACE_H 1
+
+#include <features.h>
+#include <bits/types.h>
+#include <bits/wordsize.h>
+
+/* Linux/SPARC kernels up to 2.3.18 do not care much
+ about what namespace polution, so use a kludge now. */
+#undef PTRACE_GETREGS
+#undef PTRACE_SETREGS
+#undef PTRACE_GETFPREGS
+#undef PTRACE_SETFPREGS
+#undef PTRACE_READDATA
+#undef PTRACE_WRITEDATA
+#undef PTRACE_READTEXT
+#undef PTRACE_WRITETEXT
+#undef PTRACE_SUNDETACH
+
+__BEGIN_DECLS
+
+/* Type of the REQUEST argument to `ptrace.' */
+enum __ptrace_request
+{
+ /* Indicate that the process making this request should be traced.
+ All signals received by this process can be intercepted by its
+ parent, and its parent can use the other `ptrace' requests. */
+ PTRACE_TRACEME = 0,
+#define PT_TRACE_ME PTRACE_TRACEME
+
+ /* Return the word in the process's text space at address ADDR. */
+ PTRACE_PEEKTEXT = 1,
+#define PT_READ_I PTRACE_PEEKTEXT
+
+ /* Return the word in the process's data space at address ADDR. */
+ PTRACE_PEEKDATA = 2,
+#define PT_READ_D PTRACE_PEEKDATA
+
+ /* Return the word in the process's user area at offset ADDR. */
+ PTRACE_PEEKUSER = 3,
+#define PT_READ_U PTRACE_PEEKUSER
+
+ /* Write the word DATA into the process's text space at address ADDR. */
+ PTRACE_POKETEXT = 4,
+#define PT_WRITE_I PTRACE_POKETEXT
+
+ /* Write the word DATA into the process's data space at address ADDR. */
+ PTRACE_POKEDATA = 5,
+#define PT_WRITE_D PTRACE_POKEDATA
+
+ /* Write the word DATA into the process's user area at offset ADDR. */
+ PTRACE_POKEUSER = 6,
+#define PT_WRITE_U PTRACE_POKEUSER
+
+ /* Continue the process. */
+ PTRACE_CONT = 7,
+#define PT_CONTINUE PTRACE_CONT
+
+ /* Kill the process. */
+ PTRACE_KILL = 8,
+#define PT_KILL PTRACE_KILL
+
+ /* Single step the process. */
+ PTRACE_SINGLESTEP = 9,
+#define PT_STEP PTRACE_SINGLESTEP
+
+ /* Detach from a process attached to with PTRACE_ATTACH. */
+ PTRACE_DETACH = 11,
+#define PT_DETACH PTRACE_DETACH
+
+ /* This define is needed for older programs which were
+ trying to work around sparc-linux ptrace nastiness. */
+#define PTRACE_SUNDETACH PTRACE_DETACH
+
+#if __WORDSIZE == 32
+
+ /* Get all general purpose registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_GETREGS = 12,
+#define PT_GETREGS PTRACE_GETREGS
+
+ /* Set all general purpose registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_SETREGS = 13,
+#define PT_SETREGS PTRACE_SETREGS
+
+ /* Get all floating point registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_GETFPREGS = 14,
+#define PT_GETFPREGS PTRACE_GETFPREGS
+
+ /* Set all floating point registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_SETFPREGS = 15,
+#define PT_SETFPREGS PTRACE_SETFPREGS
+
+#endif
+
+ /* Attach to a process that is already running. */
+ PTRACE_ATTACH = 16,
+#define PT_ATTACH PTRACE_ATTACH
+
+ /* Write several bytes at a time. */
+ PTRACE_WRITEDATA = 17,
+#define PTRACE_WRITEDATA PTRACE_WRITEDATA
+
+ /* Read several bytes at a time. */
+ PTRACE_READTEXT = 18,
+#define PTRACE_READTEXT PTRACE_READTEXT
+#define PTRACE_READDATA PTRACE_READTEXT
+
+ /* Write several bytes at a time. */
+ PTRACE_WRITETEXT = 19,
+#define PTRACE_WRITETEXT PTRACE_WRITETEXT
+
+#if __WORDSIZE == 64
+
+ /* Get all general purpose registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_GETREGS = 22,
+#define PT_GETREGS PTRACE_GETREGS
+
+ /* Set all general purpose registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_SETREGS = 23,
+#define PT_SETREGS PTRACE_SETREGS
+
+#endif
+
+ /* Continue and stop at the next entry to or return from syscall. */
+ PTRACE_SYSCALL = 24,
+#define PTRACE_SYSCALL PTRACE_SYSCALL
+
+#if __WORDSIZE == 64
+
+ /* Get all floating point registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_GETFPREGS = 25,
+#define PT_GETFPREGS PTRACE_GETFPREGS
+
+ /* Set all floating point registers used by a processes.
+ This is not supported on all machines. */
+ PTRACE_SETFPREGS = 26,
+#define PT_SETFPREGS PTRACE_SETFPREGS
+
+#endif
+
+ /* Set ptrace filter options. */
+ PTRACE_SETOPTIONS = 0x4200,
+#define PT_SETOPTIONS PTRACE_SETOPTIONS
+
+ /* Get last ptrace message. */
+ PTRACE_GETEVENTMSG = 0x4201,
+#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
+
+ /* Get siginfo for process. */
+ PTRACE_GETSIGINFO = 0x4202,
+#define PT_GETSIGINFO PTRACE_GETSIGINFO
+
+ /* Set new siginfo for process. */
+ PTRACE_SETSIGINFO = 0x4203,
+#define PT_SETSIGINFO PTRACE_SETSIGINFO
+
+ /* Get register content. */
+ PTRACE_GETREGSET = 0x4204,
+#define PTRACE_GETREGSET PTRACE_GETREGSET
+
+ /* Set register content. */
+ PTRACE_SETREGSET = 0x4205,
+#define PTRACE_SETREGSET PTRACE_SETREGSET
+
+ /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
+ signal or group stop state. */
+ PTRACE_SEIZE = 0x4206,
+#define PTRACE_SEIZE PTRACE_SEIZE
+
+ /* Trap seized tracee. */
+ PTRACE_INTERRUPT = 0x4207,
+#define PTRACE_INTERRUPT PTRACE_INTERRUPT
+
+ /* Wait for next group event. */
+ PTRACE_LISTEN = 0x4208,
+#define PTRACE_LISTEN PTRACE_LISTEN
+
+ /* Retrieve siginfo_t structures without removing signals from a queue. */
+ PTRACE_PEEKSIGINFO = 0x4209,
+#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO
+
+ /* Get the mask of blocked signals. */
+ PTRACE_GETSIGMASK = 0x420a,
+#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK
+
+ /* Change the mask of blocked signals. */
+ PTRACE_SETSIGMASK = 0x420b,
+#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
+
+ /* Get seccomp BPF filters. */
+ PTRACE_SECCOMP_GET_FILTER = 0x420c,
+#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
+
+ /* Get seccomp BPF filter metadata. */
+ PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
+};
+
+
+#include <bits/ptrace-shared.h>
+
+__END_DECLS
+
+#endif /* _SYS_PTRACE_H */ \ No newline at end of file
diff --git a/lib/libc/include/sparcv9-linux-gnu/sys/ucontext.h b/lib/libc/include/sparcv9-linux-gnu/sys/ucontext.h
new file mode 100644
index 0000000000..ce917b46da
--- /dev/null
+++ b/lib/libc/include/sparcv9-linux-gnu/sys/ucontext.h
@@ -0,0 +1,304 @@
+/* Copyright (C) 1998-2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_UCONTEXT_H
+#define _SYS_UCONTEXT_H 1
+
+#include <features.h>
+
+#include <bits/types/sigset_t.h>
+#include <bits/types/stack_t.h>
+
+#include <bits/wordsize.h>
+
+
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+#if __WORDSIZE == 64
+
+#define __MC_NGREG 19
+#ifdef __USE_MISC
+# define MC_TSTATE 0
+# define MC_PC 1
+# define MC_NPC 2
+# define MC_Y 3
+# define MC_G1 4
+# define MC_G2 5
+# define MC_G3 6
+# define MC_G4 7
+# define MC_G5 8
+# define MC_G6 9
+# define MC_G7 10
+# define MC_O0 11
+# define MC_O1 12
+# define MC_O2 13
+# define MC_O3 14
+# define MC_O4 15
+# define MC_O5 16
+# define MC_O6 17
+# define MC_O7 18
+# define MC_NGREG __MC_NGREG
+#endif
+
+typedef unsigned long mc_greg_t;
+typedef mc_greg_t mc_gregset_t[__MC_NGREG];
+
+#ifdef __USE_MISC
+# define MC_MAXFPQ 16
+#endif
+struct __mc_fq {
+ unsigned long *__ctx(mcfq_addr);
+ unsigned int __ctx(mcfq_insn);
+};
+
+typedef struct {
+ union {
+ unsigned int __ctx(sregs)[32];
+ unsigned long __ctx(dregs)[32];
+ long double __ctx(qregs)[16];
+ } __ctx(mcfpu_fregs);
+ unsigned long __ctx(mcfpu_fsr);
+ unsigned long __ctx(mcfpu_fprs);
+ unsigned long __ctx(mcfpu_gsr);
+ struct __mc_fq *__ctx(mcfpu_fq);
+ unsigned char __ctx(mcfpu_qcnt);
+ unsigned char __ctx(mcfpu_qentsz);
+ unsigned char __ctx(mcfpu_enab);
+} mc_fpu_t;
+
+typedef struct {
+ mc_gregset_t __ctx(mc_gregs);
+ mc_greg_t __ctx(mc_fp);
+ mc_greg_t __ctx(mc_i7);
+ mc_fpu_t __ctx(mc_fpregs);
+} mcontext_t;
+
+typedef struct ucontext_t {
+ struct ucontext_t *uc_link;
+ unsigned long __ctx(uc_flags);
+ unsigned long __uc_sigmask;
+ mcontext_t uc_mcontext;
+ stack_t uc_stack;
+ sigset_t uc_sigmask;
+} ucontext_t;
+
+#endif /* __WORDISIZE == 64 */
+
+/*
+ * Location of the users' stored registers relative to R0.
+ * Usage is as an index into a gregset_t array or as u.u_ar0[XX].
+ */
+#ifdef __USE_MISC
+# define REG_PSR (0)
+# define REG_PC (1)
+# define REG_nPC (2)
+# define REG_Y (3)
+# define REG_G1 (4)
+# define REG_G2 (5)
+# define REG_G3 (6)
+# define REG_G4 (7)
+# define REG_G5 (8)
+# define REG_G6 (9)
+# define REG_G7 (10)
+# define REG_O0 (11)
+# define REG_O1 (12)
+# define REG_O2 (13)
+# define REG_O3 (14)
+# define REG_O4 (15)
+# define REG_O5 (16)
+# define REG_O6 (17)
+# define REG_O7 (18)
+#endif
+
+/*
+ * A gregset_t is defined as an array type for compatibility with the reference
+ * source. This is important due to differences in the way the C language
+ * treats arrays and structures as parameters.
+ *
+ * Note that NGREG is really (sizeof (struct regs) / sizeof (greg_t)),
+ * but that the ABI defines it absolutely to be 21 (resp. 19).
+ */
+
+#if __WORDSIZE == 64
+
+# define __NGREG 21
+# ifdef __USE_MISC
+# define REG_ASI (19)
+# define REG_FPRS (20)
+
+# define NGREG __NGREG
+# endif
+typedef long greg_t;
+
+#else /* __WORDSIZE == 32 */
+
+# define __NGREG 19
+# ifdef __USE_MISC
+# define NGREG __NGREG
+# endif
+typedef int greg_t;
+
+#endif /* __WORDSIZE == 32 */
+
+typedef greg_t gregset_t[__NGREG];
+
+/*
+ * The following structures define how a register window can appear on the
+ * stack. This structure is available (when required) through the `gwins'
+ * field of an mcontext (nested within ucontext). SPARC_MAXWINDOW is the
+ * maximum number of outstanding regiters window defined in the SPARC
+ * architecture (*not* implementation).
+ */
+# define __SPARC_MAXREGWINDOW 31 /* max windows in SPARC arch. */
+#ifdef __USE_MISC
+# define SPARC_MAXREGWINDOW __SPARC_MAXREGWINDOW
+#endif
+struct __rwindow
+ {
+ greg_t __ctx(rw_local)[8]; /* locals */
+ greg_t __ctx(rw_in)[8]; /* ins */
+ };
+
+#ifdef __USE_MISC
+# define rw_fp __ctx(rw_in)[6] /* frame pointer */
+# define rw_rtn __ctx(rw_in)[7] /* return address */
+#endif
+
+typedef struct
+ {
+ int __ctx(wbcnt);
+ int *__ctx(spbuf)[__SPARC_MAXREGWINDOW];
+ struct __rwindow __ctx(wbuf)[__SPARC_MAXREGWINDOW];
+ } gwindows_t;
+
+/*
+ * Floating point definitions.
+ */
+
+#ifdef __USE_MISC
+# define MAXFPQ 16 /* max # of fpu queue entries currently supported */
+#endif
+
+/*
+ * struct fq defines the minimal format of a floating point instruction queue
+ * entry. The size of entries in the floating point queue are implementation
+ * dependent. The union FQu is guarenteed to be the first field in any ABI
+ * conformant system implementation. Any additional fields provided by an
+ * implementation should not be used applications designed to be ABI conformant. */
+
+struct __fpq
+ {
+ unsigned long *__ctx(fpq_addr); /* address */
+ unsigned long __ctx(fpq_instr); /* instruction */
+ };
+
+struct __fq
+ {
+ union /* FPU inst/addr queue */
+ {
+ double __ctx(whole);
+ struct __fpq __ctx(fpq);
+ } __ctx(FQu);
+ };
+
+#ifdef __USE_MISC
+# define FPU_REGS_TYPE unsigned
+# define FPU_DREGS_TYPE unsigned long long
+# define V7_FPU_FSR_TYPE unsigned
+# define V9_FPU_FSR_TYPE unsigned long long
+# define V9_FPU_FPRS_TYPE unsigned
+#endif
+
+#if __WORDSIZE == 64
+
+typedef struct
+ {
+ union { /* FPU floating point regs */
+ unsigned __ctx(fpu_regs)[32]; /* 32 singles */
+ double __ctx(fpu_dregs)[32]; /* 32 doubles */
+ long double __ctx(fpu_qregs)[16]; /* 16 quads */
+ } __ctx(fpu_fr);
+ struct __fq *__ctx(fpu_q); /* ptr to array of FQ entries */
+ unsigned long __ctx(fpu_fsr); /* FPU status register */
+ unsigned char __ctx(fpu_qcnt); /* # of entries in saved FQ */
+ unsigned char __ctx(fpu_q_entrysize); /* # of bytes per FQ entry */
+ unsigned char __ctx(fpu_en); /* flag signifying fpu in use */
+ } fpregset_t;
+
+#else /* __WORDSIZE == 32 */
+
+typedef struct
+ {
+ union { /* FPU floating point regs */
+ __extension__ unsigned long long __ctx(fpu_regs)[32]; /* 32 singles */
+ double __ctx(fpu_dregs)[16]; /* 16 doubles */
+ } __ctx(fpu_fr);
+ struct __fq *__ctx(fpu_q); /* ptr to array of FQ entries */
+ unsigned __ctx(fpu_fsr); /* FPU status register */
+ unsigned char __ctx(fpu_qcnt); /* # of entries in saved FQ */
+ unsigned char __ctx(fpu_q_entrysize); /* # of bytes per FQ entry */
+ unsigned char __ctx(fpu_en); /* flag signifying fpu in use */
+ } fpregset_t;
+
+/*
+ * The following structure is for associating extra register state with
+ * the ucontext structure and is kept within the uc_mcontext filler area.
+ *
+ * If (xrs_id == XRS_ID) then the xrs_ptr field is a valid pointer to
+ * extra register state. The exact format of the extra register state
+ * pointed to by xrs_ptr is platform-dependent.
+ *
+ * Note: a platform may or may not manage extra register state.
+ */
+typedef struct
+ {
+ unsigned int __ctx(xrs_id); /* indicates xrs_ptr validity */
+ void * __ctx(xrs_ptr); /* ptr to extra reg state */
+ } xrs_t;
+
+#ifdef __USE_MISC
+# define XRS_ID 0x78727300 /* the string "xrs" */
+#endif
+
+typedef struct
+ {
+ gregset_t __ctx(gregs); /* general register set */
+ gwindows_t *__ctx(gwins); /* POSSIBLE pointer to register
+ windows */
+ fpregset_t __ctx(fpregs); /* floating point register set */
+ xrs_t __ctx(xrs); /* POSSIBLE extra register state
+ association */
+ long __glibc_reserved1[19];
+ } mcontext_t;
+
+
+/* Userlevel context. */
+typedef struct ucontext_t
+ {
+ unsigned long __ctx(uc_flags);
+ struct ucontext_t *uc_link;
+ sigset_t uc_sigmask;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+ } ucontext_t;
+
+#endif /* __WORDSIZE == 32 */
+#endif /* sys/ucontext.h */ \ No newline at end of file
diff --git a/lib/libc/include/sparcv9-linux-gnu/sys/user.h b/lib/libc/include/sparcv9-linux-gnu/sys/user.h
new file mode 100644
index 0000000000..142047ab1b
--- /dev/null
+++ b/lib/libc/include/sparcv9-linux-gnu/sys/user.h
@@ -0,0 +1,86 @@
+/* Copyright (C) 2003-2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_USER_H
+#define _SYS_USER_H 1
+
+#include <stddef.h>
+
+struct sunos_regs
+{
+ unsigned int psr, pc, npc, y;
+ unsigned int regs[15];
+};
+
+struct sunos_fpqueue
+{
+ unsigned int *addr;
+ unsigned int inst;
+};
+
+struct sunos_fp
+{
+ union
+ {
+ unsigned int regs[32];
+ double reg_dbls[16];
+ } fregs;
+ unsigned int fsr;
+ unsigned int flags;
+ unsigned int extra;
+ unsigned int fpq_count;
+ struct sunos_fpqueue fpq[16];
+};
+
+struct sunos_fpu
+{
+ struct sunos_fp fpstatus;
+};
+
+/* The SunOS core file header layout. */
+struct user {
+ unsigned int magic;
+ unsigned int len;
+ struct sunos_regs regs;
+ struct
+ {
+ unsigned char a_dynamic :1;
+ unsigned char a_toolversion :7;
+ unsigned char a_machtype;
+ unsigned short a_info;
+ unsigned int a_text;
+ unsigned int a_data;
+ unsigned int a_bss;
+ unsigned int a_syms;
+ unsigned int a_entry;
+ unsigned int a_trsize;
+ unsigned int a_drsize;
+ } uexec;
+ int signal;
+ size_t u_tsize;
+ size_t u_dsize;
+ size_t u_ssize;
+ char u_comm[17];
+ struct sunos_fpu fpu;
+ unsigned int sigcode;
+};
+
+#define NBPG 0x2000
+#define UPAGES 1
+#define SUNOS_CORE_MAGIC 0x080456
+
+#endif \ No newline at end of file