[DTrace-devel] [PATCH 1/2] Fix disasm for endian operations
Kris Van Hees
kris.van.hees at oracle.com
Mon Sep 11 19:08:37 UTC 2023
On Mon, Aug 28, 2023 at 03:07:59PM -0400, eugene.loh at oracle.com via DTrace-devel wrote:
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> libdtrace/dt_dis.c | 4 ++--
> test/unittest/disasm/tst.ann-endian.r | 3 +++
> test/unittest/disasm/tst.ann-endian.sh | 26 ++++++++++++++++++++++++++
> 3 files changed, 31 insertions(+), 2 deletions(-)
> create mode 100644 test/unittest/disasm/tst.ann-endian.r
> create mode 100755 test/unittest/disasm/tst.ann-endian.sh
>
> diff --git a/libdtrace/dt_dis.c b/libdtrace/dt_dis.c
> index e0f2039f..d3785d4e 100644
> --- a/libdtrace/dt_dis.c
> +++ b/libdtrace/dt_dis.c
> @@ -630,9 +630,9 @@ static const struct opent {
> INSN3(ALU, DIV, X) = { "div", dt_dis_op2 },
> INSN3(ALU, MOD, X) = { "mod", dt_dis_op2 },
> INSN2(ALU, NEG) = { "neg", dt_dis_op1 },
> - INSN3(ALU, END, TO_BE) = { "tobe", dt_dis_op2 },
> - INSN3(ALU, END, TO_LE) = { "tole", dt_dis_op2 },
> /* 32-bit ALU ops, op(dst, imm) */
> + INSN3(ALU, END, TO_BE) = { "tobe", dt_dis_op2imm },
> + INSN3(ALU, END, TO_LE) = { "tole", dt_dis_op2imm },
> INSN3(ALU, ADD, K) = { "add", dt_dis_op2imm },
> INSN3(ALU, SUB, K) = { "sub", dt_dis_op2imm },
> INSN3(ALU, AND, K) = { "and", dt_dis_op2imm },
> diff --git a/test/unittest/disasm/tst.ann-endian.r b/test/unittest/disasm/tst.ann-endian.r
> new file mode 100644
> index 00000000..8a0ef273
> --- /dev/null
> +++ b/test/unittest/disasm/tst.ann-endian.r
> @@ -0,0 +1,3 @@
> +dc X 0 0000 00000010 tobe %rX, 16
> +dc X 0 0000 00000020 tobe %rX, 32
> +dc X 0 0000 00000040 tobe %rX, 64
> diff --git a/test/unittest/disasm/tst.ann-endian.sh b/test/unittest/disasm/tst.ann-endian.sh
> new file mode 100755
> index 00000000..df3ac9c1
> --- /dev/null
> +++ b/test/unittest/disasm/tst.ann-endian.sh
> @@ -0,0 +1,26 @@
> +#!/bin/bash
> +#
> +# Oracle Linux DTrace.
> +# Copyright (c) 2023, 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.
> +#
> +
> +dtrace=$1
> +
> +$dtrace $dt_flags -Sen '
> +sdt:task::task_rename
> +{
> + htons(1234);
> + htonl(1234);
> + htonll(1234);
> +}
> +' 2>&1 | \
> + awk '/ tobe / {
> + sub(/^[^:]+: /, "");
> + sub(/^dc [0-9] /, "dc X ");
> + sub(/%r[0-9],/, "%rX,");
> + print;
> + }'
> +
> +exit $?
> --
> 2.18.4
>
>
More information about the DTrace-devel
mailing list