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)
|
||||
|
||||
$(OUTPUT)/urandom_read: $(OUTPUT)/%: %.c
|
||||
$(CC) -o $@ -static $< -Wl,--build-id
|
||||
$(CC) -o $@ $< -Wl,--build-id
|
||||
|
||||
BPFOBJ := $(OUTPUT)/libbpf.a
|
||||
|
||||
|
@ -7,11 +7,19 @@
|
||||
|
||||
#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 fd = open("/dev/urandom", O_RDONLY);
|
||||
int i;
|
||||
char buf[BUF_SIZE];
|
||||
int count = 4;
|
||||
|
||||
if (fd < 0)
|
||||
@ -20,8 +28,7 @@ int main(int argc, char *argv[])
|
||||
if (argc == 2)
|
||||
count = atoi(argv[1]);
|
||||
|
||||
for (i = 0; i < count; ++i)
|
||||
read(fd, buf, BUF_SIZE);
|
||||
urandom_read(fd, count);
|
||||
|
||||
close(fd);
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user