This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 2/7] Relocatable directory for loading JIT readers.
- From: Sanjoy Das <sanjoy at playingwithpointers dot com>
- To: gdb-patches at sourceware dot org
- Cc: Sanjoy Das <sanjoy at playingwithpointers dot com>
- Date: Sat, 27 Aug 2011 18:42:11 +0530
- Subject: [PATCH 2/7] Relocatable directory for loading JIT readers.
- References: <1314450736-19389-1-git-send-email-sanjoy@playingwithpointers.com>
Add a new directory `jit_reader_dir' to jit.c, which is relocated
during initialization. The value of the directory can be set by using
--with-jit-reader-dir on configure and defaults to `${libdir}/gdb'.
gdb/ChangeLog:
* gdb/config.in: Add new #defines: JIT_READER_DIR and
JIT_READER_DIR_RELOCATABLE.
* gdb/configure.ac: New GDB directory entry for jit-reader-dir.
* gdb/configure: Re-generated by autoconf.
* gdb/jit.c: New static variable: const char *jit_reader_dir.
(_initialize_jit): Relocate jit_reader_dir.
---
gdb/ChangeLog | 9 +++++++++
gdb/config.in | 6 ++++++
gdb/configure | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
gdb/configure.ac | 4 ++++
gdb/jit.c | 4 ++++
5 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ff9b8af..3196016 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2011-08-27 Sanjoy Das <sdas@igalia.com>
+ * gdb/config.in: Add new #defines: JIT_READER_DIR and
+ JIT_READER_DIR_RELOCATABLE.
+ * gdb/configure.ac: New GDB directory entry for jit-reader-dir.
+ * gdb/configure: Re-generated by autoconf.
+ * gdb/jit.c: New static variable: const char *jit_reader_dir.
+ (_initialize_jit): Relocate jit_reader_dir.
+
+2011-08-27 Sanjoy Das <sdas@igalia.com>
+
* gdb/Makefile.in: Add jit-reader.h as a header. Have it
installed in $(includedir)/gdb.
* gdb/configure.ac: Genereate a correct value for TARGET_PTR for
diff --git a/gdb/config.in b/gdb/config.in
index c1d7c68..b1aef82 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -982,3 +982,9 @@
/* Define as `fork' if `vfork' does not work. */
#undef vfork
+
+/* The directory from which JIT readers should be loaded. */
+#undef JIT_READER_DIR
+
+/* Define if JIT_READER_DIR should be relocated when GDB is moved. */
+#undef JIT_READER_DIR_RELOCATABLE
diff --git a/gdb/configure b/gdb/configure
index 31469f2..c6dfbf7 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -666,6 +666,7 @@ python_prog_path
LTLIBEXPAT
LIBEXPAT
HAVE_LIBEXPAT
+JIT_READER_DIR
TARGET_PTR
READLINE_TEXI_INCFLAG
READLINE_CFLAGS
@@ -964,6 +965,7 @@ with_zlib
with_libiconv_prefix
with_iconv_bin
with_system_readline
+with_jit_reader_dir
with_expat
with_gnu_ld
enable_rpath
@@ -1664,6 +1666,8 @@ Optional Packages:
search for libiconv in DIR/include and DIR/lib
--with-iconv-bin=PATH specify where to find the iconv program
--with-system-readline use installed readline library
+ --with-jit-reader-dir=PATH
+ directory to load the JIT readers from
--with-expat include expat support (auto/yes/no)
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-libexpat-prefix[=DIR] search for libexpat in DIR/include and DIR/lib
@@ -9931,6 +9935,53 @@ ac_config_files="$ac_config_files jit-reader.h:jit-reader.in"
+
+# Check whether --with-jit-reader-dir was given.
+if test "${with_jit_reader_dir+set}" = set; then :
+ withval=$with_jit_reader_dir;
+ JIT_READER_DIR=$withval
+else
+ JIT_READER_DIR=${libdir}/gdb
+fi
+
+
+ test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+ ac_define_dir=`eval echo $JIT_READER_DIR`
+ ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define JIT_READER_DIR "$ac_define_dir"
+_ACEOF
+
+
+
+
+ if test "x$exec_prefix" = xNONE || test "x$exec_prefix" = 'x${prefix}'; then
+ if test "x$prefix" = xNONE; then
+ test_prefix=/usr/local
+ else
+ test_prefix=$prefix
+ fi
+ else
+ test_prefix=$exec_prefix
+ fi
+ value=0
+ case ${ac_define_dir} in
+ "${test_prefix}"|"${test_prefix}/"*|\
+ '${exec_prefix}'|'${exec_prefix}/'*)
+ value=1
+ ;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define JIT_READER_DIR_RELOCATABLE $value
+_ACEOF
+
+
+
+
+
# Check whether --with-expat was given.
if test "${with_expat+set}" = set; then :
withval=$with_expat;
diff --git a/gdb/configure.ac b/gdb/configure.ac
index abeb251..ee73e9b 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -595,6 +595,10 @@ fi
AC_SUBST(TARGET_PTR)
AC_CONFIG_FILES([jit-reader.h:jit-reader.in])
+GDB_AC_WITH_DIR([JIT_READER_DIR], [jit-reader-dir],
+ [directory to load the JIT readers from],
+ [${libdir}/gdb])
+
AC_ARG_WITH(expat,
AS_HELP_STRING([--with-expat], [include expat support (auto/yes/no)]),
[], [with_expat=auto])
diff --git a/gdb/jit.c b/gdb/jit.c
index e3bb81a..cab27a9 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -33,6 +33,8 @@
#include "target.h"
#include "gdb_stat.h"
+static const char *jit_reader_dir = NULL;
+
static const struct objfile_data *jit_objfile_data;
static const char *const jit_break_name = "__jit_debug_register_code";
@@ -548,6 +550,8 @@ extern void _initialize_jit (void);
void
_initialize_jit (void)
{
+ jit_reader_dir = relocate_gdb_directory (JIT_READER_DIR,
+ JIT_READER_DIR_RELOCATABLE);
add_setshow_zinteger_cmd ("jit", class_maintenance, &jit_debug,
_("Set JIT debugging."),
_("Show JIT debugging."),
--
1.7.5.4