[DTrace-devel] [PATCH 02/14] Replace not-NULL test with more general runtime test
eugene.loh at oracle.com
eugene.loh at oracle.com
Tue May 2 03:47:10 UTC 2023
From: Eugene Loh <eugene.loh at oracle.com>
When we dereference a pointer, it should generally be safe to
dereference D (including alloca) pointers, even if a more robust
mechanism is needed to guard against dereferencing unsafe pointers
in the more general case. We do, however, check whether a pointer
is NULL.
There are times, however, when even a D pointer cannot safely be
dereferenced. This will especially be true once NULL string pointers
will be supported.
So drop the NULL-pointer check and implement dereferencing with a
more general scalar load.
Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
libdtrace/dt_cg.c | 6 +-----
test/unittest/pointers/tst.basic2.d | 3 +--
2 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index 483603ef..c1fd46c0 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -5884,7 +5884,6 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
uint_t op;
ssize_t size;
- dt_cg_check_notnull(dlp, drp, dnp->dn_reg);
op = dt_cg_ldsize(dnp, ctfp, dnp->dn_type, &size);
/*
@@ -5899,10 +5898,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
dnp->dn_reg);
}
- if (dnp->dn_child->dn_flags & (DT_NF_ALLOCA | DT_NF_DPTR))
- emit(dlp, BPF_LOAD(op, dnp->dn_reg, dnp->dn_reg, 0));
- else
- dt_cg_load_scalar(dnp, op, size, dlp, drp);
+ dt_cg_load_scalar(dnp, op, size, dlp, drp);
}
break;
diff --git a/test/unittest/pointers/tst.basic2.d b/test/unittest/pointers/tst.basic2.d
index 559fd93b..c17f9251 100644
--- a/test/unittest/pointers/tst.basic2.d
+++ b/test/unittest/pointers/tst.basic2.d
@@ -1,10 +1,9 @@
/*
* Oracle Linux DTrace.
- * Copyright (c) 2006, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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.
*/
-/* @@xfail: dtv2 */
/*
* ASSERTION: Pointers can be stored in associative arrays.
--
2.18.4
More information about the DTrace-devel
mailing list