- Formal update to the final FSF GDB release.

This commit is contained in:
Jan Kratochvil 2010-09-03 10:10:00 +02:00
parent 562d933af5
commit fd71495700
6 changed files with 101 additions and 480 deletions

3
.gitignore vendored
View File

@ -1,2 +1 @@
gdb-7.1.90.20100806.tar.bz2
/gdb-7.2.tar.bz2
gdb-7.2.tar.bz2

View File

@ -4,10 +4,11 @@
to install and uninstall.
* gstack.sh, gstack.1: New files.
diff -up -ruNp gdb-7.0.1-empty/gdb/Makefile.in gdb-7.0.1/gdb/Makefile.in
--- gdb-7.0.1-empty/gdb/Makefile.in 2010-04-07 20:36:04.000000000 +0200
+++ gdb-7.0.1/gdb/Makefile.in 2010-04-07 20:36:42.000000000 +0200
@@ -989,7 +989,7 @@ install: all install-only
Index: gdb-7.2/gdb/Makefile.in
===================================================================
--- gdb-7.2.orig/gdb/Makefile.in 2010-09-03 09:37:55.000000000 +0200
+++ gdb-7.2/gdb/Makefile.in 2010-09-03 09:38:45.000000000 +0200
@@ -1010,7 +1010,7 @@ install: all install-only
# The "install-only" target also installs the syscalls' XML files in
# the system.
@ -16,10 +17,11 @@ diff -up -ruNp gdb-7.0.1-empty/gdb/Makefile.in gdb-7.0.1/gdb/Makefile.in
transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e "$$t"` ; \
if test "x$$transformed_name" = x; then \
@@ -1021,9 +1021,26 @@ install-tui:
$(DESTDIR)$(man1dir) ; \
$(INSTALL_DATA) $(srcdir)/gdb.1 \
$(DESTDIR)$(man1dir)/$$transformed_name.1
@@ -1046,7 +1046,25 @@ install-tui:
install-python:
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
-uninstall: force $(CONFIG_UNINSTALL)
+GSTACK=gstack
+.PHONY: install-gstack
+install-gstack:
@ -37,14 +39,12 @@ diff -up -ruNp gdb-7.0.1-empty/gdb/Makefile.in gdb-7.0.1/gdb/Makefile.in
+ $(DESTDIR)$(man1dir) ; \
+ : $(INSTALL_DATA) $(srcdir)/gstack.1 \
+ $(DESTDIR)$(man1dir)/$$transformed_name.1
-uninstall: force $(CONFIG_UNINSTALL)
+
+uninstall: force uninstall-gstack $(CONFIG_UNINSTALL)
transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e $$t` ; \
if test "x$$transformed_name" = x; then \
@@ -1045,6 +1062,17 @@ uninstall-tui:
@@ -1068,6 +1086,17 @@ uninstall-tui:
fi ; \
rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \
$(DESTDIR)$(man1dir)/$$transformed_name.1
@ -62,9 +62,10 @@ diff -up -ruNp gdb-7.0.1-empty/gdb/Makefile.in gdb-7.0.1/gdb/Makefile.in
# The C++ name parser can be built standalone for testing.
test-cp-name-parser.o: cp-name-parser.c
diff -up -ruNp gdb-7.0.1-empty/gdb/gstack.sh gdb-7.0.1/gdb/gstack.sh
--- gdb-7.0.1-empty/gdb/gstack.sh 1970-01-01 01:00:00.000000000 +0100
+++ gdb-7.0.1/gdb/gstack.sh 2010-04-07 20:36:47.000000000 +0200
Index: gdb-7.2/gdb/gstack.sh
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/gstack.sh 2010-09-03 09:38:12.000000000 +0200
@@ -0,0 +1,48 @@
+#!/bin/sh
+
@ -114,8 +115,10 @@ diff -up -ruNp gdb-7.0.1-empty/gdb/gstack.sh gdb-7.0.1/gdb/gstack.sh
+ -e 's/^\((gdb) \)*//' \
+ -e '/^#/p' \
+ -e '/^Thread/p'
--- /dev/null 2010-04-07 06:20:52.289994508 +0200
+++ gdb-7.0.1/gdb/testsuite/gdb.base/gstack.exp 2010-04-07 21:53:57.000000000 +0200
Index: gdb-7.2/gdb/testsuite/gdb.base/gstack.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.base/gstack.exp 2010-09-03 09:38:12.000000000 +0200
@@ -0,0 +1,71 @@
+# Copyright (C) 2010 Free Software Foundation, Inc.
+
@ -188,8 +191,10 @@ diff -up -ruNp gdb-7.0.1-empty/gdb/gstack.sh gdb-7.0.1/gdb/gstack.sh
+gdb_exit
+
+remote_exec host "kill -9 $pid"
--- /dev/null 2010-04-07 06:20:52.289994508 +0200
+++ gdb-7.0.1/gdb/testsuite/gdb.base/gstack.c 2010-04-07 21:46:52.000000000 +0200
Index: gdb-7.2/gdb/testsuite/gdb.base/gstack.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2/gdb/testsuite/gdb.base/gstack.c 2010-09-03 09:38:12.000000000 +0200
@@ -0,0 +1,43 @@
+/* This testcase is part of GDB, the GNU debugger.
+

View File

@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
http://sourceware.org/gdb/wiki/ArcherBranchManagement
GIT snapshot:
commit af507f71e376b19f8ee9d54067924790566440e8
commit 30a7ce8ffc2b54bc4453a127be8dd28a3ea6d299
branch `archer' - the merge of branches:
archer-jankratochvil-vla
@ -15,7 +15,7 @@ archer-tromey-optional-psymtab (cherry-picked from post-7.2 master)
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 6dbb284..6133da3 100644
index f07bc8b..3703dca 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -169,6 +169,12 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
@ -57,7 +57,7 @@ index 6dbb284..6133da3 100644
# Header files that already have srcdir in them, or which are in objdir.
@@ -1299,6 +1305,12 @@ stamp-h: $(srcdir)/config.in config.status
@@ -1301,6 +1307,12 @@ stamp-h: $(srcdir)/config.in config.status
CONFIG_LINKS= \
$(SHELL) config.status
@ -70,7 +70,7 @@ index 6dbb284..6133da3 100644
config.status: $(srcdir)/configure configure.tgt configure.host
$(SHELL) config.status --recheck
@@ -2022,6 +2034,10 @@ py-function.o: $(srcdir)/python/py-function.c
@@ -2024,6 +2036,10 @@ py-function.o: $(srcdir)/python/py-function.c
$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-function.c
$(POSTCOMPILE)
@ -81,7 +81,7 @@ index 6dbb284..6133da3 100644
py-inferior.o: $(srcdir)/python/py-inferior.c
$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-inferior.c
$(POSTCOMPILE)
@@ -2070,6 +2086,36 @@ py-value.o: $(srcdir)/python/py-value.c
@@ -2072,6 +2088,36 @@ py-value.o: $(srcdir)/python/py-value.c
$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-value.c
$(POSTCOMPILE)
@ -289,7 +289,7 @@ index 0348bf4..f01d0ee 100644
/* Return the innermost stack frame executing inside of BLOCK,
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 4affe0a..584c68e 100644
index 6a6864c..5df336d 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -62,6 +62,7 @@
@ -1349,7 +1349,7 @@ index 1fc457d..f4c846a 100644
#undef PYTHON_PATH_RELOCATABLE
diff --git a/gdb/configure b/gdb/configure
index 94eb9b9..e49da08 100755
index 041ffc1..8243abb 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -679,6 +679,8 @@ REPORT_BUGS_TO
@ -1454,17 +1454,16 @@ index 94eb9b9..e49da08 100755
subdirs="$subdirs doc testsuite"
@@ -10881,6 +10955,8 @@ $as_echo "#define HAVE_PYTHON 1" >>confdefs.h
CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
@@ -10919,6 +10993,7 @@ $as_echo "#define HAVE_PYTHON 1" >>confdefs.h
CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)"
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)"
+ CONFIG_INSTALL="$CONFIG_INSTALL install-python"
CONFIG_INSTALL="$CONFIG_INSTALL install-python"
+ CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-python"
ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
# Flags needed to compile Python code (taken from python-config --cflags).
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 9300544..380473a 100644
index b69c3b6..4e89558 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -108,6 +108,51 @@ AS_HELP_STRING([--with-relocated-sources=PATH], [automatically relocate this pat
@ -1519,17 +1518,16 @@ index 9300544..380473a 100644
AC_CONFIG_SUBDIRS(doc testsuite)
# Check whether to support alternative target configurations
@@ -828,6 +873,8 @@ if test "${have_libpython}" != no; then
CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
@@ -833,6 +878,7 @@ if test "${have_libpython}" != no; then
CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)"
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)"
+ CONFIG_INSTALL="$CONFIG_INSTALL install-python"
CONFIG_INSTALL="$CONFIG_INSTALL install-python"
+ CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-python"
ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
# Flags needed to compile Python code (taken from python-config --cflags).
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 1297175..c030b65 100644
index 65d4899..96767b0 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1162,6 +1162,16 @@ for remote debugging.
@ -1549,7 +1547,7 @@ index 1297175..c030b65 100644
@c resolve the situation of these eventually
@item -tui
@cindex @code{--tui}
@@ -14282,6 +14292,7 @@ program. To debug a core dump of a previous run, you must also tell
@@ -14308,6 +14318,7 @@ program. To debug a core dump of a previous run, you must also tell
@menu
* Files:: Commands to specify files
* Separate Debug Files:: Debugging information in separate files
@ -1557,7 +1555,7 @@ index 1297175..c030b65 100644
* Symbol Errors:: Errors reading symbol files
* Data Files:: GDB data files
@end menu
@@ -15171,6 +15182,46 @@ gnu_debuglink_crc32 (unsigned long crc,
@@ -15197,6 +15208,46 @@ gnu_debuglink_crc32 (unsigned long crc,
This computation does not apply to the ``build ID'' method.
@ -1604,7 +1602,7 @@ index 1297175..c030b65 100644
@node Symbol Errors
@section Errors Reading Symbol Files
@@ -20310,8 +20361,6 @@ containing @code{end}. For example:
@@ -20349,8 +20400,6 @@ containing @code{end}. For example:
@smallexample
(@value{GDBP}) python
@ -1613,7 +1611,7 @@ index 1297175..c030b65 100644
>print 23
>end
23
@@ -20324,6 +20373,14 @@ in a Python script. This can be controlled using @code{maint set
@@ -20363,6 +20412,14 @@ in a Python script. This can be controlled using @code{maint set
python print-stack}: if @code{on}, the default, then Python stack
printing is enabled; if @code{off}, then Python stack printing is
disabled.
@ -1628,7 +1626,7 @@ index 1297175..c030b65 100644
@end table
It is also possible to execute a Python script from the @value{GDBN}
@@ -20345,6 +20402,14 @@ and thus is always available.
@@ -20384,6 +20441,14 @@ and thus is always available.
@cindex python api
@cindex programming in python
@ -1643,7 +1641,7 @@ index 1297175..c030b65 100644
@cindex python stdout
@cindex python pagination
At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
@@ -20356,7 +20421,7 @@ situation, a Python @code{KeyboardInterrupt} exception is thrown.
@@ -20395,7 +20460,7 @@ situation, a Python @code{KeyboardInterrupt} exception is thrown.
@menu
* Basic Python:: Basic Python Functions.
* Exception Handling::
@ -1652,7 +1650,7 @@ index 1297175..c030b65 100644
* Types In Python:: Python representation of types.
* Pretty Printing API:: Pretty-printing values.
* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
@@ -20415,6 +20480,12 @@ Return a sequence holding all of @value{GDBN}'s breakpoints.
@@ -20456,6 +20521,12 @@ Return a sequence holding all of @value{GDBN}'s breakpoints.
@xref{Breakpoints In Python}, for more information.
@end defun
@ -1665,7 +1663,7 @@ index 1297175..c030b65 100644
@findex gdb.parameter
@defun parameter parameter
Return the value of a @value{GDBN} parameter. @var{parameter} is a
@@ -20431,6 +20502,7 @@ a Python value of the appropriate type, and returned.
@@ -20472,6 +20543,7 @@ a Python value of the appropriate type, and returned.
@defun history number
Return a value from @value{GDBN}'s value history (@pxref{Value
History}). @var{number} indicates which history element to return.
@ -1673,7 +1671,7 @@ index 1297175..c030b65 100644
If @var{number} is negative, then @value{GDBN} will take its absolute value
and count backward from the last element (i.e., the most recent element) to
find the value to return. If @var{number} is zero, then @value{GDBN} will
@@ -20455,6 +20527,21 @@ compute values, for example, it is the only way to get the value of a
@@ -20496,6 +20568,21 @@ compute values, for example, it is the only way to get the value of a
convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
@end defun
@ -1880,7 +1878,7 @@ index 61b8f00..d94c03c 100644
/* The current depth of dwarf expression recursion, via DW_OP_call*,
DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 2a8e557..be74412 100644
index f59bc40..7ff0ef9 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -48,6 +48,12 @@ static void
@ -2158,7 +2156,7 @@ index 2a8e557..be74412 100644
retval = allocate_value (type);
VALUE_LVAL (retval) = lval_memory;
set_value_lazy (retval, 1);
@@ -2586,11 +2744,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
@@ -2590,11 +2748,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
dlbaton->per_cu);
}
@ -2232,7 +2230,7 @@ index 826bc45..1e7d8dc 100644
#endif /* dwarf2loc.h */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 16381de..e286f4c 100644
index 1e75235..d54e266 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -51,6 +51,9 @@
@ -3565,7 +3563,7 @@ index 16381de..e286f4c 100644
do_cleanups (back_to);
}
@@ -3559,6 +4542,46 @@ free_cu_line_header (void *arg)
@@ -3557,6 +4540,46 @@ free_cu_line_header (void *arg)
}
static void
@ -3612,7 +3610,7 @@ index 16381de..e286f4c 100644
read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->objfile;
@@ -3584,35 +4607,7 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
@@ -3582,35 +4605,7 @@ read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
lowpc += baseaddr;
highpc += baseaddr;
@ -3649,7 +3647,7 @@ index 16381de..e286f4c 100644
attr = dwarf2_attr (die, DW_AT_language, cu);
if (attr)
@@ -5531,6 +6526,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
@@ -5529,6 +6524,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
new_symbol (die, this_type, cu);
}
@ -3679,7 +3677,7 @@ index 16381de..e286f4c 100644
/* Extract all information from a DW_TAG_array_type DIE and put it in
the DIE's type field. For now, this only handles one dimensional
arrays. */
@@ -5544,7 +6562,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -5542,7 +6560,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *element_type, *range_type, *index_type;
struct type **range_types = NULL;
struct attribute *attr;
@ -3688,7 +3686,7 @@ index 16381de..e286f4c 100644
struct cleanup *back_to;
char *name;
@@ -5597,17 +6615,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -5595,17 +6613,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
type = element_type;
if (read_array_order (die, cu) == DW_ORD_col_major)
@ -3711,7 +3709,7 @@ index 16381de..e286f4c 100644
/* Understand Dwarf2 support for vector types (like they occur on
the PowerPC w/ AltiVec). Gcc just adds another attribute to the
@@ -6061,29 +7073,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -6059,29 +7071,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
@ -3840,7 +3838,7 @@ index 16381de..e286f4c 100644
char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type);
@@ -6326,60 +7423,136 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -6324,60 +7421,136 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *base_type;
struct type *range_type;
struct attribute *attr;
@ -4011,7 +4009,7 @@ index 16381de..e286f4c 100644
}
/* Dwarf-2 specifications explicitly allows to create subrange types
@@ -6421,20 +7594,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -6419,20 +7592,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
}
}
@ -4065,7 +4063,7 @@ index 16381de..e286f4c 100644
name = dwarf2_name (die, cu);
if (name)
@@ -8714,10 +9908,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
@@ -8712,10 +9906,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
(i.e. when the value of a register or memory location is
referenced, or a thread-local block, etc.). Then again, it might
not be worthwhile. I'm assuming that it isn't unless performance
@ -4080,7 +4078,7 @@ index 16381de..e286f4c 100644
}
/* Given a pointer to a DWARF information entry, figure out if we need
@@ -8748,6 +9944,8 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
@@ -8746,6 +9942,8 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
sizeof (struct symbol));
OBJSTAT (objfile, n_syms++);
memset (sym, 0, sizeof (struct symbol));
@ -4089,7 +4087,7 @@ index 16381de..e286f4c 100644
/* Cache this symbol's name and the name's demangled form (if any). */
SYMBOL_LANGUAGE (sym) = cu->language;
@@ -9379,6 +10577,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
@@ -9375,6 +10573,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
break;
}
@ -4099,7 +4097,7 @@ index 16381de..e286f4c 100644
return this_type;
}
@@ -11983,67 +13184,102 @@ attr_form_is_constant (struct attribute *attr)
@@ -11979,67 +13180,102 @@ attr_form_is_constant (struct attribute *attr)
}
}
@ -4251,7 +4249,7 @@ index 16381de..e286f4c 100644
}
}
@@ -12054,7 +13290,7 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
@@ -12050,7 +13286,7 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
struct objfile *
dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
{
@ -4260,7 +4258,7 @@ index 16381de..e286f4c 100644
/* Return the master objfile, so that we can report and look up the
correct file containing this variable. */
@@ -12074,7 +13310,7 @@ dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
@@ -12070,7 +13306,7 @@ dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
else
{
/* If the CU is not currently read in, we re-read its header. */
@ -4269,7 +4267,7 @@ index 16381de..e286f4c 100644
struct dwarf2_per_objfile *per_objfile
= objfile_data (objfile, dwarf2_objfile_data_key);
gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
@@ -12096,7 +13332,7 @@ dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
@@ -12092,7 +13328,7 @@ dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
else
{
/* If the CU is not currently read in, we re-read its header. */
@ -4278,7 +4276,7 @@ index 16381de..e286f4c 100644
struct dwarf2_per_objfile *per_objfile
= objfile_data (objfile, dwarf2_objfile_data_key);
gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
@@ -12116,7 +13352,7 @@ dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
@@ -12112,7 +13348,7 @@ dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
CORE_ADDR
dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
{
@ -4287,7 +4285,7 @@ index 16381de..e286f4c 100644
return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
}
@@ -12338,6 +13574,30 @@ dwarf2_free_objfile (struct objfile *objfile)
@@ -12334,6 +13570,30 @@ dwarf2_free_objfile (struct objfile *objfile)
/* Cached DIE trees use xmalloc and the comp_unit_obstack. */
free_cached_comp_units (NULL);
@ -4318,7 +4316,7 @@ index 16381de..e286f4c 100644
/* Everything else should be on the objfile obstack. */
}
@@ -12372,6 +13632,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
@@ -12368,6 +13628,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
return ofs_lhs->offset == ofs_rhs->offset;
}
@ -4350,7 +4348,7 @@ index 16381de..e286f4c 100644
/* Set the type associated with DIE to TYPE. Save it in CU's hash
table if necessary. For convenience, return TYPE.
@@ -12395,6 +13680,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
@@ -12391,6 +13676,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
{
struct dwarf2_offset_and_type **slot, ofs;
@ -4359,8 +4357,8 @@ index 16381de..e286f4c 100644
/* For Ada types, make sure that the gnat-specific data is always
initialized (if not already set). There are a few types where
we should not be doing so, because the type-specific area is
@@ -12592,8 +13879,567 @@ dwarf2_per_objfile_free (struct objfile *objfile, void *d)
munmap_section_buffer (&data->loc);
@@ -12591,8 +13878,567 @@ dwarf2_per_objfile_free (struct objfile *objfile, void *d)
munmap_section_buffer (&data->types);
munmap_section_buffer (&data->frame);
munmap_section_buffer (&data->eh_frame);
+ munmap_section_buffer (&data->gdb_index);
@ -4927,7 +4925,7 @@ index 16381de..e286f4c 100644
int dwarf2_always_disassemble;
static void
@@ -12610,6 +14456,8 @@ void _initialize_dwarf2_read (void);
@@ -12609,6 +14455,8 @@ void _initialize_dwarf2_read (void);
void
_initialize_dwarf2_read (void)
{
@ -4936,7 +4934,7 @@ index 16381de..e286f4c 100644
dwarf2_objfile_data_key
= register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
@@ -12657,4 +14505,9 @@ The value is the maximum depth to print."),
@@ -12656,4 +14504,9 @@ The value is the maximum depth to print."),
NULL,
NULL,
&setdebuglist, &showdebuglist);
@ -6111,7 +6109,7 @@ index e0ca12c..de6311a 100644
else
{
diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
index 6a230c0..d87a813 100644
index 78151dd..da11686 100644
--- a/gdb/gdbcmd.h
+++ b/gdb/gdbcmd.h
@@ -124,6 +124,10 @@ extern struct cmd_list_element *setchecklist;
@ -6123,8 +6121,8 @@ index 6a230c0..d87a813 100644
+extern struct cmd_list_element *save_cmdlist;
+
extern void execute_command (char *, int);
extern char *execute_command_to_string (char *p, int from_tty);
enum command_control_type execute_control_command (struct command_line *);
diff --git a/gdb/gdbinit.in b/gdb/gdbinit.in
index ffb7f53..a2e7e94 100644
--- a/gdb/gdbinit.in
@ -7706,7 +7704,7 @@ index 5abec68..e309277 100644
extern void notice_new_inferior (ptid_t, int, int);
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 57f2ab8..5762a7f 100644
index 54b1d9f..58d045a 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -45,6 +45,8 @@
@ -8590,7 +8588,7 @@ index bb79ae1..fbbd600 100644
+
#endif /* PARSER_DEFS_H */
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
index e8d96f6..8bf097c 100644
index 18ddee7..652b02a 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -2010,6 +2010,24 @@ ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
@ -8673,7 +8671,7 @@ index 5ffa099..58d9c79 100644
+ observer_attach_mark_used (print_types_mark_used);
}
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 367cf1e..c120894 100644
index 97a4eec..fce19c9 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -421,6 +421,14 @@ lookup_symbol_aux_psymtabs (struct objfile *objfile,
@ -10339,7 +10337,7 @@ index 2b8d301..0af99c8 100644
extern PyObject *gdbpy_gdberror_exc;
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 6680126..2eee31f 100644
index 7346fba..ee6e476 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -28,6 +28,7 @@
@ -10368,7 +10366,7 @@ index 6680126..2eee31f 100644
static PyMethodDef GdbMethods[];
@@ -413,6 +421,105 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
@@ -374,6 +382,105 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
Py_RETURN_NONE;
}
@ -10474,7 +10472,7 @@ index 6680126..2eee31f 100644
/* Parse a string and evaluate it as an expression. */
static PyObject *
gdbpy_parse_and_eval (PyObject *self, PyObject *args)
@@ -453,6 +560,114 @@ source_python_script (FILE *stream, const char *file)
@@ -414,6 +521,114 @@ source_python_script (FILE *stream, const char *file)
@ -10589,7 +10587,7 @@ index 6680126..2eee31f 100644
/* Printing. */
/* A python function to write a single string using gdb's filtered
@@ -498,6 +713,53 @@ gdbpy_print_stack (void)
@@ -459,6 +674,53 @@ gdbpy_print_stack (void)
/* Return the current Progspace.
There always is one. */
@ -10643,7 +10641,7 @@ index 6680126..2eee31f 100644
static PyObject *
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
@@ -759,6 +1021,7 @@ Enables or disables printing of Python stack traces."),
@@ -720,6 +982,7 @@ Enables or disables printing of Python stack traces."),
gdbpy_initialize_lazy_string ();
gdbpy_initialize_thread ();
gdbpy_initialize_inferior ();
@ -10651,7 +10649,7 @@ index 6680126..2eee31f 100644
PyRun_SimpleString ("import gdb");
PyRun_SimpleString ("gdb.pretty_printers = []");
@@ -826,6 +1089,8 @@ static PyMethodDef GdbMethods[] =
@@ -787,6 +1050,8 @@ static PyMethodDef GdbMethods[] =
"Get a value from history" },
{ "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
"Execute a gdb command" },
@ -10660,7 +10658,7 @@ index 6680126..2eee31f 100644
{ "parameter", gdbpy_parameter, METH_VARARGS,
"Return a gdb parameter's value" },
@@ -864,11 +1129,21 @@ a boolean indicating if name is a field of the current implied argument\n\
@@ -825,11 +1090,21 @@ a boolean indicating if name is a field of the current implied argument\n\
`this' (when the current language is object-oriented)." },
{ "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
"Return the block containing the given pc value, or None." },
@ -10710,7 +10708,7 @@ index 1f135d4..489838d 100644
/* Given an executable's ABFD and target, compute the entry-point
diff --git a/gdb/symfile.c b/gdb/symfile.c
index ab51fa4..babe9cf 100644
index 42f7ae3..371db0d 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1059,6 +1059,9 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd,
@ -10732,7 +10730,7 @@ index ab51fa4..babe9cf 100644
{
if (from_tty || info_verbose)
{
@@ -1535,7 +1538,7 @@ symbol_file_command (char *args, int from_tty)
@@ -1533,7 +1536,7 @@ symbol_file_command (char *args, int from_tty)
void
set_initial_language (void)
{
@ -10741,7 +10739,7 @@ index ab51fa4..babe9cf 100644
enum language lang = language_unknown;
filename = find_main_filename ();
@@ -2662,7 +2665,7 @@ init_filename_language_table (void)
@@ -2660,7 +2663,7 @@ init_filename_language_table (void)
}
enum language
@ -10802,7 +10800,7 @@ index 62e6b97..00dc613 100644
ms_type = 'S';
break;
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 9472c24..c3b1792 100644
index 2c4c9e4..28f0450 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1295,16 +1295,25 @@ lookup_symbol_aux_symtabs (int block_index, const char *name,
@ -10971,7 +10969,7 @@ index bedc10a..dc284e4 100644
/* symtab.c */
diff --git a/gdb/target.c b/gdb/target.c
index 862df4e..a8f1bdd 100644
index 4cabcbd..34b3b60 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -123,6 +123,8 @@ static int debug_to_insert_watchpoint (CORE_ADDR, int, int,
@ -11001,7 +10999,7 @@ index 862df4e..a8f1bdd 100644
de_fault (to_stopped_by_watchpoint,
(int (*) (void))
return_zero);
@@ -3441,6 +3447,19 @@ debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type,
@@ -3440,6 +3446,19 @@ debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type,
return retval;
}
@ -11021,7 +11019,7 @@ index 862df4e..a8f1bdd 100644
static void
debug_to_terminal_init (void)
{
@@ -3688,6 +3707,7 @@ setup_target_debug (void)
@@ -3687,6 +3706,7 @@ setup_target_debug (void)
current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
@ -14208,7 +14206,7 @@ index 0000000..226dc5d
+ call foo (g, h)
+end
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
index 1aed252..593aa55 100644
index fc8bccc..e053813 100644
--- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -92,6 +92,10 @@ proc do_steps_and_nexts {} {
@ -15388,7 +15386,7 @@ index 0000000..1dc93ab
+ test child FOLLOW_CHILD
+}
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index b5b3362..d916e94 100644
index 20e2fb7..b27d25c 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -27,6 +27,7 @@ if {$tool == ""} {
@ -15494,7 +15492,7 @@ index 0000000..b8e9836
+ return 0
+}
diff --git a/gdb/thread.c b/gdb/thread.c
index 2fdc7f9..2a5d0f1 100644
index 0b291ba..ae3e4ff 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -90,6 +90,16 @@ delete_step_resume_breakpoint (struct thread_info *tp)
@ -15528,7 +15526,7 @@ index 2fdc7f9..2a5d0f1 100644
discard_all_intermediate_continuations_thread (tp);
diff --git a/gdb/top.c b/gdb/top.c
index 93447fe..d6875a7 100644
index b29e68d..8edac70 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -337,6 +337,7 @@ void

View File

@ -1,386 +1,3 @@
https://bugzilla.redhat.com/show_bug.cgi?id=620930
http://sourceware.org/ml/gdb-cvs/2010-08/msg00031.html
### src/gdb/ChangeLog 2010/08/06 19:45:58 1.12064
### src/gdb/ChangeLog 2010/08/07 15:00:36 1.12065
## -1,3 +1,22 @@
+2010-08-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * defs.h (make_cleanup_restore_uinteger, make_cleanup_restore_ui_file)
+ (make_cleanup_restore_page_info)
+ (set_batch_flag_and_make_cleanup_restore_page_info): New declarations.
+ * gdbcmd.h (execute_command_to_string): New declaration.
+ * python/python.c (struct restore_ui_file_closure, restore_ui_file)
+ (make_cleanup_restore_ui_file): Move to utils.c
+ (execute_gdb_command) <to_string>: Move ...
+ * top.c (execute_command_to_string): ... here. Call
+ set_batch_flag_and_make_cleanup_restore_page_info.
+ * utils.c (make_cleanup_restore_integer): New source file blank line.
+ (make_cleanup_restore_uinteger): New.
+ (struct restore_ui_file_closure, do_restore_ui_file)
+ (make_cleanup_restore_ui_file): Move here from python/python.c.
+ (init_page_info) <batch_flag>
+ (do_restore_page_info_cleanup, make_cleanup_restore_page_info)
+ (set_batch_flag_and_make_cleanup_restore_page_info): New.
+
2010-08-06 Maciej W. Rozycki <macro@codesourcery.com>
* thread.c (add_thread_silent): Use null_ptid instead of
### src/gdb/testsuite/ChangeLog 2010/08/02 23:41:18 1.2405
### src/gdb/testsuite/ChangeLog 2010/08/07 15:00:38 1.2406
## -1,3 +1,10 @@
+2010-08-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.python/python.exp (show height, set height 10)
+ (verify pagination beforehand, verify pagination beforehand: q)
+ (gdb.execute does not page, verify pagination afterwards)
+ (verify pagination afterwards: q): New.
+
2010-08-02 Doug Evans <dje@google.com>
* gdb.cp/namespace.exp: When "print ::cOtherFileClassVar" fails
### src/gdb/doc/ChangeLog 2010/07/31 15:34:41 1.1093
### src/gdb/doc/ChangeLog 2010/08/07 15:00:38 1.1094
## -1,3 +1,9 @@
+2010-08-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Eli Zaretskii <eliz@gnu.org>
+
+ * gdb.texinfo (Mode Options) <-batch>
+ (Basic Python) <gdb.execute>: Describe setting width and height.
+
2010-07-31 Paul Pluzhnikov <ppluzhnikov@google.com>
* gdb.texinfo (Threads): Document 'debug libthread-db'.
Index: gdb-7.1.90.20100806/gdb/defs.h
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/defs.h 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/defs.h 2010-08-07 17:18:31.000000000 +0200
@@ -351,6 +351,10 @@ struct obstack;
extern struct cleanup *make_cleanup_obstack_free (struct obstack *obstack);
extern struct cleanup *make_cleanup_restore_integer (int *variable);
+extern struct cleanup *make_cleanup_restore_uinteger (unsigned int *variable);
+
+extern struct cleanup *
+ make_cleanup_restore_ui_file (struct ui_file **variable);
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
@@ -383,6 +387,10 @@ extern int yquery (const char *, ...) AT
extern void init_page_info (void);
+extern struct cleanup *make_cleanup_restore_page_info (void);
+extern struct cleanup *
+ set_batch_flag_and_make_cleanup_restore_page_info (void);
+
extern char *gdb_realpath (const char *);
extern char *xfullpath (const char *);
Index: gdb-7.1.90.20100806/gdb/gdbcmd.h
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/gdbcmd.h 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/gdbcmd.h 2010-08-07 17:18:40.000000000 +0200
@@ -128,6 +128,8 @@ extern void execute_command (char *, int
enum command_control_type execute_control_command (struct command_line *);
+extern char *execute_command_to_string (char *p, int from_tty);
+
extern void print_command_line (struct command_line *, unsigned int,
struct ui_file *);
extern void print_command_lines (struct ui_out *,
Index: gdb-7.1.90.20100806/gdb/top.c
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/top.c 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/top.c 2010-08-07 17:18:31.000000000 +0200
@@ -458,6 +458,39 @@ execute_command (char *p, int from_tty)
}
}
+/* Run execute_command for P and FROM_TTY. Capture its output into the
+ returned string, do not display it to the screen. BATCH_FLAG will be
+ temporarily set to true. */
+
+char *
+execute_command_to_string (char *p, int from_tty)
+{
+ struct ui_file *str_file;
+ struct cleanup *cleanup;
+ char *retval;
+
+ /* GDB_STDOUT should be better already restored during these
+ restoration callbacks. */
+ cleanup = set_batch_flag_and_make_cleanup_restore_page_info ();
+
+ str_file = mem_fileopen ();
+
+ make_cleanup_restore_ui_file (&gdb_stdout);
+ make_cleanup_restore_ui_file (&gdb_stderr);
+ make_cleanup_ui_file_delete (str_file);
+
+ gdb_stdout = str_file;
+ gdb_stderr = str_file;
+
+ execute_command (p, from_tty);
+
+ retval = ui_file_xstrdup (str_file, NULL);
+
+ do_cleanups (cleanup);
+
+ return retval;
+}
+
/* Read commands from `instream' and execute them
until end of file or error reading instream. */
Index: gdb-7.1.90.20100806/gdb/utils.c
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/utils.c 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/utils.c 2010-08-07 17:18:31.000000000 +0200
@@ -339,6 +339,7 @@ restore_integer (void *p)
/* Remember the current value of *VARIABLE and make it restored when the cleanup
is run. */
+
struct cleanup *
make_cleanup_restore_integer (int *variable)
{
@@ -352,6 +353,43 @@ make_cleanup_restore_integer (int *varia
xfree);
}
+/* Remember the current value of *VARIABLE and make it restored when the cleanup
+ is run. */
+
+struct cleanup *
+make_cleanup_restore_uinteger (unsigned int *variable)
+{
+ return make_cleanup_restore_integer ((int *) variable);
+}
+
+struct restore_ui_file_closure
+{
+ struct ui_file **variable;
+ struct ui_file *value;
+};
+
+static void
+do_restore_ui_file (void *p)
+{
+ struct restore_ui_file_closure *closure = p;
+
+ *(closure->variable) = closure->value;
+}
+
+/* Remember the current value of *VARIABLE and make it restored when
+ the cleanup is run. */
+
+struct cleanup *
+make_cleanup_restore_ui_file (struct ui_file **variable)
+{
+ struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure);
+
+ c->variable = variable;
+ c->value = *variable;
+
+ return make_cleanup_dtor (do_restore_ui_file, (void *) c, xfree);
+}
+
struct cleanup *
make_my_cleanup2 (struct cleanup **pmy_chain, make_cleanup_ftype *function,
void *arg, void (*free_arg) (void *))
@@ -2034,6 +2072,12 @@ static int wrap_column;
void
init_page_info (void)
{
+ if (batch_flag)
+ {
+ lines_per_page = UINT_MAX;
+ chars_per_line = UINT_MAX;
+ }
+ else
#if defined(TUI)
if (!tui_get_command_dimension (&chars_per_line, &lines_per_page))
#endif
@@ -2078,6 +2122,44 @@ init_page_info (void)
set_width ();
}
+/* Helper for make_cleanup_restore_page_info. */
+
+static void
+do_restore_page_info_cleanup (void *arg)
+{
+ set_screen_size ();
+ set_width ();
+}
+
+/* Provide cleanup for restoring the terminal size. */
+
+struct cleanup *
+make_cleanup_restore_page_info (void)
+{
+ struct cleanup *back_to;
+
+ back_to = make_cleanup (do_restore_page_info_cleanup, NULL);
+ make_cleanup_restore_uinteger (&lines_per_page);
+ make_cleanup_restore_uinteger (&chars_per_line);
+
+ return back_to;
+}
+
+/* Temporarily set BATCH_FLAG and the associated unlimited terminal size.
+ Provide cleanup for restoring the original state. */
+
+struct cleanup *
+set_batch_flag_and_make_cleanup_restore_page_info (void)
+{
+ struct cleanup *back_to = make_cleanup_restore_page_info ();
+
+ make_cleanup_restore_integer (&batch_flag);
+ batch_flag = 1;
+ init_page_info ();
+
+ return back_to;
+}
+
/* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE. */
static void
Index: gdb-7.1.90.20100806/gdb/doc/gdb.texinfo
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/doc/gdb.texinfo 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/doc/gdb.texinfo 2010-08-07 17:18:31.000000000 +0200
@@ -1031,9 +1031,9 @@ Run in batch mode. Exit with status @co
command files specified with @samp{-x} (and all commands from
initialization files, if not inhibited with @samp{-n}). Exit with
nonzero status if an error occurs in executing the @value{GDBN} commands
-in the command files. Batch mode also disables pagination;
-@pxref{Screen Size} and acts as if @kbd{set confirm off} were in
-effect (@pxref{Messages/Warnings}).
+in the command files. Batch mode also disables pagination, sets unlimited
+terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm
+off} were in effect (@pxref{Messages/Warnings}).
Batch mode may be useful for running @value{GDBN} as a filter, for
example to download and run a program on another computer; in order to
@@ -20432,7 +20432,9 @@ By default, any output produced by @var{
@value{GDBN}'s standard output. If the @var{to_string} parameter is
@code{True}, then output will be collected by @code{gdb.execute} and
returned as a string. The default is @code{False}, in which case the
-return value is @code{None}.
+return value is @code{None}. If @var{to_string} is @code{True}, the
+@value{GDBN} virtual terminal will be temporarily set to unlimited width
+and height, and its pagination will be disabled; @pxref{Screen Size}.
@end defun
@findex gdb.breakpoints
Index: gdb-7.1.90.20100806/gdb/python/python.c
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/python/python.c 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/python/python.c 2010-08-07 17:18:31.000000000 +0200
@@ -309,33 +309,6 @@ gdbpy_target_wide_charset (PyObject *sel
return PyUnicode_Decode (cset, strlen (cset), host_charset (), NULL);
}
-struct restore_ui_file_closure
-{
- struct ui_file **variable;
- struct ui_file *value;
-};
-
-static void
-restore_ui_file (void *p)
-{
- struct restore_ui_file_closure *closure = p;
-
- *(closure->variable) = closure->value;
-}
-
-/* Remember the current value of *VARIABLE and make it restored when
- the cleanup is run. */
-struct cleanup *
-make_cleanup_restore_ui_file (struct ui_file **variable)
-{
- struct restore_ui_file_closure *c = XNEW (struct restore_ui_file_closure);
-
- c->variable = variable;
- c->value = *variable;
-
- return make_cleanup_dtor (restore_ui_file, (void *) c, xfree);
-}
-
/* A Python function which evaluates a string using the gdb CLI. */
static PyObject *
@@ -376,27 +349,15 @@ execute_gdb_command (PyObject *self, PyO
/* Copy the argument text in case the command modifies it. */
char *copy = xstrdup (arg);
struct cleanup *cleanup = make_cleanup (xfree, copy);
- struct ui_file *str_file = NULL;
if (to_string)
+ result = execute_command_to_string (copy, from_tty);
+ else
{
- str_file = mem_fileopen ();
-
- make_cleanup_restore_ui_file (&gdb_stdout);
- make_cleanup_restore_ui_file (&gdb_stderr);
- make_cleanup_ui_file_delete (str_file);
-
- gdb_stdout = str_file;
- gdb_stderr = str_file;
+ result = NULL;
+ execute_command (copy, from_tty);
}
- execute_command (copy, from_tty);
-
- if (str_file)
- result = ui_file_xstrdup (str_file, NULL);
- else
- result = NULL;
-
do_cleanups (cleanup);
}
GDB_PY_HANDLE_EXCEPTION (except);
Index: gdb-7.1.90.20100806/gdb/testsuite/gdb.python/python.exp
===================================================================
--- gdb-7.1.90.20100806.orig/gdb/testsuite/gdb.python/python.exp 2010-08-07 17:18:27.000000000 +0200
+++ gdb-7.1.90.20100806/gdb/testsuite/gdb.python/python.exp 2010-08-07 17:18:31.000000000 +0200
@@ -87,3 +87,26 @@ gdb_test "python import itertools; print
gdb_test_no_output \
"python x = gdb.execute('printf \"%d\", 23', to_string = True)"
gdb_test "python print x" "23"
+
+# Test (no) pagination of the executed command.
+gdb_test "show height" {Number of lines gdb thinks are in a page is unlimited\.}
+set lines 10
+gdb_test_no_output "set height $lines"
+
+set test "verify pagination beforehand"
+gdb_test_multiple "python print \"\\n\" * $lines" $test {
+ -re "---Type <return> to continue, or q <return> to quit---$" {
+ pass $test
+ }
+}
+gdb_test "q" "Quit" "verify pagination beforehand: q"
+
+gdb_test "python if gdb.execute('python print \"\\\\n\" * $lines', to_string=True) == \"\\n\" * [expr $lines + 1]: print \"yes\"" "yes" "gdb.execute does not page"
+
+set test "verify pagination afterwards"
+gdb_test_multiple "python print \"\\n\" * $lines" $test {
+ -re "---Type <return> to continue, or q <return> to quit---$" {
+ pass $test
+ }
+}
+gdb_test "q" "Quit" "verify pagination afterwards: q"
https://bugzilla.redhat.com/show_bug.cgi?id=610986
http://sourceware.org/ml/gdb-cvs/2010-08/msg00112.html

View File

@ -34,11 +34,11 @@ Name: gdb%{?_with_debug:-debug}
# Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
# and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
Version: 7.1.90.20100806
Version: 7.2
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
Release: 12%{?_with_upstream:.upstream}%{dist}
Release: 1%{?_with_upstream:.upstream}%{dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and GFDL and BSD and Public Domain
Group: Development/Debuggers
@ -1066,6 +1066,9 @@ fi
%endif
%changelog
* Fri Sep 3 2010 Dan Horák <dan[at]danny.cz> - 7.2-1.fc14
- Formal update to the final FSF GDB release.
* Tue Aug 24 2010 Dan Horák <dan[at]danny.cz> - 7.1.90.20100806-12.fc14
- libinproctrace doesn't exist on s390(x)

View File

@ -1,2 +1 @@
37672a43bf094a9d64f252611e384524 gdb-7.1.90.20100806.tar.bz2
64260e6c56979ee750a01055f16091a5 gdb-7.2.tar.bz2