summaryrefslogtreecommitdiff
path: root/internal/generate
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-22 22:31:35 +0200
committerPaul Buetow <paul@buetow.org>2026-02-22 22:31:35 +0200
commit4cd2c4e818a1438bf63d1ca05a6cf134f39bc06b (patch)
tree40b4ad1ab60a6f50973a66c4e273c91e0d8d265b /internal/generate
parent8e52ba5a8661c717f45e00608ad64f0adc6de3e1 (diff)
Add copy_file_range support and tracepoint attach tests
Diffstat (limited to 'internal/generate')
-rw-r--r--internal/generate/classify.go4
-rw-r--r--internal/generate/classify_test.go2
-rw-r--r--internal/generate/testdata.go33
3 files changed, 39 insertions, 0 deletions
diff --git a/internal/generate/classify.go b/internal/generate/classify.go
index b79d49c..ae03758 100644
--- a/internal/generate/classify.go
+++ b/internal/generate/classify.go
@@ -142,6 +142,10 @@ func classifyNameAndField(name, fieldType, fieldName string) (ClassificationResu
if fieldType == "const char *" && fieldName == "name" {
return ClassificationResult{Kind: KindPathname, PathnameField: "name"}, true
}
+ case "sys_enter_copy_file_range":
+ if isFdType(fieldType) && fieldName == "fd_in" {
+ return ClassificationResult{Kind: KindFd}, true
+ }
}
if strings.HasPrefix(name, "sys_enter") &&
diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go
index 285c8e2..8d6f9c2 100644
--- a/internal/generate/classify_test.go
+++ b/internal/generate/classify_test.go
@@ -272,6 +272,7 @@ func TestShouldNotIgnore(t *testing.T) {
noIgnore := []string{
"sys_enter_read", "sys_enter_write", "sys_enter_openat",
"sys_enter_close", "sys_enter_rename", "sys_enter_unlink",
+ "sys_enter_copy_file_range",
"sys_enter_msync",
"sys_exit_read", "sys_exit_openat",
}
@@ -299,6 +300,7 @@ func TestClassifySyscallPairAccepted(t *testing.T) {
{"fcntl", FormatFcntl, FormatExitFcntl, KindFcntl},
{"sync", FormatSync, FormatExitSync, KindNull},
{"msync", FormatMsync, FormatExitMsync, KindNull},
+ {"copy_file_range", FormatCopyFileRange, FormatExitCopyFileRange, KindFd},
{"syslog", FormatSyslog, FormatExitSyslog, KindNull},
{"open_by_handle_at", FormatOpenByHandleAt, FormatExitOpenByHandleAt, KindOpenByHandleAt},
{"name_to_handle_at", FormatNameToHandleAt, FormatExitNameToHandleAt, KindPathname},
diff --git a/internal/generate/testdata.go b/internal/generate/testdata.go
index c03c0d7..76228a3 100644
--- a/internal/generate/testdata.go
+++ b/internal/generate/testdata.go
@@ -182,6 +182,39 @@ format:
print fmt: "0x%lx", REC->ret
`
+const FormatCopyFileRange = `name: sys_enter_copy_file_range
+ID: 736
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:int __syscall_nr; offset:8; size:4; signed:1;
+ field:int fd_in; offset:16; size:8; signed:0;
+ field:loff_t * off_in; offset:24; size:8; signed:0;
+ field:int fd_out; offset:32; size:8; signed:0;
+ field:loff_t * off_out; offset:40; size:8; signed:0;
+ field:size_t len; offset:48; size:8; signed:0;
+ field:unsigned int flags; offset:56; size:8; signed:0;
+
+print fmt: "fd_in: 0x%08lx, off_in: 0x%08lx, fd_out: 0x%08lx, off_out: 0x%08lx, len: 0x%08lx, flags: 0x%08lx", ((unsigned long)(REC->fd_in)), ((unsigned long)(REC->off_in)), ((unsigned long)(REC->fd_out)), ((unsigned long)(REC->off_out)), ((unsigned long)(REC->len)), ((unsigned long)(REC->flags))
+`
+
+const FormatExitCopyFileRange = `name: sys_exit_copy_file_range
+ID: 735
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:int __syscall_nr; offset:8; size:4; signed:1;
+ field:long ret; offset:16; size:8; signed:1;
+
+print fmt: "0x%lx", REC->ret
+`
+
const FormatRename = `name: sys_enter_rename
ID: 870
format: