forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
995 B
51 lines
995 B
// SPDX-License-Identifier: GPL-2.0-only |
|
#include <limits.h> |
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <unistd.h> |
|
#include <linux/compiler.h> |
|
|
|
#include "debug.h" |
|
#include "tests.h" |
|
|
|
#ifdef HAVE_JITDUMP |
|
#include <libelf.h> |
|
#include "../util/genelf.h" |
|
#endif |
|
|
|
#define TEMPL "/tmp/perf-test-XXXXXX" |
|
|
|
int test__jit_write_elf(struct test *test __maybe_unused, |
|
int subtest __maybe_unused) |
|
{ |
|
#ifdef HAVE_JITDUMP |
|
static unsigned char x86_code[] = { |
|
0xBB, 0x2A, 0x00, 0x00, 0x00, /* movl $42, %ebx */ |
|
0xB8, 0x01, 0x00, 0x00, 0x00, /* movl $1, %eax */ |
|
0xCD, 0x80 /* int $0x80 */ |
|
}; |
|
char path[PATH_MAX]; |
|
int fd, ret; |
|
|
|
strcpy(path, TEMPL); |
|
|
|
fd = mkstemp(path); |
|
if (fd < 0) { |
|
perror("mkstemp failed"); |
|
return TEST_FAIL; |
|
} |
|
|
|
pr_info("Writing jit code to: %s\n", path); |
|
|
|
ret = jit_write_elf(fd, 0, "main", x86_code, sizeof(x86_code), |
|
NULL, 0, NULL, 0, 0); |
|
close(fd); |
|
|
|
unlink(path); |
|
|
|
return ret ? TEST_FAIL : 0; |
|
#else |
|
return TEST_SKIP; |
|
#endif |
|
}
|
|
|