Linux DTrace development list
 help / color / mirror / Atom feed
* [PATCH] tests: add test for buggy deduplicator
@ 2025-01-09 16:47 Nick Alcock
  2025-01-09 17:09 ` [DTrace-devel] " Kris Van Hees
  2025-03-18 18:17 ` Kris Van Hees
  0 siblings, 2 replies; 5+ messages in thread
From: Nick Alcock @ 2025-01-09 16:47 UTC (permalink / raw)
  To: dtrace, dtrace-devel

Some early prototype deduplicators dedupped types in one dict (more or less)
rather than putting conflicting types and module types into
sub-dictionaries.  Fail if the running kernel is such a kernel.

Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
---
 dtrace.spec                  |  2 +-
 test/smoke/tst.ctf-intact.sh | 58 ++++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 1 deletion(-)
 create mode 100755 test/smoke/tst.ctf-intact.sh

diff --git a/dtrace.spec b/dtrace.spec
index 902ad7d8bb980..cf960f14b55c7 100644
--- a/dtrace.spec
+++ b/dtrace.spec
@@ -151,7 +151,7 @@ Requires:     %{name}-devel = %{version}-%{release} perl gcc java
 Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
 Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
 Requires:     coreutils wireshark %{glibc32}
-Requires:     perf time bc nfs-utils
+Requires:     perf time bc nfs-utils binutils
 Autoreq:      0
 Group:	      Development/System
 
diff --git a/test/smoke/tst.ctf-intact.sh b/test/smoke/tst.ctf-intact.sh
new file mode 100755
index 0000000000000..d737a2b162fcb
--- /dev/null
+++ b/test/smoke/tst.ctf-intact.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# Oracle Linux DTrace.
+# Copyright (c) 2024, 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.
+#
+
+#
+# This script verifies that the CTF, if present, is non-corrupt: in
+# particular, that it has at least one child with 
+#
+
+ctf="/lib/modules/$(uname -r)/kernel/vmlinux.ctfa"
+
+if [[ ! -f "$ctf" ]]; then
+    echo "CTF not found in expected location of $ctf" >&2
+    exit 67
+fi
+
+# If this is not an ELF file, turn it into one so objdump works.
+if ! [[ "$(file "$ctf")" =~ ELF ]]; then
+    objcopy --add-section=.ctf="$ctf" /bin/true $tmpdir/ctf
+    ctf=$tmpdir/ctf
+fi
+
+# Dump the CTF
+objdump --ctf --ctf-parent=shared_ctf "$ctf" 2>/dev/null | \
+    awk '
+BEGIN {
+    intypes=0;
+}
+
+/^  Strings:|^CTF archive member:/ {
+    intypes = 0;
+}
+# Scan for each member, capture its name.
+/^CTF archive member: / {
+    member=gensub (/CTF archive member: (.*):/,"\\1", "g");
+    next;
+}
+# See if any non-shared dicts have any types in.
+/^  Types:/ {
+    if (member != "shared_ctf") {
+        intypes=1;
+    }
+}
+/^    0x/ {
+    if (intypes) {
+        exit (0);
+    }
+}
+END {
+    if (!intypes) {
+        printf ("No non-shared-dict types found: probably buggy deduplicator.\n");
+        exit (1);
+    }
+}'
-- 
2.47.1.279.g84c5f4e78e


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-03-18 19:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-09 16:47 [PATCH] tests: add test for buggy deduplicator Nick Alcock
2025-01-09 17:09 ` [DTrace-devel] " Kris Van Hees
2025-03-18 18:17 ` Kris Van Hees
2025-03-18 18:59   ` Eugene Loh
2025-03-18 19:01     ` Kris Van Hees

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox