[DTrace-devel] [PATCH v2] sparc: remove architecture support

Eugene Loh eugene.loh at oracle.com
Thu Mar 5 11:00:35 UTC 2026


Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

Two tiny comments that do not warrant holding up the patch:

1)  in dt_link.c, the code is now

     #if defined(__i386) || defined(__amd64)
              emu = " -m elf_i386";
     #endif

Does the absence of an "#else" clause mean that emu will be undefined 
for some builds?  Well, no, due to other constraints. So, would it be 
clearer to remove the "#if / #endif" altogether? I don't know.  
Presumably this is not a correctness issue but a clarity issue.

2)  the procfs.d.in M4 is so compact now

     (m4_kver(4,9,0), m4_dnl
      [[T->cpu]])

that it might look better on a single line:

     (m4_kver(4,9,0), [[T->cpu]])

On 3/5/26 00:01, Kris Van Hees via DTrace-devel wrote:
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   COMMANDLINE-OPTIONS                           |   6 +-
>   GNUmakefile                                   |  10 +-
>   include/sparc/platform.h                      |  32 -----
>   libdtrace/dt_link.c                           |   4 +-
>   libdtrace/dt_open.c                           |  16 +--
>   libdtrace/procfs.d.in                         |   4 +-
>   libdtrace/sparc/regs.d                        |  99 -------------
>   libproc/sparc/isadep.c                        | 133 ------------------
>   libproc/sparc/isadep.h                        |  81 -----------
>   test/stress/fbtsafety/tst.vahole.d            |  50 -------
>   test/unittest/aggs/tst.neglquant.d            |  10 +-
>   test/unittest/arrays/tst.uregsarray.sparc64.d |  69 ---------
>   test/unittest/arrays/tst.uregsarray.sparc64.x |   4 -
>   test/unittest/pid/test.sparc64.options        |   1 -
>   test/unittest/usdt/tst.enabled2.sh            |   2 +-
>   15 files changed, 16 insertions(+), 505 deletions(-)
>   delete mode 100644 include/sparc/platform.h
>   delete mode 100644 libdtrace/sparc/regs.d
>   delete mode 100644 libproc/sparc/isadep.c
>   delete mode 100644 libproc/sparc/isadep.h
>   delete mode 100755 test/stress/fbtsafety/tst.vahole.d
>   delete mode 100644 test/unittest/arrays/tst.uregsarray.sparc64.d
>   delete mode 100755 test/unittest/arrays/tst.uregsarray.sparc64.x
>   delete mode 100644 test/unittest/pid/test.sparc64.options
>
> diff --git a/COMMANDLINE-OPTIONS b/COMMANDLINE-OPTIONS
> index 73be89b1..67be7447 100644
> --- a/COMMANDLINE-OPTIONS
> +++ b/COMMANDLINE-OPTIONS
> @@ -3,8 +3,8 @@ DTRACE OPTIONS
>   
>   This file lists the dtrace commandline options, and indicates whether
>   or not they have been made to work on Linux and roughly when.  All options
> -are believed to work equally well on all supported architectures (x86 and
> -SPARC).
> +are believed to work equally well on all supported architectures (x86_64 and
> +ARM64).
>   
>   Notations:
>   
> @@ -317,8 +317,6 @@ definitions are always specified and valid in all modes:
>       * __linux
>       * __unix
>       * __SVR4
> -    * __sparc (on SPARC® systems only)
> -    * __sparcv9 (on SPARC® systems only when 64–bit programs are compiled)
>       * __i386 (on x86 systems only when 32–bit programs are compiled)
>       * __amd64 (on x86 systems only when 64–bit programs are compiled)
>       * __`uname -s` (for example, __Linux)
> diff --git a/GNUmakefile b/GNUmakefile
> index 835bc9b5..10530f3c 100644
> --- a/GNUmakefile
> +++ b/GNUmakefile
> @@ -20,8 +20,8 @@ VERSION := $(shell ./libdtrace/mkvers -vcurrent=t libdtrace/versions.list)
>   
>   ARCH := $(shell uname -m)
>   
> -$(if $(subst sparc64,,$(subst aarch64,,$(subst x86_64,,$(ARCH)))), \
> -    $(error "Error: DTrace for Linux only supports x86_64, ARM64 and sparc64"),)
> +$(if $(subst aarch64,,$(subst x86_64,,$(ARCH))), \
> +    $(error "Error: DTrace for Linux currently only supports x86_64 and ARM64"),)
>   $(if $(subst Linux,,$(shell uname -s)), \
>       $(error "Error: DTrace only supports Linux"),)
>   
> @@ -74,7 +74,7 @@ ifdef KERNELSRCDIR
>   KERNELOBJDIR ?= $(KERNELSRCDIR)
>   endif
>   
> -KERNELARCH := $(subst sparc64,sparc,$(subst aarch64,arm64,$(subst x86_64,x86,$(ARCH))))
> +KERNELARCH := $(subst aarch64,arm64,$(subst x86_64,x86,$(ARCH)))
>   
>   # Paths.
>   
> @@ -120,7 +120,7 @@ export CC ?= gcc
>   
>   BITNESS := 64
>   NATIVE_BITNESS_ONLY := $(shell echo 'int main (void) { }' | $(CC) -x c -o /dev/null -m32 - 2>/dev/null || echo t)
> -ARCHINC := $(subst sparc64,sparc,$(subst aarch64,arm64,$(subst x86_64,i386,$(ARCH))))
> +ARCHINC := $(subst aarch64,arm64,$(subst x86_64,i386,$(ARCH)))
>   
>   INVARIANT_CFLAGS := -std=gnu99 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(if $(NATIVE_BITNESS_ONLY),-DNATIVE_BITNESS_ONLY) -D_DT_VERSION=\"$(VERSION)\"
>   CPPFLAGS += -Iinclude -Iuts/common -Iinclude/$(ARCHINC) -I$(objdir)
> @@ -129,7 +129,7 @@ override CFLAGS += $(INVARIANT_CFLAGS)
>   PREPROCESS = $(CC) -E
>   export BPFC ?= bpf-unknown-none-gcc
>   
> -BPFCPPFLAGS += -D$(subst sparc64,__sparc,$(subst aarch64,__aarch64__,$(subst x86_64,__amd64,$(ARCH))))
> +BPFCPPFLAGS += -D$(subst aarch64,__aarch64__,$(subst x86_64,__amd64,$(ARCH)))
>   BPFCFLAGS ?= -O2 -Wall -Wno-unknown-pragmas $(if $(HAVE_BPFV3),-mcpu=v3) $(if $(HAVE_BPFMASM),-masm=normal) -ffreestanding
>   export BPFLD ?= bpf-unknown-none-ld
>   
> diff --git a/include/sparc/platform.h b/include/sparc/platform.h
> deleted file mode 100644
> index 1dea6ea2..00000000
> --- a/include/sparc/platform.h
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -/*
> - * Oracle Linux DTrace.
> - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
> - * Licensed under the Universal Permissive License v 1.0 as shown at
> - * http://oss.oracle.com/licenses/upl.
> - */
> -
> -#ifndef _SPARC_PLATFORM_H
> -#define _SPARC_PLATFORM_H
> -
> -#include <inttypes.h>
> -#include <asm/ptrace.h>
> -#include <elf.h>
> -#include <sys/syscall.h>			/* for __NR_* */
> -
> -/*
> - * Must be no larger than an 'unsigned long'.
> - */
> -const static unsigned char plat_bkpt[] = { 0x91, 0xd0, 0x20, 0x01 };
> -
> -/*
> - * Number of processor-specific dynamic tags on this platform.
> - */
> -#define DT_THISPROCNUM DT_SPARC_NUM
> -
> -/*
> - * TRUE if this platform requires software singlestepping.
> - */
> -#define NEED_SOFTWARE_SINGLESTEP 1
> -
> -#endif
> -
> diff --git a/libdtrace/dt_link.c b/libdtrace/dt_link.c
> index 6d733881..340273fb 100644
> --- a/libdtrace/dt_link.c
> +++ b/libdtrace/dt_link.c
> @@ -524,9 +524,7 @@ dtrace_program_link(dtrace_hdl_t *dtp, dtrace_prog_t *pgp, uint_t dflags,
>   
>   		if (dtp->dt_oflags & DTRACE_O_ILP32) {
>   			snprintf(drti, sizeof (drti), "%s/drti/drti32.o", libdir->dir_path);
> -#if defined(__sparc)
> -			emu = " -m elf32_sparc";
> -#elif defined(__i386) || defined(__amd64)
> +#if defined(__i386) || defined(__amd64)
>   			emu = " -m elf_i386";
>   #endif
>   		} else {
> diff --git a/libdtrace/dt_open.c b/libdtrace/dt_open.c
> index 54adec02..30b8758d 100644
> --- a/libdtrace/dt_open.c
> +++ b/libdtrace/dt_open.c
> @@ -827,24 +827,10 @@ dt_vopen(int version, int flags, int *errp,
>   	else if (flags & DTRACE_O_ILP32)
>   		dtp->dt_conf.dtc_ctfmodel = CTF_MODEL_ILP32;
>   
> -#ifdef __sparc
> -	/*
> -	 * On SPARC systems, __sparc is always defined for <sys/isa_defs.h>
> -	 * and __sparcv9 is defined if we are doing a 64-bit compile.
> -	 */
> -	if (dt_cpp_add_arg(dtp, "-D__sparc") == NULL)
> -		return set_open_errno(dtp, errp, EDT_NOMEM);
> -
> -	if (dtp->dt_conf.dtc_ctfmodel == CTF_MODEL_LP64 &&
> -	    dt_cpp_add_arg(dtp, "-D__sparcv9") == NULL)
> -		return set_open_errno(dtp, errp, EDT_NOMEM);
> -#endif
> -
>   #ifdef __x86
>   	/*
>   	 * On x86 systems, __i386 is defined for <sys/isa_defs.h> for 32-bit
> -	 * compiles and __amd64 is defined for 64-bit compiles.  Unlike SPARC,
> -	 * they are defined exclusive of one another (see PSARC 2004/619).
> +	 * compiles and __amd64 is defined for 64-bit compiles.
>   	 */
>   	if (dtp->dt_conf.dtc_ctfmodel == CTF_MODEL_LP64) {
>   		if (dt_cpp_add_arg(dtp, "-D__amd64") == NULL)
> diff --git a/libdtrace/procfs.d.in b/libdtrace/procfs.d.in
> index 23454d63..4140608b 100644
> --- a/libdtrace/procfs.d.in
> +++ b/libdtrace/procfs.d.in
> @@ -285,9 +285,7 @@ translator lwpsinfo_t < struct task_struct *T > {
>   define_for_kernel([[on_cpu]], [[(m4_kver(5,16,0), m4_dnl
>     [[((struct thread_info *)T->stack)->cpu]]), m4_dnl
>   (m4_kver(4,9,0), m4_dnl
> -  [[if_arch([[x86]],[[T->cpu]])]] m4_dnl
> -  [[if_arch([[arm64]],[[T->cpu]])]] m4_dnl
> -  [[if_arch([[sparc]],[[((struct thread_info *)T->stack)->cpu]])]])]], m4_dnl
> +  [[T->cpu]])]], m4_dnl
>   [[((struct thread_info *)T->stack)->cpu]])m4_dnl
>   	pr_onpro = on_cpu;
>   };
> diff --git a/libdtrace/sparc/regs.d b/libdtrace/sparc/regs.d
> deleted file mode 100644
> index 112ae207..00000000
> --- a/libdtrace/sparc/regs.d
> +++ /dev/null
> @@ -1,99 +0,0 @@
> -/*
> - * Oracle Linux DTrace.
> - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
> - * Licensed under the Universal Permissive License v 1.0 as shown at
> - * http://oss.oracle.com/licenses/upl.
> - */
> -
> -inline int R_G0	= 0;
> -#pragma D binding "1.0" R_G0
> -inline int R_G1	= 1;
> -#pragma D binding "1.0" R_G1
> -inline int R_G2	= 2;
> -#pragma D binding "1.0" R_G2
> -inline int R_G3	= 3;
> -#pragma D binding "1.0" R_G3
> -inline int R_G4	= 4;
> -#pragma D binding "1.0" R_G4
> -inline int R_G5	= 5;
> -#pragma D binding "1.0" R_G5
> -inline int R_G6	= 6;
> -#pragma D binding "1.0" R_G6
> -inline int R_G7	= 7;
> -#pragma D binding "1.0" R_G7
> -
> -inline int R_O0	= 8;
> -#pragma D binding "1.0" R_O0
> -inline int R_O1	= 9;
> -#pragma D binding "1.0" R_O1
> -inline int R_O2	= 10;
> -#pragma D binding "1.0" R_O2
> -inline int R_O3	= 11;
> -#pragma D binding "1.0" R_O3
> -inline int R_O4	= 12;
> -#pragma D binding "1.0" R_O4
> -inline int R_O5	= 13;
> -#pragma D binding "1.0" R_O5
> -inline int R_O6	= 14;
> -#pragma D binding "1.0" R_O6
> -inline int R_O7	= 15;
> -#pragma D binding "1.0" R_O7
> -
> -inline int R_L0	= 16;
> -#pragma D binding "1.0" R_L0
> -inline int R_L1	= 17;
> -#pragma D binding "1.0" R_L1
> -inline int R_L2	= 18;
> -#pragma D binding "1.0" R_L2
> -inline int R_L3	= 19;
> -#pragma D binding "1.0" R_L3
> -inline int R_L4	= 20;
> -#pragma D binding "1.0" R_L4
> -inline int R_L5	= 21;
> -#pragma D binding "1.0" R_L5
> -inline int R_L6	= 22;
> -#pragma D binding "1.0" R_L6
> -inline int R_L7	= 23;
> -#pragma D binding "1.0" R_L7
> -
> -inline int R_I0	= 24;
> -#pragma D binding "1.0" R_I0
> -inline int R_I1	= 25;
> -#pragma D binding "1.0" R_I1
> -inline int R_I2	= 26;
> -#pragma D binding "1.0" R_I2
> -inline int R_I3	= 27;
> -#pragma D binding "1.0" R_I3
> -inline int R_I4	= 28;
> -#pragma D binding "1.0" R_I4
> -inline int R_I5	= 29;
> -#pragma D binding "1.0" R_I5
> -inline int R_I6	= 30;
> -#pragma D binding "1.0" R_I6
> -inline int R_I7	= 31;
> -#pragma D binding "1.0" R_I7
> -
> -inline int R_CCR = 32;
> -#pragma D binding "1.0" R_CCR
> -inline int R_PC = 33;
> -#pragma D binding "1.0" R_PC
> -inline int R_nPC = 34;
> -#pragma D binding "1.0" R_nPC
> -inline int R_NPC = R_nPC;
> -#pragma D binding "1.0" R_NPC
> -inline int R_Y = 35;
> -#pragma D binding "1.0" R_Y
> -inline int R_ASI = 36;
> -#pragma D binding "1.0" R_ASI
> -inline int R_FPRS = 37;
> -#pragma D binding "1.0" R_FPRS
> -inline int R_PS = R_CCR;
> -#pragma D binding "1.0" R_PS
> -inline int R_SP = R_O6;
> -#pragma D binding "1.0" R_SP
> -inline int R_FP = R_I6;
> -#pragma D binding "1.0" R_FP
> -inline int R_R0 = R_O0;
> -#pragma D binding "1.0" R_R0
> -inline int R_R1 = R_O1;
> -#pragma D binding "1.0" R_R1
> diff --git a/libproc/sparc/isadep.c b/libproc/sparc/isadep.c
> deleted file mode 100644
> index aa4f53f5..00000000
> --- a/libproc/sparc/isadep.c
> +++ /dev/null
> @@ -1,133 +0,0 @@
> -/*
> - * ISA-dependent functions for SPARC and SPARC64.
> - */
> -
> -/*
> - * Oracle Linux DTrace.
> - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
> - * Licensed under the Universal Permissive License v 1.0 as shown at
> - * http://oss.oracle.com/licenses/upl.
> - */
> -
> -#include <inttypes.h>
> -#include <errno.h>
> -#include <string.h>
> -#include <sys/ptrace.h>
> -#include <asm/ptrace.h>				/* for struct pt_regs */
> -
> -#include "Pcontrol.h"
> -#include "libproc.h"
> -#include "platform.h"
> -
> -#define PTRACE_GETREGSET        0x4204
> -
> -/*
> - * Get a SPARC64 regset.
> - */
> -static struct pt_regs *
> -getregs_sparc64(struct ps_prochandle *P, struct pt_regs *regs)
> -{
> -	if (Pstate(P) == PS_RUN ||
> -	    Pstate(P) == PS_DEAD)
> -		return NULL;
> -
> -	if (wrapped_ptrace(P, PTRACE_GETREGS64, P->pid, regs) < 0)
> -		return NULL;
> -
> -	return regs;
> -}
> -
> -static struct pt_regs32 *
> -getregs_sparc32(struct ps_prochandle *P, struct pt_regs32 *regs)
> -{
> -	if (Pstate(P) == PS_RUN ||
> -	    Pstate(P) == PS_DEAD)
> -		return NULL;
> -
> -	if (wrapped_ptrace(P, PTRACE_GETREGS, P->pid, regs) < 0)
> -		return NULL;
> -
> -	return regs;
> -}
> -
> -/*
> - * Read the first argument of the function at which the process P is halted,
> - * which must be a pointer (though other integral arguments happen to work for
> - * the SPARC and SPARC64 ABI).
> - *
> - * For SPARC, the first integral argument to a function will always be in %i0.
> - * Horrifically, the value of all the UREG_* constants is off by 1, so we have
> - * to correct for that.
> - *
> - * On error, -1 cast to a uintptr_t is returned, and errno is set.
> - */
> -uintptr_t
> -Pread_first_arg_sparc64(struct ps_prochandle *P)
> -{
> -	struct pt_regs regs;
> -
> -	if (getregs_sparc64(P, &regs) == NULL)
> -		return (uintptr_t)-1;
> -
> -	return regs.u_regs[UREG_I0 - 1];
> -}
> -
> -uintptr_t
> -Pread_first_arg_sparc32(struct ps_prochandle *P)
> -{
> -	struct pt_regs32 regs;
> -
> -	if (getregs_sparc32(P, &regs) == NULL)
> -		return (uintptr_t)-1;
> -
> -	return regs.u_regs[UREG_I0 - 1];
> -}
> -
> -/*
> - * Get the address at which we stopped at a breakpoint.  Unlike on x86, no post
> - * facto adjustment is required.
> - */
> -uintptr_t
> -Pget_bkpt_ip_sparc64(struct ps_prochandle *P, int expect_esrch)
> -{
> -	struct pt_regs regs;
> -
> -	if (getregs_sparc64(P, &regs) == NULL) {
> -		if ((errno == ESRCH) && (expect_esrch))
> -			return 0;
> -		else {
> -			_dprintf("Unexpected ptrace (PTRACE_GETREGSET) "
> -			    "error: %s\n", strerror(errno));
> -			return -1;
> -		}
> -	}
> -
> -	return regs.tpc;
> -}
> -
> -/*
> - * Reset the instruction pointer address at which the process P is stopped.
> - * (Not needed on SPARC.)
> - */
> -long
> -Preset_bkpt_ip_sparc(struct ps_prochandle *P, uintptr_t addr)
> -{
> -    return 0; /* nothing doing */
> -}
> -
> -/*
> - * Get the address at which the temporary breakpoint should be dropped when a
> - * breakpoint is hit.
> - */
> -extern long Pget_next_ip_sparc64(struct ps_prochandle *P, uintptr_t addr)
> -{
> -	struct pt_regs regs;
> -
> -	if (getregs_sparc64(P, &regs) == NULL) {
> -		_dprintf("Unexpected ptrace (PTRACE_GETREGSET) "
> -		    "error: %s\n", strerror(errno));
> -		return -1;
> -	}
> -
> -	return regs.tnpc;
> -}
> diff --git a/libproc/sparc/isadep.h b/libproc/sparc/isadep.h
> deleted file mode 100644
> index 005e6008..00000000
> --- a/libproc/sparc/isadep.h
> +++ /dev/null
> @@ -1,81 +0,0 @@
> -/*
> - * Underlying ISA-dependent functions for SPARC and SPARC64.
> - */
> -
> -/*
> - * Oracle Linux DTrace.
> - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
> - * Licensed under the Universal Permissive License v 1.0 as shown at
> - * http://oss.oracle.com/licenses/upl.
> - */
> -
> -/*
> - * Not protected against multiple inclusion: this file is included by
> - * isadep_dispatch.h repeatedly, at local scope, to get different prototypes and
> - * dispatch variables.
> - */
> -
> -#ifdef WANT_FIRST_ARG_DISPATCH
> -
> -extern	uintptr_t Pread_first_arg_sparc64(struct ps_prochandle *P);
> -extern	uintptr_t Pread_first_arg_sparc32(struct ps_prochandle *P);
> -
> -isa_dispatch_t dispatch[] = {
> -    {B_FALSE, EM_SPARCV9, (dispatch_fun_t *) Pread_first_arg_sparc32},
> -    {B_TRUE, EM_SPARCV9, (dispatch_fun_t *) Pread_first_arg_sparc64},
> -    {B_FALSE, EM_SPARC32PLUS, (dispatch_fun_t *) Pread_first_arg_sparc32},
> -    {B_TRUE, EM_SPARC32PLUS, (dispatch_fun_t *) Pread_first_arg_sparc64},
> -    {B_FALSE, EM_SPARC, (dispatch_fun_t *) Pread_first_arg_sparc32},
> -    {B_TRUE, EM_SPARC, (dispatch_fun_t *) Pread_first_arg_sparc64}, /* ??? */
> -    {0, 0, NULL}};
> -
> -#endif
> -
> -#ifdef WANT_GET_BKPT_IP
> -
> -extern uintptr_t Pget_bkpt_ip_sparc64(struct ps_prochandle *P, int expect_esrch);
> -
> -/*
> - * I hope 32-on-64 traps are treated like 64-on-64 traps.
> - */
> -
> -isa_dispatch_t dispatch[] = {
> -    {B_FALSE, EM_SPARCV9, (dispatch_fun_t *) Pget_bkpt_ip_sparc64},
> -    {B_TRUE, EM_SPARCV9, (dispatch_fun_t *) Pget_bkpt_ip_sparc64},
> -    {B_FALSE, EM_SPARC32PLUS, (dispatch_fun_t *) Pget_bkpt_ip_sparc64},
> -    {B_TRUE, EM_SPARC32PLUS, (dispatch_fun_t *) Pget_bkpt_ip_sparc64},
> -    {B_FALSE, EM_SPARC, (dispatch_fun_t *) Pget_bkpt_ip_sparc64},
> -    {B_TRUE, EM_SPARC, (dispatch_fun_t *) Pget_bkpt_ip_sparc64}, /* ??? */
> -    {0, 0, NULL}};
> -
> -#endif
> -
> -#ifdef WANT_RESET_BKPT_IP
> -
> -extern	long Preset_bkpt_ip_sparc(struct ps_prochandle *P, uintptr_t addr);
> -
> -isa_dispatch_t dispatch[] = {
> -    {B_FALSE, EM_SPARCV9, (dispatch_fun_t *) Preset_bkpt_ip_sparc},
> -    {B_TRUE, EM_SPARCV9, (dispatch_fun_t *) Preset_bkpt_ip_sparc},
> -    {B_FALSE, EM_SPARC32PLUS, (dispatch_fun_t *) Preset_bkpt_ip_sparc},
> -    {B_TRUE, EM_SPARC32PLUS, (dispatch_fun_t *) Preset_bkpt_ip_sparc},
> -    {B_FALSE, EM_SPARC, (dispatch_fun_t *) Preset_bkpt_ip_sparc},
> -    {B_TRUE, EM_SPARC, (dispatch_fun_t *) Preset_bkpt_ip_sparc}, /* ??? */
> -    {0, 0, NULL}};
> -
> -#endif
> -
> -#ifdef WANT_GET_NEXT_IP
> -
> -extern	long Pget_next_ip_sparc64(struct ps_prochandle *P, uintptr_t addr);
> -
> -isa_dispatch_t dispatch[] = {
> -    {B_FALSE, EM_SPARCV9, (dispatch_fun_t *) Pget_next_ip_sparc64},
> -    {B_TRUE, EM_SPARCV9, (dispatch_fun_t *) Pget_next_ip_sparc64},
> -    {B_FALSE, EM_SPARC32PLUS, (dispatch_fun_t *) Pget_next_ip_sparc64},
> -    {B_TRUE, EM_SPARC32PLUS, (dispatch_fun_t *) Pget_next_ip_sparc64},
> -    {B_FALSE, EM_SPARC, (dispatch_fun_t *) Pget_next_ip_sparc64},
> -    {B_TRUE, EM_SPARC, (dispatch_fun_t *) Pget_next_ip_sparc64}, /* ??? */
> -    {0, 0, NULL}};
> -
> -#endif
> diff --git a/test/stress/fbtsafety/tst.vahole.d b/test/stress/fbtsafety/tst.vahole.d
> deleted file mode 100755
> index 732ae3ca..00000000
> --- a/test/stress/fbtsafety/tst.vahole.d
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -#!dtrace -Cs
> -
> -/*
> - * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2026, Oracle and/or its affiliates. All rights reserved.
> - * Licensed under the Universal Permissive License v 1.0 as shown at
> - * http://oss.oracle.com/licenses/upl.
> - */
> -
> -/* @@skip: nonportable */
> -
> -/*
> - * We set our buffer size absurdly low to prevent a flood of errors that we
> - * don't care about.
> - */
> -#pragma D option bufsize=16
> -#pragma D option bufpolicy=ring
> -
> -fbt:::
> -{
> -	n++;
> -#ifdef __sparc
> -	trace(*(int *)0x8000000000000000 ^ rand());
> -#else
> -	trace(*(int *)(`kernelbase - 1));
> -#endif
> -}
> -
> -dtrace:::ERROR
> -{
> -	err++;
> -}
> -
> -tick-1sec
> -/sec++ == 10/
> -{
> -	exit(2);
> -}
> -
> -END
> -/n == 0 || err == 0/
> -{
> -	exit(1);
> -}
> -
> -END
> -/n != 0 && err != 0/
> -{
> -	exit(0);
> -}
> diff --git a/test/unittest/aggs/tst.neglquant.d b/test/unittest/aggs/tst.neglquant.d
> index c09d7aab..5e6d1dc0 100644
> --- a/test/unittest/aggs/tst.neglquant.d
> +++ b/test/unittest/aggs/tst.neglquant.d
> @@ -90,11 +90,11 @@ BEGIN
>   	 * We want to test the ability to sort very large quantizations
>   	 * that differ by a small amount.  Ideally, they would differ only
>   	 * by 1 -- but that is smaller than the precision of long doubles of
> -	 * this magnitude on x86.  To assure that the same test works on x86
> -	 * just as it does on SPARC, we pick a value that is just larger than
> -	 * the precision at this magnitude.  It should go without saying that
> -	 * this robustness on new ISAs very much depends on the precision
> -	 * of the long double representation.
> +	 * this magnitude on x86_64.  To assure that the same test works for
> +	 * the architectures DTrace is developed for, we pick a value that is
> +	 * just larger than the precision at this magnitude.  It should go
> +	 * without saying that this robustness on new ISAs very much depends on
> +	 * the precision of the long double representation.
>   	 */
>   	this->val = (((long long) 1) << 63) - 7;
>   
> diff --git a/test/unittest/arrays/tst.uregsarray.sparc64.d b/test/unittest/arrays/tst.uregsarray.sparc64.d
> deleted file mode 100644
> index 2179a0db..00000000
> --- a/test/unittest/arrays/tst.uregsarray.sparc64.d
> +++ /dev/null
> @@ -1,69 +0,0 @@
> -/*
> - * Oracle Linux DTrace.
> - * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
> - * Licensed under the Universal Permissive License v 1.0 as shown at
> - * http://oss.oracle.com/licenses/upl.
> - */
> -/* @@xfail: dtv2 */
> -
> -/*
> - * ASSERTION:
> - *	Positive test to make sure that we can invoke sparc
> - *	ureg[] aliases.
> - *
> - * SECTION: User Process Tracing/uregs Array
> - *
> - * NOTES: This test does no verification - the value of the output
> - *	is not deterministic.
> - */
> -
> -#pragma D option quiet
> -
> -BEGIN
> -{
> -	printf("R_G0 = 0x%x\n", uregs[R_G0]);
> -	printf("R_G1 = 0x%x\n", uregs[R_G1]);
> -	printf("R_G2 = 0x%x\n", uregs[R_G2]);
> -	printf("R_G3 = 0x%x\n", uregs[R_G3]);
> -	printf("R_G4 = 0x%x\n", uregs[R_G4]);
> -	printf("R_G5 = 0x%x\n", uregs[R_G5]);
> -	printf("R_G6 = 0x%x\n", uregs[R_G6]);
> -	printf("R_G7 = 0x%x\n", uregs[R_G7]);
> -	printf("R_O0 = 0x%x\n", uregs[R_O0]);
> -	printf("R_O1 = 0x%x\n", uregs[R_O1]);
> -	printf("R_O2 = 0x%x\n", uregs[R_O2]);
> -	printf("R_O3 = 0x%x\n", uregs[R_O3]);
> -	printf("R_O4 = 0x%x\n", uregs[R_O4]);
> -	printf("R_O5 = 0x%x\n", uregs[R_O5]);
> -	printf("R_O6 = 0x%x\n", uregs[R_O6]);
> -	printf("R_O7 = 0x%x\n", uregs[R_O7]);
> -	printf("R_L0 = 0x%x\n", uregs[R_L0]);
> -	printf("R_L1 = 0x%x\n", uregs[R_L1]);
> -	printf("R_L2 = 0x%x\n", uregs[R_L2]);
> -	printf("R_L3 = 0x%x\n", uregs[R_L3]);
> -	printf("R_L4 = 0x%x\n", uregs[R_L4]);
> -	printf("R_L5 = 0x%x\n", uregs[R_L5]);
> -	printf("R_L6 = 0x%x\n", uregs[R_L6]);
> -	printf("R_L7 = 0x%x\n", uregs[R_L7]);
> -	printf("R_I0 = 0x%x\n", uregs[R_I0]);
> -	printf("R_I1 = 0x%x\n", uregs[R_I1]);
> -	printf("R_I2 = 0x%x\n", uregs[R_I2]);
> -	printf("R_I3 = 0x%x\n", uregs[R_I3]);
> -	printf("R_I4 = 0x%x\n", uregs[R_I4]);
> -	printf("R_I5 = 0x%x\n", uregs[R_I5]);
> -	printf("R_I6 = 0x%x\n", uregs[R_I6]);
> -	printf("R_I7 = 0x%x\n", uregs[R_I7]);
> -	printf("R_CCR = 0x%x\n", uregs[R_CCR]);
> -	printf("R_PC = 0x%x\n", uregs[R_PC]);
> -	printf("R_NPC = 0x%x\n", uregs[R_NPC]);
> -	printf("R_Y = 0x%x\n", uregs[R_Y]);
> -	printf("R_ASI = 0x%x\n", uregs[R_ASI]);
> -	printf("R_FPRS = 0x%x\n", uregs[R_FPRS]);
> -	exit(0);
> -}
> -
> -ERROR
> -{
> -	printf("uregs access failed.\n");
> -	exit(1);
> -}
> diff --git a/test/unittest/arrays/tst.uregsarray.sparc64.x b/test/unittest/arrays/tst.uregsarray.sparc64.x
> deleted file mode 100755
> index 2c34e04d..00000000
> --- a/test/unittest/arrays/tst.uregsarray.sparc64.x
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -#!/bin/sh
> -
> -[ `uname -m` = "sparc64" ] && exit 0
> -exit 2
> diff --git a/test/unittest/pid/test.sparc64.options b/test/unittest/pid/test.sparc64.options
> deleted file mode 100644
> index 9e81427e..00000000
> --- a/test/unittest/pid/test.sparc64.options
> +++ /dev/null
> @@ -1 +0,0 @@
> -@@skip: pid provider not yet implemented (sparc64)
> diff --git a/test/unittest/usdt/tst.enabled2.sh b/test/unittest/usdt/tst.enabled2.sh
> index b174ef4c..c33bca07 100755
> --- a/test/unittest/usdt/tst.enabled2.sh
> +++ b/test/unittest/usdt/tst.enabled2.sh
> @@ -5,7 +5,7 @@
>   # Licensed under the Universal Permissive License v 1.0 as shown at
>   # http://oss.oracle.com/licenses/upl.
>   #
> -# This test is primarily intended to verify a fix for SPARC, but there's no
> +# This test was primarily developed to verify a fix for SPARC, but there's no
>   # harm in running it on other platforms. Here, we verify that is-enabled
>   # probes don't interfere with return values from previously invoked functions.
>   
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list