mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
selftests: bpf: modify urandom_read and link it non-statically
After some experiences I found that urandom_read does not need to be linked statically. When the 'read' syscall call is moved to separate non-inlined function then bpf_get_stackid() is able to find the executable in stack trace and extract its build_id from it. Signed-off-by: Ivan Vecera <ivecera@redhat.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
ab99e7a8f7
commit
f682752627
@ -70,7 +70,7 @@ TEST_CUSTOM_PROGS = $(OUTPUT)/urandom_read
|
|||||||
all: $(TEST_CUSTOM_PROGS)
|
all: $(TEST_CUSTOM_PROGS)
|
||||||
|
|
||||||
$(OUTPUT)/urandom_read: $(OUTPUT)/%: %.c
|
$(OUTPUT)/urandom_read: $(OUTPUT)/%: %.c
|
||||||
$(CC) -o $@ -static $< -Wl,--build-id
|
$(CC) -o $@ $< -Wl,--build-id
|
||||||
|
|
||||||
BPFOBJ := $(OUTPUT)/libbpf.a
|
BPFOBJ := $(OUTPUT)/libbpf.a
|
||||||
|
|
||||||
|
@ -7,11 +7,19 @@
|
|||||||
|
|
||||||
#define BUF_SIZE 256
|
#define BUF_SIZE 256
|
||||||
|
|
||||||
|
static __attribute__((noinline))
|
||||||
|
void urandom_read(int fd, int count)
|
||||||
|
{
|
||||||
|
char buf[BUF_SIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < count; ++i)
|
||||||
|
read(fd, buf, BUF_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int fd = open("/dev/urandom", O_RDONLY);
|
int fd = open("/dev/urandom", O_RDONLY);
|
||||||
int i;
|
|
||||||
char buf[BUF_SIZE];
|
|
||||||
int count = 4;
|
int count = 4;
|
||||||
|
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
@ -20,8 +28,7 @@ int main(int argc, char *argv[])
|
|||||||
if (argc == 2)
|
if (argc == 2)
|
||||||
count = atoi(argv[1]);
|
count = atoi(argv[1]);
|
||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
urandom_read(fd, count);
|
||||||
read(fd, buf, BUF_SIZE);
|
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user