summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-29 10:19:03 +0300
committerPaul Buetow <paul@buetow.org>2026-05-29 10:19:03 +0300
commit59451a70fc82b3b6b5522986b08b4c16cda24301 (patch)
treeff0df154b477ac2e095aadc878f4ac2e0752ce96 /internal
parent49b16417d9f52c8ddb48b158b73ccda31fd26982 (diff)
test(generate): lock in gettimeofday classification
Audit of gettimeofday(2) confirmed the existing implementation is correct: it is classified KindNull (userspace timeval/timezone pointer args, not fd/path) and FamilyTime alongside its clock_gettime/ settimeofday/time siblings; its exit emits a plain ret_event carrying the int 0/-1 return as UNCLASSIFIED. mage generate produces no diff. Add lock-in tests mirroring prior syscall audits: - family_test.go asserts sys_enter/exit_gettimeofday => FamilyTime - retclassify_test.go asserts gettimeofday exit stays UNCLASSIFIED Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'internal')
-rw-r--r--internal/generate/family_test.go5
-rw-r--r--internal/generate/retclassify_test.go3
2 files changed, 8 insertions, 0 deletions
diff --git a/internal/generate/family_test.go b/internal/generate/family_test.go
index 98deab5..e2d80b8 100644
--- a/internal/generate/family_test.go
+++ b/internal/generate/family_test.go
@@ -14,6 +14,11 @@ func TestClassifySyscallFamily(t *testing.T) {
{"sys_enter_execve", FamilyProcess},
{"sys_enter_rt_sigaction", FamilySignals},
{"sys_enter_clock_gettime", FamilyTime},
+ // gettimeofday(2) gets wall-clock time via a userspace timeval/timezone
+ // pointer; it is a time/clock syscall and shares FamilyTime with its
+ // sibling clock_gettime/settimeofday/time syscalls.
+ {"sys_enter_gettimeofday", FamilyTime},
+ {"sys_exit_gettimeofday", FamilyTime},
{"sys_enter_sched_yield", FamilySched},
{"sys_enter_openat", FamilyFS},
{"sys_enter_epoll_wait", FamilyPolling},
diff --git a/internal/generate/retclassify_test.go b/internal/generate/retclassify_test.go
index 04120ee..1bbde51 100644
--- a/internal/generate/retclassify_test.go
+++ b/internal/generate/retclassify_test.go
@@ -44,6 +44,9 @@ func TestClassifyRetUnclassified(t *testing.T) {
"openat", "close", "rename", "unlink", "fcntl", "dup", "dup2", "dup3",
"mkdir", "rmdir", "chmod", "chown", "chdir", "stat", "lseek",
"truncate", "fallocate", "mmap", "fsync", "flock", "recvmmsg", "sendmmsg",
+ // gettimeofday(2) returns int 0/-1 (no byte count); its exit carries a
+ // plain ret_event and must stay UNCLASSIFIED, not a read/write transfer.
+ "gettimeofday",
}
for _, name := range unclassified {
if got := ClassifyRet("sys_exit_" + name); got != Unclassified {