- Remove core file when starting a process (BZ 594560).
- Fix lock up on loops in the solib chain (BZ 593926). - Import fix of TUI layout internal error (BZ 595475).
This commit is contained in:
parent
e9cf96da49
commit
55dec14f57
|
@ -0,0 +1,164 @@
|
||||||
|
--- ./gdb/doc/gdb.texinfo 2010-05-24 19:37:01.000000000 +0200
|
||||||
|
+++ ./gdb/doc/gdb.texinfo 2010-05-24 19:38:56.000000000 +0200
|
||||||
|
@@ -14768,33 +14768,21 @@ and @code{show architecture}.
|
||||||
|
@cindex active targets
|
||||||
|
@cindex multiple targets
|
||||||
|
|
||||||
|
-There are three classes of targets: processes, core files, and
|
||||||
|
-executable files. @value{GDBN} can work concurrently on up to three
|
||||||
|
-active targets, one in each class. This allows you to (for example)
|
||||||
|
-start a process and inspect its activity without abandoning your work on
|
||||||
|
-a core file.
|
||||||
|
-
|
||||||
|
-For example, if you execute @samp{gdb a.out}, then the executable file
|
||||||
|
-@code{a.out} is the only active target. If you designate a core file as
|
||||||
|
-well---presumably from a prior run that crashed and coredumped---then
|
||||||
|
-@value{GDBN} has two active targets and uses them in tandem, looking
|
||||||
|
-first in the corefile target, then in the executable file, to satisfy
|
||||||
|
-requests for memory addresses. (Typically, these two classes of target
|
||||||
|
-are complementary, since core files contain only a program's
|
||||||
|
-read-write memory---variables and so on---plus machine status, while
|
||||||
|
-executable files contain only the program text and initialized data.)
|
||||||
|
-
|
||||||
|
-When you type @code{run}, your executable file becomes an active process
|
||||||
|
-target as well. When a process target is active, all @value{GDBN}
|
||||||
|
-commands requesting memory addresses refer to that target; addresses in
|
||||||
|
-an active core file or executable file target are obscured while the
|
||||||
|
-process target is active.
|
||||||
|
-
|
||||||
|
-Use the @code{core-file} and @code{exec-file} commands to select a new
|
||||||
|
-core file or executable target (@pxref{Files, ,Commands to Specify
|
||||||
|
-Files}). To specify as a target a process that is already running, use
|
||||||
|
-the @code{attach} command (@pxref{Attach, ,Debugging an Already-running
|
||||||
|
-Process}).
|
||||||
|
+There are multiple classes of targets such as: processes, executable files or
|
||||||
|
+recording sessions. Core files belong to the process class, there can be
|
||||||
|
+active only one of a core or a running process. Otherwise @value{GDBN} can
|
||||||
|
+work concurrently on multiple active targets, one in each class. This allows
|
||||||
|
+you to (for example) start a process and inspect its activity while still
|
||||||
|
+having access to the executable file after the process finishes. Or if you
|
||||||
|
+start process recording (@pxref{Reverse Execution}) and @code{reverse-step}
|
||||||
|
+there you are presented a virtual layer of the recording target while the
|
||||||
|
+process target remains stopped at the chronologically last point of the process
|
||||||
|
+execution.
|
||||||
|
+
|
||||||
|
+Use the @code{core-file} and @code{exec-file} commands to select a new core
|
||||||
|
+file or executable target (@pxref{Files, ,Commands to Specify Files}). To
|
||||||
|
+specify as a target a process that is already running, use the @code{attach}
|
||||||
|
+command (@pxref{Attach, ,Debugging an Already-running Process}).
|
||||||
|
|
||||||
|
@node Target Commands
|
||||||
|
@section Commands for Managing Targets
|
||||||
|
--- ./gdb/infcmd.c 2010-05-24 19:37:01.000000000 +0200
|
||||||
|
+++ ./gdb/infcmd.c 2010-05-24 19:41:21.000000000 +0200
|
||||||
|
@@ -483,6 +483,13 @@ run_command_1 (char *args, int from_tty,
|
||||||
|
|
||||||
|
dont_repeat ();
|
||||||
|
|
||||||
|
+ if (core_bfd)
|
||||||
|
+ {
|
||||||
|
+ core_file_command (NULL, from_tty);
|
||||||
|
+ if (core_bfd)
|
||||||
|
+ warning (_("Core file not unloaded."));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
kill_if_already_running (from_tty);
|
||||||
|
|
||||||
|
init_wait_for_inferior ();
|
||||||
|
@@ -2373,6 +2380,13 @@ attach_command (char *args, int from_tty
|
||||||
|
error (_("Not killed."));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (core_bfd)
|
||||||
|
+ {
|
||||||
|
+ core_file_command (NULL, from_tty);
|
||||||
|
+ if (core_bfd)
|
||||||
|
+ warning (_("Core file not unloaded."));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Clean up any leftovers from other runs. Some other things from
|
||||||
|
this function should probably be moved into target_pre_inferior. */
|
||||||
|
target_pre_inferior (from_tty);
|
||||||
|
--- ./gdb/testsuite/gdb.base/corefile.exp 2010-01-09 01:14:11.000000000 +0100
|
||||||
|
+++ ./gdb/testsuite/gdb.base/corefile.exp 2010-05-24 19:38:56.000000000 +0200
|
||||||
|
@@ -182,3 +182,62 @@ gdb_load ${binfile}
|
||||||
|
gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(.*\\).*" "up in corefile.exp (reinit)"
|
||||||
|
|
||||||
|
gdb_test "core" "No core file now."
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# Test a run (start) command will clear any loaded core file.
|
||||||
|
+
|
||||||
|
+gdb_test "core-file $corefile" "Core was generated by .*" "run: load core again"
|
||||||
|
+gdb_test "info files" "\r\nLocal core dump file:\r\n.*" "run: sanity check we see the core file"
|
||||||
|
+
|
||||||
|
+set test "run: with core"
|
||||||
|
+if [runto_main] {
|
||||||
|
+ pass $test
|
||||||
|
+} else {
|
||||||
|
+ fail $test
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+set test "run: core file is cleared"
|
||||||
|
+gdb_test_multiple "info files" $test {
|
||||||
|
+ "\r\nLocal core dump file:\r\n.*\r\n$gdb_prompt $" {
|
||||||
|
+ fail $test
|
||||||
|
+ }
|
||||||
|
+ "\r\n$gdb_prompt $" {
|
||||||
|
+ pass $test
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+gdb_exit
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# Test an attach command will clear any loaded core file.
|
||||||
|
+
|
||||||
|
+if ![is_remote target] {
|
||||||
|
+ set test "attach: spawn sleep"
|
||||||
|
+ set res [remote_spawn host "$binfile sleep"];
|
||||||
|
+ if { $res < 0 || $res == "" } {
|
||||||
|
+ perror "$test failed."
|
||||||
|
+ fail $test
|
||||||
|
+ return
|
||||||
|
+ }
|
||||||
|
+ set pid [exp_pid -i $res]
|
||||||
|
+ # We do not care of the startup phase where it will be caught.
|
||||||
|
+
|
||||||
|
+ gdb_start
|
||||||
|
+
|
||||||
|
+ gdb_test "core-file $corefile" "Core was generated by .*" "attach: load core again"
|
||||||
|
+ gdb_test "info files" "\r\nLocal core dump file:\r\n.*" "attach: sanity check we see the core file"
|
||||||
|
+
|
||||||
|
+ gdb_test "attach $pid" "Attaching to process $pid\r\n.*" "attach: with core"
|
||||||
|
+
|
||||||
|
+ set test "attach: core file is cleared"
|
||||||
|
+ gdb_test_multiple "info files" $test {
|
||||||
|
+ "\r\nLocal core dump file:\r\n.*\r\n$gdb_prompt $" {
|
||||||
|
+ fail $test
|
||||||
|
+ }
|
||||||
|
+ "\r\n$gdb_prompt $" {
|
||||||
|
+ pass $test
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ gdb_exit
|
||||||
|
+}
|
||||||
|
--- ./gdb/testsuite/gdb.base/coremaker.c 2010-01-01 08:32:00.000000000 +0100
|
||||||
|
+++ ./gdb/testsuite/gdb.base/coremaker.c 2010-05-24 19:38:56.000000000 +0200
|
||||||
|
@@ -133,8 +133,14 @@ func1 ()
|
||||||
|
func2 ();
|
||||||
|
}
|
||||||
|
|
||||||
|
-int main ()
|
||||||
|
+int
|
||||||
|
+main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
+ if (argc == 2 && strcmp (argv[1], "sleep") == 0)
|
||||||
|
+ {
|
||||||
|
+ sleep (60);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
mmapdata ();
|
||||||
|
func1 ();
|
||||||
|
return 0;
|
|
@ -0,0 +1,79 @@
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=586566
|
||||||
|
http://sourceware.org/ml/gdb-patches/2010-03/msg00746.html
|
||||||
|
http://sourceware.org/ml/gdb-patches/2010-05/msg00551.html
|
||||||
|
http://sourceware.org/ml/gdb-cvs/2010-03/msg00194.html
|
||||||
|
|
||||||
|
### src/gdb/ChangeLog 2010/03/19 22:00:16 1.11508
|
||||||
|
### src/gdb/ChangeLog 2010/03/20 05:17:10 1.11509
|
||||||
|
## -1,3 +1,9 @@
|
||||||
|
+2010-03-20 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
+
|
||||||
|
+ * tui/tui-disasm.c (tui_get_begin_asm_address): Default to
|
||||||
|
+ get_current_arch.
|
||||||
|
+ * tui/tui-layout.c (extract_display_start_addr): Likewise.
|
||||||
|
+
|
||||||
|
2010-03-19 Stan Shebs <stan@codesourcery.com>
|
||||||
|
|
||||||
|
* ax-gdb.c (gen_fetch): Handle bool.
|
||||||
|
--- src/gdb/tui/tui-disasm.c 2010/01/01 07:32:07 1.33
|
||||||
|
+++ src/gdb/tui/tui-disasm.c 2010/03/20 05:17:10 1.34
|
||||||
|
@@ -21,6 +21,7 @@
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include "defs.h"
|
||||||
|
+#include "arch-utils.h"
|
||||||
|
#include "symtab.h"
|
||||||
|
#include "breakpoint.h"
|
||||||
|
#include "frame.h"
|
||||||
|
@@ -330,7 +331,7 @@
|
||||||
|
{
|
||||||
|
struct tui_gen_win_info *locator;
|
||||||
|
struct tui_locator_element *element;
|
||||||
|
- struct gdbarch *gdbarch = NULL;
|
||||||
|
+ struct gdbarch *gdbarch = get_current_arch ();
|
||||||
|
CORE_ADDR addr;
|
||||||
|
|
||||||
|
locator = tui_locator_win_info_ptr ();
|
||||||
|
--- src/gdb/tui/tui-layout.c 2010/01/01 07:32:07 1.36
|
||||||
|
+++ src/gdb/tui/tui-layout.c 2010/03/20 05:17:10 1.37
|
||||||
|
@@ -21,6 +21,7 @@
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include "defs.h"
|
||||||
|
+#include "arch-utils.h"
|
||||||
|
#include "command.h"
|
||||||
|
#include "symtab.h"
|
||||||
|
#include "frame.h"
|
||||||
|
@@ -522,7 +523,7 @@
|
||||||
|
extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
|
||||||
|
{
|
||||||
|
enum tui_layout_type cur_layout = tui_current_layout ();
|
||||||
|
- struct gdbarch *gdbarch = NULL;
|
||||||
|
+ struct gdbarch *gdbarch = get_current_arch ();
|
||||||
|
CORE_ADDR addr;
|
||||||
|
CORE_ADDR pc;
|
||||||
|
struct symtab_and_line cursal = get_current_source_symtab_and_line ();
|
||||||
|
--- /dev/null 2010-05-24 04:43:32.632794021 +0200
|
||||||
|
+++ gdb-7.1/gdb/testsuite/gdb.base/tui-layout.exp 2010-05-24 20:13:30.000000000 +0200
|
||||||
|
@@ -0,0 +1,21 @@
|
||||||
|
+# Copyright 2010 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+# This program is free software; you can redistribute it and/or modify
|
||||||
|
+# it under the terms of the GNU General Public License as published by
|
||||||
|
+# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
+# (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# This program is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+# GNU General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU General Public License
|
||||||
|
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+set testfile tui-layout
|
||||||
|
+if { [prepare_for_testing ${testfile}.exp ${testfile} start.c] } {
|
||||||
|
+ return -1
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+gdb_test "layout asm"
|
|
@ -822,3 +822,204 @@ commit 5e40af195bd74a66d300d8f481cab1f2ba533f3a
|
||||||
{
|
{
|
||||||
output[*nextp] = xstrdup (name);
|
output[*nextp] = xstrdup (name);
|
||||||
++*nextp;
|
++*nextp;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=578136
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=593926
|
||||||
|
http://sourceware.org/ml/gdb-patches/2010-04/msg00820.html
|
||||||
|
http://sourceware.org/ml/gdb-cvs/2010-04/msg00240.html
|
||||||
|
|
||||||
|
### src/gdb/ChangeLog 2010/04/23 18:09:16 1.11678
|
||||||
|
### src/gdb/ChangeLog 2010/04/23 21:44:19 1.11679
|
||||||
|
## -1,3 +1,14 @@
|
||||||
|
+2010-04-23 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
+ Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||||
|
+ Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
+
|
||||||
|
+ Fix deadlock on looped list of loaded shared objects.
|
||||||
|
+ * solib-svr4.c (LM_PREV): New function.
|
||||||
|
+ (IGNORE_FIRST_LINK_MAP_ENTRY): Use it.
|
||||||
|
+ (svr4_current_sos): Check for correct l_prev. New variables prev_lm
|
||||||
|
+ and next_lm. Clear prev_lm for solib_svr4_r_ldsomap.
|
||||||
|
+ * config/djgpp/fnchange.lst: Add translation for solib-corrupted.exp.
|
||||||
|
+
|
||||||
|
2010-04-23 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
|
* configure.ac (CONFIG_SRCS): Add py-auto-load.o even if not using
|
||||||
|
--- src/gdb/solib-svr4.c 2010/03/11 22:07:02 1.130
|
||||||
|
+++ src/gdb/solib-svr4.c 2010/04/23 21:44:19 1.131
|
||||||
|
@@ -272,6 +272,16 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static CORE_ADDR
|
||||||
|
+LM_PREV (struct so_list *so)
|
||||||
|
+{
|
||||||
|
+ struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
|
||||||
|
+ struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
|
||||||
|
+
|
||||||
|
+ return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset,
|
||||||
|
+ ptr_type);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static CORE_ADDR
|
||||||
|
LM_NAME (struct so_list *so)
|
||||||
|
{
|
||||||
|
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
|
||||||
|
@@ -284,16 +294,12 @@
|
||||||
|
static int
|
||||||
|
IGNORE_FIRST_LINK_MAP_ENTRY (struct so_list *so)
|
||||||
|
{
|
||||||
|
- struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
|
||||||
|
- struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
|
||||||
|
-
|
||||||
|
/* Assume that everything is a library if the dynamic loader was loaded
|
||||||
|
late by a static executable. */
|
||||||
|
if (exec_bfd && bfd_get_section_by_name (exec_bfd, ".dynamic") == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset,
|
||||||
|
- ptr_type) == 0;
|
||||||
|
+ return LM_PREV (so) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Per pspace SVR4 specific data. */
|
||||||
|
@@ -1101,7 +1107,7 @@
|
||||||
|
static struct so_list *
|
||||||
|
svr4_current_sos (void)
|
||||||
|
{
|
||||||
|
- CORE_ADDR lm;
|
||||||
|
+ CORE_ADDR lm, prev_lm;
|
||||||
|
struct so_list *head = 0;
|
||||||
|
struct so_list **link_ptr = &head;
|
||||||
|
CORE_ADDR ldsomap = 0;
|
||||||
|
@@ -1120,6 +1126,7 @@
|
||||||
|
|
||||||
|
/* Walk the inferior's link map list, and build our list of
|
||||||
|
`struct so_list' nodes. */
|
||||||
|
+ prev_lm = 0;
|
||||||
|
lm = solib_svr4_r_map (info);
|
||||||
|
|
||||||
|
while (lm)
|
||||||
|
@@ -1127,6 +1134,7 @@
|
||||||
|
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
|
||||||
|
struct so_list *new = XZALLOC (struct so_list);
|
||||||
|
struct cleanup *old_chain = make_cleanup (xfree, new);
|
||||||
|
+ CORE_ADDR next_lm;
|
||||||
|
|
||||||
|
new->lm_info = xmalloc (sizeof (struct lm_info));
|
||||||
|
make_cleanup (xfree, new->lm_info);
|
||||||
|
@@ -1138,14 +1146,21 @@
|
||||||
|
|
||||||
|
read_memory (lm, new->lm_info->lm, lmo->link_map_size);
|
||||||
|
|
||||||
|
- lm = LM_NEXT (new);
|
||||||
|
+ next_lm = LM_NEXT (new);
|
||||||
|
+
|
||||||
|
+ if (LM_PREV (new) != prev_lm)
|
||||||
|
+ {
|
||||||
|
+ warning (_("Corrupted shared library list"));
|
||||||
|
+ free_so (new);
|
||||||
|
+ next_lm = 0;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* For SVR4 versions, the first entry in the link map is for the
|
||||||
|
inferior executable, so we must ignore it. For some versions of
|
||||||
|
SVR4, it has no name. For others (Solaris 2.3 for example), it
|
||||||
|
does have a name, so we can no longer use a missing name to
|
||||||
|
decide when to ignore it. */
|
||||||
|
- if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
|
||||||
|
+ else if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
|
||||||
|
{
|
||||||
|
info->main_lm_addr = new->lm_info->lm_addr;
|
||||||
|
free_so (new);
|
||||||
|
@@ -1182,12 +1197,18 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ prev_lm = lm;
|
||||||
|
+ lm = next_lm;
|
||||||
|
+
|
||||||
|
/* On Solaris, the dynamic linker is not in the normal list of
|
||||||
|
shared objects, so make sure we pick it up too. Having
|
||||||
|
symbol information for the dynamic linker is quite crucial
|
||||||
|
for skipping dynamic linker resolver code. */
|
||||||
|
if (lm == 0 && ldsomap == 0)
|
||||||
|
- lm = ldsomap = solib_svr4_r_ldsomap (info);
|
||||||
|
+ {
|
||||||
|
+ lm = ldsomap = solib_svr4_r_ldsomap (info);
|
||||||
|
+ prev_lm = 0;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
discard_cleanups (old_chain);
|
||||||
|
}
|
||||||
|
--- src/gdb/config/djgpp/fnchange.lst 2010/04/09 15:15:05 1.112
|
||||||
|
+++ src/gdb/config/djgpp/fnchange.lst 2010/04/23 21:44:19 1.113
|
||||||
|
@@ -397,6 +397,7 @@
|
||||||
|
@V@/gdb/testsuite/gdb.base/siginfo-obj.c @V@/gdb/testsuite/gdb.base/si-obj.c
|
||||||
|
@V@/gdb/testsuite/gdb.base/siginfo-addr.exp @V@/gdb/testsuite/gdb.base/si-addr.exp
|
||||||
|
@V@/gdb/testsuite/gdb.base/siginfo-obj.exp @V@/gdb/testsuite/gdb.base/si-obj.exp
|
||||||
|
+@V@/gdb/testsuite/gdb.base/solib-corrupted.exp @V@/gdb/testsuite/gdb.base/so-crptd.exp
|
||||||
|
@V@/gdb/testsuite/gdb.base/solib-disc.c @V@/gdb/testsuite/gdb.base/so-disc.c
|
||||||
|
@V@/gdb/testsuite/gdb.base/solib-display-lib.c @V@/gdb/testsuite/gdb.base/so-displib.c
|
||||||
|
@V@/gdb/testsuite/gdb.base/solib-display-main.c @V@/gdb/testsuite/gdb.base/so-dispmain.c
|
||||||
|
### src/gdb/testsuite/ChangeLog 2010/04/23 18:03:31 1.2252
|
||||||
|
### src/gdb/testsuite/ChangeLog 2010/04/23 21:44:20 1.2253
|
||||||
|
## -1,3 +1,8 @@
|
||||||
|
+2010-04-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
+
|
||||||
|
+ Fix deadlock on looped list of loaded shared objects.
|
||||||
|
+ * gdb.base/solib-corrupted.exp: New.
|
||||||
|
+
|
||||||
|
2010-04-23 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
|
* gdb.python/py-section-script.c: New file.
|
||||||
|
--- src/gdb/testsuite/gdb.base/solib-corrupted.exp
|
||||||
|
+++ src/gdb/testsuite/gdb.base/solib-corrupted.exp 2010-05-24 18:00:52.057995000 +0000
|
||||||
|
@@ -0,0 +1,46 @@
|
||||||
|
+# Copyright 2010 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+# This program is free software; you can redistribute it and/or modify
|
||||||
|
+# it under the terms of the GNU General Public License as published by
|
||||||
|
+# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
+# (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# This program is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+# GNU General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU General Public License
|
||||||
|
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+set testfile "solib-corrupted"
|
||||||
|
+set srcfile start.c
|
||||||
|
+
|
||||||
|
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
|
||||||
|
+ untested ${testfile}.exp
|
||||||
|
+ return -1
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+if ![runto_main] {
|
||||||
|
+ fail "Can't run to main"
|
||||||
|
+ return
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+gdb_test "info sharedlibrary" "" "normal list"
|
||||||
|
+
|
||||||
|
+# GDB checks there for matching L_PREV.
|
||||||
|
+set test "make solibs looping"
|
||||||
|
+gdb_test_multiple "p/x _r_debug->r_map->l_next = _r_debug->r_map" $test {
|
||||||
|
+ -re "(No symbol \"_r_debug\" in current context\\.|Attempt to extract a component of a value that is not a structure pointer\\.)\r\n$gdb_prompt $" {
|
||||||
|
+ # glibc debug info is not available and it is too difficult to find and
|
||||||
|
+ # parse it from this testcase without the gdb supporting functions.
|
||||||
|
+ verbose -log "no _r_debug symbol has been found"
|
||||||
|
+ xfail $test
|
||||||
|
+ untested ${testfile}.exp
|
||||||
|
+ return
|
||||||
|
+ }
|
||||||
|
+ -re " = 0x\[0-9a-f\]+\r\n$gdb_prompt $" {
|
||||||
|
+ pass $test
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+gdb_test "info sharedlibrary" "warning: Corrupted shared library list\r\n.*" "corrupted list"
|
||||||
|
|
15
gdb.spec
15
gdb.spec
|
@ -36,7 +36,7 @@ Version: 7.1
|
||||||
|
|
||||||
# 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: 21%{?_with_upstream:.upstream}%{dist}
|
Release: 22%{?_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
|
||||||
|
@ -480,6 +480,12 @@ Patch459: gdb-moribund-utrace-workaround.patch
|
||||||
# Fix crash on VLA bound referencing an optimized-out variable (BZ 591879).
|
# Fix crash on VLA bound referencing an optimized-out variable (BZ 591879).
|
||||||
Patch460: gdb-archer-vla-ref-optimizedout.patch
|
Patch460: gdb-archer-vla-ref-optimizedout.patch
|
||||||
|
|
||||||
|
# Remove core file when starting a process (BZ 594560).
|
||||||
|
Patch461: gdb-bz594560-core-vs-process.patch
|
||||||
|
|
||||||
|
# Import fix of TUI layout internal error (BZ 595475).
|
||||||
|
Patch462: gdb-bz595475-tui-layout.patch
|
||||||
|
|
||||||
BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
|
BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
|
||||||
Requires: readline%{?_isa}
|
Requires: readline%{?_isa}
|
||||||
BuildRequires: readline-devel%{?_isa}
|
BuildRequires: readline-devel%{?_isa}
|
||||||
|
@ -755,6 +761,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
|
||||||
%patch458 -p1
|
%patch458 -p1
|
||||||
%patch459 -p1
|
%patch459 -p1
|
||||||
%patch460 -p1
|
%patch460 -p1
|
||||||
|
%patch461 -p1
|
||||||
|
%patch462 -p1
|
||||||
|
|
||||||
%patch415 -p1
|
%patch415 -p1
|
||||||
%patch393 -p1
|
%patch393 -p1
|
||||||
|
@ -1087,6 +1095,11 @@ fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon May 24 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.1-22.fc13
|
||||||
|
- Remove core file when starting a process (BZ 594560).
|
||||||
|
- Fix lock up on loops in the solib chain (BZ 593926).
|
||||||
|
- Import fix of TUI layout internal error (BZ 595475).
|
||||||
|
|
||||||
* Sun May 16 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.1-21.fc13
|
* Sun May 16 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.1-21.fc13
|
||||||
- Make gdb-6.8-bz254229-gcore-prpsinfo.patch RHEL-5 /usr/bin/patch compatible
|
- Make gdb-6.8-bz254229-gcore-prpsinfo.patch RHEL-5 /usr/bin/patch compatible
|
||||||
(bugreported by Jonas Maebe).
|
(bugreported by Jonas Maebe).
|
||||||
|
|
Loading…
Reference in New Issue