Some of the tests are using x86_64 ABI-specific syscall entry points (such as __x64_sys_nanosleep and __x64_sys_getpgid). Update them to use architecture-dependent syscall entry names. Also update fexit_sleep test to not use BPF_PROG() so that it is clear that the syscall parameters aren't being accessed in the bpf prog. Note that none of the bpf progs in these tests are actually accessing any of the syscall parameters. The only exception is perfbuf_bench, which passes on the bpf prog context into bpf_perf_event_output() as a pointer to pt_regs, but that looks to be mostly ignored. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/e35f7051f03e269b623a68b139d8ed131325f7b7.1643973917.git.naveen.n.rao@linux.vnet.ibm.com
34 lines
932 B
C
34 lines
932 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/* Copyright (c) 2021 Facebook */
|
|
|
|
#include "vmlinux.h"
|
|
#include <bpf/bpf_helpers.h>
|
|
#include <bpf/bpf_tracing.h>
|
|
#include "bpf_misc.h"
|
|
|
|
char _license[] SEC("license") = "GPL";
|
|
|
|
int null_data_vprintk_ret = 0;
|
|
int trace_vprintk_ret = 0;
|
|
int trace_vprintk_ran = 0;
|
|
|
|
SEC("fentry/" SYS_PREFIX "sys_nanosleep")
|
|
int sys_enter(void *ctx)
|
|
{
|
|
static const char one[] = "1";
|
|
static const char three[] = "3";
|
|
static const char five[] = "5";
|
|
static const char seven[] = "7";
|
|
static const char nine[] = "9";
|
|
static const char f[] = "%pS\n";
|
|
|
|
/* runner doesn't search for \t, just ensure it compiles */
|
|
bpf_printk("\t");
|
|
|
|
trace_vprintk_ret = __bpf_vprintk("%s,%d,%s,%d,%s,%d,%s,%d,%s,%d %d\n",
|
|
one, 2, three, 4, five, 6, seven, 8, nine, 10, ++trace_vprintk_ran);
|
|
|
|
/* non-NULL fmt w/ NULL data should result in error */
|
|
null_data_vprintk_ret = bpf_trace_vprintk(f, sizeof(f), NULL, 0);
|
|
return 0;
|
|
}
|