diff options
author | Johannes Berg <johannes.berg@intel.com> | 2020-01-02 16:50:09 +0300 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2020-01-02 16:50:58 +0300 |
commit | 7d6aa9ba4f8228c75970fc4fad27194611a548a6 (patch) | |
tree | 4bbd64f6671391d6d93c1a1806ffec005114524e /tools/perf/tests/genelf.c | |
parent | 1ee7826ab68f7e9fa1a01533983acf6a6f62e297 (diff) | |
parent | fe23d63422c83cd7c8154dc7faef6af97be4b948 (diff) | |
download | linux-7d6aa9ba4f8228c75970fc4fad27194611a548a6.tar.xz |
Merge remote-tracking branch 'net-next/master' into mac80211-next
Merging to get the mac80211 updates that have since propagated
into net-next.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'tools/perf/tests/genelf.c')
-rw-r--r-- | tools/perf/tests/genelf.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/perf/tests/genelf.c b/tools/perf/tests/genelf.c new file mode 100644 index 000000000000..f797f9823e89 --- /dev/null +++ b/tools/perf/tests/genelf.c @@ -0,0 +1,51 @@ +// 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 +} |