summaryrefslogtreecommitdiff
path: root/gdb/configure
diff options
context:
space:
mode:
authorJose E. Marchesi <jose.marchesi@oracle.com>2021-05-08 18:11:12 +0200
committerJose E. Marchesi <jose.marchesi@oracle.com>2023-04-29 14:55:08 +0200
commitbdeccf733122b02319516e72dd225c916a216d2c (patch)
treebfa6891dac65050b4ecb628469ad2f29fb16ad29 /gdb/configure
parent2b8c7766ea357ff9b22531d6fdf0c3bd69cc044f (diff)
downloadbinutils-gdb-bdeccf733122b02319516e72dd225c916a216d2c.tar.gz
Integrate GNU poke in GDBusers/jemarch/poke-gdb
This patch integrates GNU poke (http://jemarch.net/poke) in GDB by mean of libpoke. It allows the GDB user to execute Poke code from within the debugger with access to the target memory, types and values. How this stuff works: - GDB links with libpoke.so and uses the interface in libpoke.h. This is also how the GNU poke application (the command-line editor) is implemented. - There are three commands: poke STR poke-add-type EXPR poke-add-types REGEXP poke-dump-types All three commands make sure to start the poke incremental compiler if it isn't running already. - Access to the target's memory is provided by GDB by installing a Foreign IO device in the incremental compiler. This is `iod_if' in poke.c. - Access to the terminal is provided by GDB by providing a pk_term_if implementation to the incremental compiler. This is `poke_term_if' in poke.c. - Access to GDB values is provided by GDB by installing an alien token handler in the incremental compiler. This is `poke_alien_token_handler' in poke.c. gdb/ChangeLog: 2021-05-10 Jose E. Marchesi <jose.marchesi@oracle.com> * configure.ac: Support --enable-poke. * configure: Regenerate. * Makefile.in (POKE_OBS): Define based on @POKE_OBS@. (DEPFILES): Add POKE_OBS. * poke.c: New file. gdb/doc/ChangeLog: 2021-05-10 Jose E. Marchesi <jose.marchesi@oracle.com> * Makefile.in (GDB_DOC_FILES): Add poke.texi. * poke.texi: New file. * gdb.texinfo (Data): Add meny entry for Poke and @include poke.texi.
Diffstat (limited to 'gdb/configure')
-rwxr-xr-xgdb/configure100
1 files changed, 92 insertions, 8 deletions
diff --git a/gdb/configure b/gdb/configure
index 5bb2a0795e5..003197303af 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -757,6 +757,7 @@ ZSTD_LIBS
ZSTD_CFLAGS
zlibinc
zlibdir
+POKE_OBS
MIG
WINDRES
DLLTOOL
@@ -874,6 +875,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -922,6 +924,7 @@ enable_profiling
enable_codesign
with_pkgversion
with_bugurl
+with_poke
with_system_zlib
with_zstd
enable_rpath
@@ -1033,6 +1036,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1285,6 +1289,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1422,7 +1435,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1575,6 +1588,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1680,6 +1694,7 @@ Optional Packages:
library
--with-pkgversion=PKG Use PKG in the version string in place of "GDB"
--with-bugurl=URL Direct users to URL to report a bug
+ --with-poke Build GDB with poke support (default is NO)
--with-system-zlib use installed libz
--with-zstd support zstd compressed debug sections
(default=auto)
@@ -4944,7 +4959,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -4990,7 +5005,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5014,7 +5029,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5059,7 +5074,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5083,7 +5098,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -11448,7 +11463,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11451 "configure"
+#line 11466 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11554,7 +11569,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11557 "configure"
+#line 11572 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -19585,6 +19600,73 @@ if test "$ac_res" != no; then :
fi
+# Integration with GNU poke is done through the libpoke library.
+
+# Check whether --with-poke was given.
+if test "${with_poke+set}" = set; then :
+ withval=$with_poke; with_poke=$withval
+else
+ with_poke=no
+fi
+
+if test "x$with_poke" = "xyes"; then
+ # Note that we need a libpoke with support for registering foreign
+ # IO devices, hence the symbol pk_register_iod.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pk_register_iod in -lpoke" >&5
+$as_echo_n "checking for pk_register_iod in -lpoke... " >&6; }
+if ${ac_cv_lib_poke_pk_register_iod+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpoke $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pk_register_iod ();
+int
+main ()
+{
+return pk_register_iod ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_poke_pk_register_iod=yes
+else
+ ac_cv_lib_poke_pk_register_iod=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_poke_pk_register_iod" >&5
+$as_echo "$ac_cv_lib_poke_pk_register_iod" >&6; }
+if test "x$ac_cv_lib_poke_pk_register_iod" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPOKE 1
+_ACEOF
+
+ LIBS="-lpoke $LIBS"
+
+fi
+
+ POKE_OBS="poke.o"
+
+$as_echo "#define HAVE_POKE 1" >>confdefs.h
+
+ CONFIG_INSTALL="$CONFIG_INSTALL install-poke"
+else
+ POKE_OBS=
+fi
+
+
# Link in zlib/zstd if we can. This allows us to read compressed debug
# sections.
@@ -24063,6 +24145,8 @@ main ()
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
+ free (data);
+ free (data3);
return 0;
}
_ACEOF