diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-06-17 19:24:08 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-06-17 19:24:08 +0100 |
commit | 2838cc1d36e55bf6d45cf971bf401f895e575849 (patch) | |
tree | a1d433ec248b25a2cda70559fe7553475c2185bc /gdb/testsuite/gdb.base/jithost.c | |
parent | 80c135e55489435f47bbeeb3715b42289c51e30e (diff) | |
download | gdb-2838cc1d36e55bf6d45cf971bf401f895e575849.zip gdb-2838cc1d36e55bf6d45cf971bf401f895e575849.tar.gz gdb-2838cc1d36e55bf6d45cf971bf401f895e575849.tar.bz2 |
Add a test case for the jit-reader interface
Originally intended to be committed on 2013-01-17 in
675921c059dbaddd02ab2eb8a1eaf77b3ac727dd (Test case for the
jit-reader), but by mistake the files were not added. Fortunately
they still work.
gdb/testsuite/ChangeLog:
2016-06-17 Sanjoy Das <sanjoy@playingwithpointers.com>
* gdb.base/jit-reader.exp: New file.
* gdb.base/jithost.c: New file.
* gdb.base/jithost.h: New file.
* gdb.base/jitreader.c : New file.
* gdb.base/jit-protocol.h: New file.
Diffstat (limited to 'gdb/testsuite/gdb.base/jithost.c')
-rw-r--r-- | gdb/testsuite/gdb.base/jithost.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/jithost.c b/gdb/testsuite/gdb.base/jithost.c new file mode 100644 index 0000000..09ab377 --- /dev/null +++ b/gdb/testsuite/gdb.base/jithost.c @@ -0,0 +1,61 @@ +/* Copyright (C) 2009-2016 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include <sys/mman.h> + +#include JIT_READER_H /* Please see jit-reader.exp for an explanation. */ +#include "jithost.h" +#include "jit-protocol.h" + +void __attribute__((noinline)) __jit_debug_register_code () { } + +struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 }; +struct jit_code_entry only_entry; + +typedef void (jit_function_t) (); + +int main (int argc, char **argv) +{ + char *code = mmap (NULL, getpagesize (), PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + jit_function_t *function = (jit_function_t *) code; + + code[0] = 0xcc; /* SIGTRAP */ + code[1] = 0xc3; /* RET */ + + struct jithost_abi *symfile = malloc (sizeof (struct jithost_abi)); + symfile->begin = code; + symfile->end = code + 2; + + only_entry.symfile_addr = symfile; + only_entry.symfile_size = sizeof (struct jithost_abi); + + __jit_debug_descriptor.first_entry = &only_entry; + __jit_debug_descriptor.relevant_entry = &only_entry; + __jit_debug_descriptor.action_flag = JIT_REGISTER; + __jit_debug_descriptor.version = 1; + __jit_debug_register_code (); + + function (); + + return 0; +} |