[DTrace-devel] [PATCH 2/4] Eliminate DT_VERS_LATEST

eugene.loh at oracle.com eugene.loh at oracle.com
Sat Feb 8 19:06:20 UTC 2025


From: Eugene Loh <eugene.loh at oracle.com>

Updating the DTrace version number requires too many distinct
changes.  Eliminate DT_VERS_LATEST, since it can be determined
on the fly.

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 libdtrace/dt_open.c    |  3 ++-
 libdtrace/dt_version.h | 14 +++++---------
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/libdtrace/dt_open.c b/libdtrace/dt_open.c
index a02058871..b4d160359 100644
--- a/libdtrace/dt_open.c
+++ b/libdtrace/dt_open.c
@@ -721,7 +721,8 @@ dt_vopen(int version, int flags, int *errp,
 	dtp->dt_proc_fd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
 	if (dt_aggregate_init(dtp) == -1)
 		return set_open_errno(dtp, errp, dtrace_errno(dtp));
-	dtp->dt_vmax = DT_VERS_LATEST;
+	for (i = 0; _dtrace_versions[i] != 0; i++)
+		dtp->dt_vmax = _dtrace_versions[i];
 	dtp->dt_cpp_path = strdup(_dtrace_defcpp);
 	dtp->dt_cpp_argv = malloc(sizeof(char *));
 	dtp->dt_cpp_argc = 1;
diff --git a/libdtrace/dt_version.h b/libdtrace/dt_version.h
index 3fd1b3d1e..bef3243e9 100644
--- a/libdtrace/dt_version.h
+++ b/libdtrace/dt_version.h
@@ -38,18 +38,15 @@ extern "C" {
  *
  * These #defines are used in identifier tables to fill in the version fields
  * associated with each identifier.  The DT_VERS_* macros declare the encoded
- * integer values of all versions used so far.  DT_VERS_LATEST must correspond
- * to the latest version value among all versions exported by the D compiler.
- * DT_VERS_STRING must be an ASCII string that contains DT_VERS_LATEST within
- * it along with any suffixes (e.g. Beta).
+ * integer values of all versions used so far.  DT_VERS_STRING must be an ASCII
+ * string that contains the latest version within it along with any suffixes
+ * (e.g. Beta).  You must update DT_VERS_STRING when adding a new version,
+ * and then add the new version to the _dtrace_versions[] array declared in
+ * dt_open.c.
  *
  * Refer to the Solaris Dynamic Tracing Guide Versioning chapter for an
  * explanation of these DTrace features and their values.
  *
- * You must update DT_VERS_LATEST and DT_VERS_STRING when adding a new version,
- * and then add the new version to the _dtrace_versions[] array declared in
- * dt_open.c..
- *
  * NOTE: Although the DTrace versioning scheme supports the labeling and
  *       introduction of incompatible changes (e.g. dropping an interface in a
  *       major release), the libdtrace code does not currently support this.
@@ -85,7 +82,6 @@ extern "C" {
 #define	DT_VERS_2_0	DT_VERSION_NUMBER(2, 0, 0)
 #define	DT_VERS_2_0_1	DT_VERSION_NUMBER(2, 0, 1)
 
-#define	DT_VERS_LATEST	DT_VERS_2_0_1
 #define	DT_VERS_STRING	"Oracle D 2.0"
 
 #ifdef  __cplusplus
-- 
2.43.5




More information about the DTrace-devel mailing list