- 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. to install and uninstall.
* gstack.sh, gstack.1: New files. * gstack.sh, gstack.1: New files.
diff -up -ruNp gdb-7.0.1-empty/gdb/Makefile.in gdb-7.0.1/gdb/Makefile.in Index: gdb-7.2/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 --- gdb-7.2.orig/gdb/Makefile.in 2010-09-03 09:37:55.000000000 +0200
@@ -989,7 +989,7 @@ install: all install-only +++ 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 "install-only" target also installs the syscalls' XML files in
# the system. # 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)'; \ transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e "$$t"` ; \ echo gdb | sed -e "$$t"` ; \
if test "x$$transformed_name" = x; then \ if test "x$$transformed_name" = x; then \
@@ -1021,9 +1021,26 @@ install-tui: @@ -1046,7 +1046,25 @@ install-tui:
$(DESTDIR)$(man1dir) ; \ install-python:
$(INSTALL_DATA) $(srcdir)/gdb.1 \ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
$(DESTDIR)$(man1dir)/$$transformed_name.1
-uninstall: force $(CONFIG_UNINSTALL)
+GSTACK=gstack +GSTACK=gstack
+.PHONY: install-gstack +.PHONY: install-gstack
+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) ; \ + $(DESTDIR)$(man1dir) ; \
+ : $(INSTALL_DATA) $(srcdir)/gstack.1 \ + : $(INSTALL_DATA) $(srcdir)/gstack.1 \
+ $(DESTDIR)$(man1dir)/$$transformed_name.1 + $(DESTDIR)$(man1dir)/$$transformed_name.1
+
-uninstall: force $(CONFIG_UNINSTALL)
+uninstall: force uninstall-gstack $(CONFIG_UNINSTALL) +uninstall: force uninstall-gstack $(CONFIG_UNINSTALL)
transformed_name=`t='$(program_transform_name)'; \ transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e $$t` ; \ echo gdb | sed -e $$t` ; \
if test "x$$transformed_name" = x; then \ if test "x$$transformed_name" = x; then \
@@ -1045,6 +1062,17 @@ uninstall-tui: @@ -1068,6 +1086,17 @@ uninstall-tui:
fi ; \ fi ; \
rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \
$(DESTDIR)$(man1dir)/$$transformed_name.1 $(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. # The C++ name parser can be built standalone for testing.
test-cp-name-parser.o: cp-name-parser.c 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 Index: gdb-7.2/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 --- /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 @@ @@ -0,0 +1,48 @@
+#!/bin/sh +#!/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 's/^\((gdb) \)*//' \
+ -e '/^#/p' \ + -e '/^#/p' \
+ -e '/^Thread/p' + -e '/^Thread/p'
--- /dev/null 2010-04-07 06:20:52.289994508 +0200 Index: gdb-7.2/gdb/testsuite/gdb.base/gstack.exp
+++ gdb-7.0.1/gdb/testsuite/gdb.base/gstack.exp 2010-04-07 21:53:57.000000000 +0200 ===================================================================
--- /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 @@ @@ -0,0 +1,71 @@
+# Copyright (C) 2010 Free Software Foundation, Inc. +# 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 +gdb_exit
+ +
+remote_exec host "kill -9 $pid" +remote_exec host "kill -9 $pid"
--- /dev/null 2010-04-07 06:20:52.289994508 +0200 Index: gdb-7.2/gdb/testsuite/gdb.base/gstack.c
+++ gdb-7.0.1/gdb/testsuite/gdb.base/gstack.c 2010-04-07 21:46:52.000000000 +0200 ===================================================================
--- /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 @@ @@ -0,0 +1,43 @@
+/* This testcase is part of GDB, the GNU debugger. +/* 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 http://sourceware.org/gdb/wiki/ArcherBranchManagement
GIT snapshot: GIT snapshot:
commit af507f71e376b19f8ee9d54067924790566440e8 commit 30a7ce8ffc2b54bc4453a127be8dd28a3ea6d299
branch `archer' - the merge of branches: branch `archer' - the merge of branches:
archer-jankratochvil-vla 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 diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 6dbb284..6133da3 100644 index f07bc8b..3703dca 100644
--- a/gdb/Makefile.in --- a/gdb/Makefile.in
+++ b/gdb/Makefile.in +++ b/gdb/Makefile.in
@@ -169,6 +169,12 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@ @@ -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. # 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= \ CONFIG_LINKS= \
$(SHELL) config.status $(SHELL) config.status
@ -70,7 +70,7 @@ index 6dbb284..6133da3 100644
config.status: $(srcdir)/configure configure.tgt configure.host config.status: $(srcdir)/configure configure.tgt configure.host
$(SHELL) config.status --recheck $(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 $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-function.c
$(POSTCOMPILE) $(POSTCOMPILE)
@ -81,7 +81,7 @@ index 6dbb284..6133da3 100644
py-inferior.o: $(srcdir)/python/py-inferior.c py-inferior.o: $(srcdir)/python/py-inferior.c
$(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-inferior.c $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-inferior.c
$(POSTCOMPILE) $(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 $(COMPILE) $(PYTHON_CFLAGS) $(srcdir)/python/py-value.c
$(POSTCOMPILE) $(POSTCOMPILE)
@ -289,7 +289,7 @@ index 0348bf4..f01d0ee 100644
/* Return the innermost stack frame executing inside of BLOCK, /* Return the innermost stack frame executing inside of BLOCK,
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 4affe0a..584c68e 100644 index 6a6864c..5df336d 100644
--- a/gdb/breakpoint.c --- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c +++ b/gdb/breakpoint.c
@@ -62,6 +62,7 @@ @@ -62,6 +62,7 @@
@ -1349,7 +1349,7 @@ index 1fc457d..f4c846a 100644
#undef PYTHON_PATH_RELOCATABLE #undef PYTHON_PATH_RELOCATABLE
diff --git a/gdb/configure b/gdb/configure diff --git a/gdb/configure b/gdb/configure
index 94eb9b9..e49da08 100755 index 041ffc1..8243abb 100755
--- a/gdb/configure --- a/gdb/configure
+++ b/gdb/configure +++ b/gdb/configure
@@ -679,6 +679,8 @@ REPORT_BUGS_TO @@ -679,6 +679,8 @@ REPORT_BUGS_TO
@ -1454,17 +1454,16 @@ index 94eb9b9..e49da08 100755
subdirs="$subdirs doc testsuite" subdirs="$subdirs doc testsuite"
@@ -10881,6 +10955,8 @@ $as_echo "#define HAVE_PYTHON 1" >>confdefs.h @@ -10919,6 +10993,7 @@ $as_echo "#define HAVE_PYTHON 1" >>confdefs.h
CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)" CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)"
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)" 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" + CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-python"
ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)" ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
# Flags needed to compile Python code (taken from python-config --cflags). # Flags needed to compile Python code (taken from python-config --cflags).
diff --git a/gdb/configure.ac b/gdb/configure.ac diff --git a/gdb/configure.ac b/gdb/configure.ac
index 9300544..380473a 100644 index b69c3b6..4e89558 100644
--- a/gdb/configure.ac --- a/gdb/configure.ac
+++ b/gdb/configure.ac +++ b/gdb/configure.ac
@@ -108,6 +108,51 @@ AS_HELP_STRING([--with-relocated-sources=PATH], [automatically relocate this pat @@ -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) AC_CONFIG_SUBDIRS(doc testsuite)
# Check whether to support alternative target configurations # Check whether to support alternative target configurations
@@ -828,6 +873,8 @@ if test "${have_libpython}" != no; then @@ -833,6 +878,7 @@ if test "${have_libpython}" != no; then
CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)" CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_PYTHON_DEPS)"
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_PYTHON_SRCS)" 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" + CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-python"
ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)" ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
# Flags needed to compile Python code (taken from python-config --cflags). # Flags needed to compile Python code (taken from python-config --cflags).
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo 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 --- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo
@@ -1162,6 +1162,16 @@ for remote debugging. @@ -1162,6 +1162,16 @@ for remote debugging.
@ -1549,7 +1547,7 @@ index 1297175..c030b65 100644
@c resolve the situation of these eventually @c resolve the situation of these eventually
@item -tui @item -tui
@cindex @code{--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 @menu
* Files:: Commands to specify files * Files:: Commands to specify files
* Separate Debug Files:: Debugging information in separate files * Separate Debug Files:: Debugging information in separate files
@ -1557,7 +1555,7 @@ index 1297175..c030b65 100644
* Symbol Errors:: Errors reading symbol files * Symbol Errors:: Errors reading symbol files
* Data Files:: GDB data files * Data Files:: GDB data files
@end menu @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. This computation does not apply to the ``build ID'' method.
@ -1604,7 +1602,7 @@ index 1297175..c030b65 100644
@node Symbol Errors @node Symbol Errors
@section Errors Reading Symbol Files @section Errors Reading Symbol Files
@@ -20310,8 +20361,6 @@ containing @code{end}. For example: @@ -20349,8 +20400,6 @@ containing @code{end}. For example:
@smallexample @smallexample
(@value{GDBP}) python (@value{GDBP}) python
@ -1613,7 +1611,7 @@ index 1297175..c030b65 100644
>print 23 >print 23
>end >end
23 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 python print-stack}: if @code{on}, the default, then Python stack
printing is enabled; if @code{off}, then Python stack printing is printing is enabled; if @code{off}, then Python stack printing is
disabled. disabled.
@ -1628,7 +1626,7 @@ index 1297175..c030b65 100644
@end table @end table
It is also possible to execute a Python script from the @value{GDBN} 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 python api
@cindex programming in python @cindex programming in python
@ -1643,7 +1641,7 @@ index 1297175..c030b65 100644
@cindex python stdout @cindex python stdout
@cindex python pagination @cindex python pagination
At startup, @value{GDBN} overrides Python's @code{sys.stdout} and 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 @menu
* Basic Python:: Basic Python Functions. * Basic Python:: Basic Python Functions.
* Exception Handling:: * Exception Handling::
@ -1652,7 +1650,7 @@ index 1297175..c030b65 100644
* Types In Python:: Python representation of types. * Types In Python:: Python representation of types.
* Pretty Printing API:: Pretty-printing values. * Pretty Printing API:: Pretty-printing values.
* Selecting Pretty-Printers:: How GDB chooses a pretty-printer. * 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. @xref{Breakpoints In Python}, for more information.
@end defun @end defun
@ -1665,7 +1663,7 @@ index 1297175..c030b65 100644
@findex gdb.parameter @findex gdb.parameter
@defun parameter parameter @defun parameter parameter
Return the value of a @value{GDBN} parameter. @var{parameter} is a 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 @defun history number
Return a value from @value{GDBN}'s value history (@pxref{Value Return a value from @value{GDBN}'s value history (@pxref{Value
History}). @var{number} indicates which history element to return. 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 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 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 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}. convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
@end defun @end defun
@ -1880,7 +1878,7 @@ index 61b8f00..d94c03c 100644
/* The current depth of dwarf expression recursion, via DW_OP_call*, /* The current depth of dwarf expression recursion, via DW_OP_call*,
DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 2a8e557..be74412 100644 index f59bc40..7ff0ef9 100644
--- a/gdb/dwarf2loc.c --- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c
@@ -48,6 +48,12 @@ static void @@ -48,6 +48,12 @@ static void
@ -2158,7 +2156,7 @@ index 2a8e557..be74412 100644
retval = allocate_value (type); retval = allocate_value (type);
VALUE_LVAL (retval) = lval_memory; VALUE_LVAL (retval) = lval_memory;
set_value_lazy (retval, 1); 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); dlbaton->per_cu);
} }
@ -2232,7 +2230,7 @@ index 826bc45..1e7d8dc 100644
#endif /* dwarf2loc.h */ #endif /* dwarf2loc.h */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 16381de..e286f4c 100644 index 1e75235..d54e266 100644
--- a/gdb/dwarf2read.c --- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c
@@ -51,6 +51,9 @@ @@ -51,6 +51,9 @@
@ -3565,7 +3563,7 @@ index 16381de..e286f4c 100644
do_cleanups (back_to); 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 static void
@ -3612,7 +3610,7 @@ index 16381de..e286f4c 100644
read_file_scope (struct die_info *die, struct dwarf2_cu *cu) read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
{ {
struct objfile *objfile = cu->objfile; 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; lowpc += baseaddr;
highpc += baseaddr; highpc += baseaddr;
@ -3649,7 +3647,7 @@ index 16381de..e286f4c 100644
attr = dwarf2_attr (die, DW_AT_language, cu); attr = dwarf2_attr (die, DW_AT_language, cu);
if (attr) 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); 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 /* 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 the DIE's type field. For now, this only handles one dimensional
arrays. */ 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 *element_type, *range_type, *index_type;
struct type **range_types = NULL; struct type **range_types = NULL;
struct attribute *attr; struct attribute *attr;
@ -3688,7 +3686,7 @@ index 16381de..e286f4c 100644
struct cleanup *back_to; struct cleanup *back_to;
char *name; 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; type = element_type;
if (read_array_order (die, cu) == DW_ORD_col_major) 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 /* Understand Dwarf2 support for vector types (like they occur on
the PowerPC w/ AltiVec). Gcc just adds another attribute to the 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 gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type; struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr; struct attribute *attr;
@ -3840,7 +3838,7 @@ index 16381de..e286f4c 100644
char_type = language_string_char_type (cu->language_defn, gdbarch); char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type); 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 *base_type;
struct type *range_type; struct type *range_type;
struct attribute *attr; struct attribute *attr;
@ -4011,7 +4009,7 @@ index 16381de..e286f4c 100644
} }
/* Dwarf-2 specifications explicitly allows to create subrange types /* 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); name = dwarf2_name (die, cu);
if (name) 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 (i.e. when the value of a register or memory location is
referenced, or a thread-local block, etc.). Then again, it might referenced, or a thread-local block, etc.). Then again, it might
not be worthwhile. I'm assuming that it isn't unless performance 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 /* 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)); sizeof (struct symbol));
OBJSTAT (objfile, n_syms++); OBJSTAT (objfile, n_syms++);
memset (sym, 0, sizeof (struct symbol)); 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). */ /* Cache this symbol's name and the name's demangled form (if any). */
SYMBOL_LANGUAGE (sym) = cu->language; 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; break;
} }
@ -4099,7 +4097,7 @@ index 16381de..e286f4c 100644
return this_type; 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 * struct objfile *
dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu) 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 /* Return the master objfile, so that we can report and look up the
correct file containing this variable. */ 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 else
{ {
/* If the CU is not currently read in, we re-read its header. */ /* 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 struct dwarf2_per_objfile *per_objfile
= objfile_data (objfile, dwarf2_objfile_data_key); = objfile_data (objfile, dwarf2_objfile_data_key);
gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset; 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 else
{ {
/* If the CU is not currently read in, we re-read its header. */ /* 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 struct dwarf2_per_objfile *per_objfile
= objfile_data (objfile, dwarf2_objfile_data_key); = objfile_data (objfile, dwarf2_objfile_data_key);
gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset; 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 CORE_ADDR
dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu) 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)); 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. */ /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
free_cached_comp_units (NULL); free_cached_comp_units (NULL);
@ -4318,7 +4316,7 @@ index 16381de..e286f4c 100644
/* Everything else should be on the objfile obstack. */ /* 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; 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 /* Set the type associated with DIE to TYPE. Save it in CU's hash
table if necessary. For convenience, return TYPE. 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; 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 /* For Ada types, make sure that the gnat-specific data is always
initialized (if not already set). There are a few types where initialized (if not already set). There are a few types where
we should not be doing so, because the type-specific area is 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) @@ -12591,8 +13878,567 @@ dwarf2_per_objfile_free (struct objfile *objfile, void *d)
munmap_section_buffer (&data->loc); munmap_section_buffer (&data->types);
munmap_section_buffer (&data->frame); munmap_section_buffer (&data->frame);
munmap_section_buffer (&data->eh_frame); munmap_section_buffer (&data->eh_frame);
+ munmap_section_buffer (&data->gdb_index); + munmap_section_buffer (&data->gdb_index);
@ -4927,7 +4925,7 @@ index 16381de..e286f4c 100644
int dwarf2_always_disassemble; int dwarf2_always_disassemble;
static void static void
@@ -12610,6 +14456,8 @@ void _initialize_dwarf2_read (void); @@ -12609,6 +14455,8 @@ void _initialize_dwarf2_read (void);
void void
_initialize_dwarf2_read (void) _initialize_dwarf2_read (void)
{ {
@ -4936,7 +4934,7 @@ index 16381de..e286f4c 100644
dwarf2_objfile_data_key dwarf2_objfile_data_key
= register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free); = 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,
NULL, NULL,
&setdebuglist, &showdebuglist); &setdebuglist, &showdebuglist);
@ -6111,7 +6109,7 @@ index e0ca12c..de6311a 100644
else else
{ {
diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
index 6a230c0..d87a813 100644 index 78151dd..da11686 100644
--- a/gdb/gdbcmd.h --- a/gdb/gdbcmd.h
+++ b/gdb/gdbcmd.h +++ b/gdb/gdbcmd.h
@@ -124,6 +124,10 @@ extern struct cmd_list_element *setchecklist; @@ -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 struct cmd_list_element *save_cmdlist;
+ +
extern void execute_command (char *, int); 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 diff --git a/gdb/gdbinit.in b/gdb/gdbinit.in
index ffb7f53..a2e7e94 100644 index ffb7f53..a2e7e94 100644
--- a/gdb/gdbinit.in --- a/gdb/gdbinit.in
@ -7706,7 +7704,7 @@ index 5abec68..e309277 100644
extern void notice_new_inferior (ptid_t, int, int); extern void notice_new_inferior (ptid_t, int, int);
diff --git a/gdb/infrun.c b/gdb/infrun.c diff --git a/gdb/infrun.c b/gdb/infrun.c
index 57f2ab8..5762a7f 100644 index 54b1d9f..58d045a 100644
--- a/gdb/infrun.c --- a/gdb/infrun.c
+++ b/gdb/infrun.c +++ b/gdb/infrun.c
@@ -45,6 +45,8 @@ @@ -45,6 +45,8 @@
@ -8590,7 +8588,7 @@ index bb79ae1..fbbd600 100644
+ +
#endif /* PARSER_DEFS_H */ #endif /* PARSER_DEFS_H */
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c 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 --- a/gdb/ppc-linux-nat.c
+++ b/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, @@ -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); + observer_attach_mark_used (print_types_mark_used);
} }
diff --git a/gdb/psymtab.c b/gdb/psymtab.c diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 367cf1e..c120894 100644 index 97a4eec..fce19c9 100644
--- a/gdb/psymtab.c --- a/gdb/psymtab.c
+++ b/gdb/psymtab.c +++ b/gdb/psymtab.c
@@ -421,6 +421,14 @@ lookup_symbol_aux_psymtabs (struct objfile *objfile, @@ -421,6 +421,14 @@ lookup_symbol_aux_psymtabs (struct objfile *objfile,
@ -10339,7 +10337,7 @@ index 2b8d301..0af99c8 100644
extern PyObject *gdbpy_gdberror_exc; extern PyObject *gdbpy_gdberror_exc;
diff --git a/gdb/python/python.c b/gdb/python/python.c 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 --- a/gdb/python/python.c
+++ b/gdb/python/python.c +++ b/gdb/python/python.c
@@ -28,6 +28,7 @@ @@ -28,6 +28,7 @@
@ -10368,7 +10366,7 @@ index 6680126..2eee31f 100644
static PyMethodDef GdbMethods[]; 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; Py_RETURN_NONE;
} }
@ -10474,7 +10472,7 @@ index 6680126..2eee31f 100644
/* Parse a string and evaluate it as an expression. */ /* Parse a string and evaluate it as an expression. */
static PyObject * static PyObject *
gdbpy_parse_and_eval (PyObject *self, PyObject *args) 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. */ /* Printing. */
/* A python function to write a single string using gdb's filtered /* 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. /* Return the current Progspace.
There always is one. */ There always is one. */
@ -10643,7 +10641,7 @@ index 6680126..2eee31f 100644
static PyObject * static PyObject *
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2) 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_lazy_string ();
gdbpy_initialize_thread (); gdbpy_initialize_thread ();
gdbpy_initialize_inferior (); gdbpy_initialize_inferior ();
@ -10651,7 +10649,7 @@ index 6680126..2eee31f 100644
PyRun_SimpleString ("import gdb"); PyRun_SimpleString ("import gdb");
PyRun_SimpleString ("gdb.pretty_printers = []"); PyRun_SimpleString ("gdb.pretty_printers = []");
@@ -826,6 +1089,8 @@ static PyMethodDef GdbMethods[] = @@ -787,6 +1050,8 @@ static PyMethodDef GdbMethods[] =
"Get a value from history" }, "Get a value from history" },
{ "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS, { "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
"Execute a gdb command" }, "Execute a gdb command" },
@ -10660,7 +10658,7 @@ index 6680126..2eee31f 100644
{ "parameter", gdbpy_parameter, METH_VARARGS, { "parameter", gdbpy_parameter, METH_VARARGS,
"Return a gdb parameter's value" }, "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)." }, `this' (when the current language is object-oriented)." },
{ "block_for_pc", gdbpy_block_for_pc, METH_VARARGS, { "block_for_pc", gdbpy_block_for_pc, METH_VARARGS,
"Return the block containing the given pc value, or None." }, "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 /* Given an executable's ABFD and target, compute the entry-point
diff --git a/gdb/symfile.c b/gdb/symfile.c diff --git a/gdb/symfile.c b/gdb/symfile.c
index ab51fa4..babe9cf 100644 index 42f7ae3..371db0d 100644
--- a/gdb/symfile.c --- a/gdb/symfile.c
+++ b/gdb/symfile.c +++ b/gdb/symfile.c
@@ -1059,6 +1059,9 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, @@ -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) 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 void
set_initial_language (void) set_initial_language (void)
{ {
@ -10741,7 +10739,7 @@ index ab51fa4..babe9cf 100644
enum language lang = language_unknown; enum language lang = language_unknown;
filename = find_main_filename (); filename = find_main_filename ();
@@ -2662,7 +2665,7 @@ init_filename_language_table (void) @@ -2660,7 +2663,7 @@ init_filename_language_table (void)
} }
enum language enum language
@ -10802,7 +10800,7 @@ index 62e6b97..00dc613 100644
ms_type = 'S'; ms_type = 'S';
break; break;
diff --git a/gdb/symtab.c b/gdb/symtab.c diff --git a/gdb/symtab.c b/gdb/symtab.c
index 9472c24..c3b1792 100644 index 2c4c9e4..28f0450 100644
--- a/gdb/symtab.c --- a/gdb/symtab.c
+++ b/gdb/symtab.c +++ b/gdb/symtab.c
@@ -1295,16 +1295,25 @@ lookup_symbol_aux_symtabs (int block_index, const char *name, @@ -1295,16 +1295,25 @@ lookup_symbol_aux_symtabs (int block_index, const char *name,
@ -10971,7 +10969,7 @@ index bedc10a..dc284e4 100644
/* symtab.c */ /* symtab.c */
diff --git a/gdb/target.c b/gdb/target.c diff --git a/gdb/target.c b/gdb/target.c
index 862df4e..a8f1bdd 100644 index 4cabcbd..34b3b60 100644
--- a/gdb/target.c --- a/gdb/target.c
+++ b/gdb/target.c +++ b/gdb/target.c
@@ -123,6 +123,8 @@ static int debug_to_insert_watchpoint (CORE_ADDR, int, int, @@ -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, de_fault (to_stopped_by_watchpoint,
(int (*) (void)) (int (*) (void))
return_zero); 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; return retval;
} }
@ -11021,7 +11019,7 @@ index 862df4e..a8f1bdd 100644
static void static void
debug_to_terminal_init (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_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
current_target.to_insert_watchpoint = debug_to_insert_watchpoint; current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
current_target.to_remove_watchpoint = debug_to_remove_watchpoint; current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
@ -14208,7 +14206,7 @@ index 0000000..226dc5d
+ call foo (g, h) + call foo (g, h)
+end +end
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp 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 --- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp +++ b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -92,6 +92,10 @@ proc do_steps_and_nexts {} { @@ -92,6 +92,10 @@ proc do_steps_and_nexts {} {
@ -15388,7 +15386,7 @@ index 0000000..1dc93ab
+ test child FOLLOW_CHILD + test child FOLLOW_CHILD
+} +}
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp 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 --- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp
@@ -27,6 +27,7 @@ if {$tool == ""} { @@ -27,6 +27,7 @@ if {$tool == ""} {
@ -15494,7 +15492,7 @@ index 0000000..b8e9836
+ return 0 + return 0
+} +}
diff --git a/gdb/thread.c b/gdb/thread.c diff --git a/gdb/thread.c b/gdb/thread.c
index 2fdc7f9..2a5d0f1 100644 index 0b291ba..ae3e4ff 100644
--- a/gdb/thread.c --- a/gdb/thread.c
+++ b/gdb/thread.c +++ b/gdb/thread.c
@@ -90,6 +90,16 @@ delete_step_resume_breakpoint (struct thread_info *tp) @@ -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); discard_all_intermediate_continuations_thread (tp);
diff --git a/gdb/top.c b/gdb/top.c diff --git a/gdb/top.c b/gdb/top.c
index 93447fe..d6875a7 100644 index b29e68d..8edac70 100644
--- a/gdb/top.c --- a/gdb/top.c
+++ b/gdb/top.c +++ b/gdb/top.c
@@ -337,6 +337,7 @@ void @@ -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 https://bugzilla.redhat.com/show_bug.cgi?id=610986
http://sourceware.org/ml/gdb-cvs/2010-08/msg00112.html 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. # Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 # 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). # 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. # 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. # `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 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 Group: Development/Debuggers
@ -1066,6 +1066,9 @@ fi
%endif %endif
%changelog %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 * Tue Aug 24 2010 Dan Horák <dan[at]danny.cz> - 7.1.90.20100806-12.fc14
- libinproctrace doesn't exist on s390(x) - 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 64260e6c56979ee750a01055f16091a5 gdb-7.2.tar.bz2