- Fix crash on pending breakpoints with PIE (position-indep.-exec.) (BZ
505943).
This commit is contained in:
parent
b43585a77f
commit
8f2b36edb7
|
@ -28,8 +28,8 @@
|
|||
|
||||
Index: gdb-6.8.50.20090302/gdb/amd64-tdep.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/amd64-tdep.c 2009-05-10 21:36:29.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/amd64-tdep.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/amd64-tdep.c 2009-06-15 13:00:53.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/amd64-tdep.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "regcache.h"
|
||||
#include "regset.h"
|
||||
|
@ -134,8 +134,8 @@ Index: gdb-6.8.50.20090302/gdb/amd64-tdep.c
|
|||
|
||||
Index: gdb-6.8.50.20090302/gdb/auxv.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/auxv.c 2009-05-10 21:36:27.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/auxv.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/auxv.c 2009-06-15 13:00:50.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/auxv.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -81,7 +81,7 @@ procfs_xfer_auxv (struct target_ops *ops
|
||||
Return 1 if an entry was read into *TYPEP and *VALP. */
|
||||
static int
|
||||
|
@ -227,7 +227,7 @@ Index: gdb-6.8.50.20090302/gdb/auxv.c
|
|||
Index: gdb-6.8.50.20090302/gdb/auxv.h
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/auxv.h 2009-01-03 06:57:50.000000000 +0100
|
||||
+++ gdb-6.8.50.20090302/gdb/auxv.h 2009-05-10 21:41:23.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/auxv.h 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -36,14 +36,14 @@ struct target_ops; /* Forward declarati
|
||||
Return 1 if an entry was read into *TYPEP and *VALP. */
|
||||
extern int target_auxv_parse (struct target_ops *ops,
|
||||
|
@ -247,8 +247,8 @@ Index: gdb-6.8.50.20090302/gdb/auxv.h
|
|||
extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
|
||||
Index: gdb-6.8.50.20090302/gdb/breakpoint.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/breakpoint.c 2009-05-10 21:36:30.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/breakpoint.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/breakpoint.c 2009-06-15 13:00:55.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/breakpoint.c 2009-06-15 13:07:58.000000000 +0200
|
||||
@@ -3920,7 +3920,8 @@ describe_other_breakpoints (CORE_ADDR pc
|
||||
printf_filtered (" (thread %d)", b->thread);
|
||||
printf_filtered ("%s%s ",
|
||||
|
@ -276,7 +276,7 @@ Index: gdb-6.8.50.20090302/gdb/breakpoint.c
|
|||
+ if (((b->type == bp_breakpoint) ||
|
||||
+ (b->type == bp_hardware_breakpoint)) &&
|
||||
+ b->enable_state == bp_enabled &&
|
||||
+ !b->loc->duplicate)
|
||||
+ b->loc != NULL && !b->loc->duplicate)
|
||||
+ {
|
||||
+ b->enable_state = bp_startup_disabled;
|
||||
+ if (!silent)
|
||||
|
@ -323,8 +323,8 @@ Index: gdb-6.8.50.20090302/gdb/breakpoint.c
|
|||
struct breakpoint_ops *ops)
|
||||
Index: gdb-6.8.50.20090302/gdb/breakpoint.h
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/breakpoint.h 2009-05-10 21:36:27.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/breakpoint.h 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/breakpoint.h 2009-06-15 13:00:50.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/breakpoint.h 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -127,6 +127,7 @@ enum enable_state
|
||||
automatically enabled and reset when the call
|
||||
"lands" (either completes, or stops at another
|
||||
|
@ -346,8 +346,8 @@ Index: gdb-6.8.50.20090302/gdb/breakpoint.h
|
|||
|
||||
Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c 2009-05-10 21:36:30.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/dwarf2read.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c 2009-06-15 13:00:55.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/dwarf2read.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -1438,7 +1438,7 @@ dwarf2_build_psymtabs (struct objfile *o
|
||||
else
|
||||
dwarf2_per_objfile->loc_buffer = NULL;
|
||||
|
@ -359,8 +359,8 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
|
|||
{
|
||||
Index: gdb-6.8.50.20090302/gdb/elfread.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/elfread.c 2009-05-10 21:36:27.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/elfread.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/elfread.c 2009-06-15 13:00:50.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/elfread.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -680,7 +680,7 @@ elf_symfile_read (struct objfile *objfil
|
||||
/* If we are reinitializing, or if we have never loaded syms yet,
|
||||
set table to empty. MAINLINE is cleared so that *_read_psymtab
|
||||
|
@ -372,8 +372,8 @@ Index: gdb-6.8.50.20090302/gdb/elfread.c
|
|||
mainline = 0;
|
||||
Index: gdb-6.8.50.20090302/gdb/infrun.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/infrun.c 2009-05-10 21:36:30.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/infrun.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/infrun.c 2009-06-15 13:00:55.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/infrun.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -3354,6 +3354,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
|
||||
#endif
|
||||
target_terminal_inferior ();
|
||||
|
@ -388,8 +388,8 @@ Index: gdb-6.8.50.20090302/gdb/infrun.c
|
|||
and place breakpoints in initializer routines for
|
||||
Index: gdb-6.8.50.20090302/gdb/objfiles.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/objfiles.c 2009-05-10 21:36:42.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/objfiles.c 2009-05-10 21:41:36.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/objfiles.c 2009-06-15 13:00:56.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/objfiles.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -52,6 +52,9 @@
|
||||
#include "exec.h"
|
||||
#include "varobj.h"
|
||||
|
@ -433,8 +433,8 @@ Index: gdb-6.8.50.20090302/gdb/objfiles.c
|
|||
linkage unit, gdb used to do these things whenever the monolithic
|
||||
Index: gdb-6.8.50.20090302/gdb/solib-svr4.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/solib-svr4.c 2009-05-10 21:36:29.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/solib-svr4.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/solib-svr4.c 2009-06-15 13:00:54.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/solib-svr4.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "exec.h"
|
||||
#include "auxv.h"
|
||||
|
@ -1119,7 +1119,7 @@ Index: gdb-6.8.50.20090302/gdb/solib-svr4.c
|
|||
Index: gdb-6.8.50.20090302/gdb/solib.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/solib.c 2009-02-21 17:14:49.000000000 +0100
|
||||
+++ gdb-6.8.50.20090302/gdb/solib.c 2009-05-10 21:41:23.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/solib.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -81,6 +81,8 @@ set_solib_ops (struct gdbarch *gdbarch,
|
||||
|
||||
/* external data declarations */
|
||||
|
@ -1309,7 +1309,7 @@ Index: gdb-6.8.50.20090302/gdb/solib.c
|
|||
Index: gdb-6.8.50.20090302/gdb/solist.h
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/solist.h 2009-02-04 09:42:11.000000000 +0100
|
||||
+++ gdb-6.8.50.20090302/gdb/solist.h 2009-05-10 21:41:23.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/solist.h 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -61,6 +61,8 @@ struct so_list
|
||||
bfd *abfd;
|
||||
char symbols_loaded; /* flag: symbols read in yet? */
|
||||
|
@ -1332,8 +1332,8 @@ Index: gdb-6.8.50.20090302/gdb/solist.h
|
|||
#endif
|
||||
Index: gdb-6.8.50.20090302/gdb/symfile-mem.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/symfile-mem.c 2009-05-10 21:36:28.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/symfile-mem.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/symfile-mem.c 2009-06-15 13:00:52.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/symfile-mem.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -116,7 +116,7 @@ symbol_file_add_from_memory (struct bfd
|
||||
}
|
||||
|
||||
|
@ -1345,8 +1345,8 @@ Index: gdb-6.8.50.20090302/gdb/symfile-mem.c
|
|||
reinit_frame_cache ();
|
||||
Index: gdb-6.8.50.20090302/gdb/symfile.c
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/symfile.c 2009-05-10 21:37:51.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/symfile.c 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/symfile.c 2009-06-15 13:00:56.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/symfile.c 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -47,6 +47,7 @@
|
||||
#include "readline/readline.h"
|
||||
#include "gdb_assert.h"
|
||||
|
@ -1417,7 +1417,7 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
|
|||
free_all_objfiles ();
|
||||
|
||||
/* solib descriptors may have handles to objfiles. Since their
|
||||
@@ -3367,6 +3376,8 @@ reread_symbols (void)
|
||||
@@ -3375,6 +3384,8 @@ reread_symbols (void)
|
||||
/* Discard cleanups as symbol reading was successful. */
|
||||
discard_cleanups (old_cleanups);
|
||||
|
||||
|
@ -1428,8 +1428,8 @@ Index: gdb-6.8.50.20090302/gdb/symfile.c
|
|||
again now. */
|
||||
Index: gdb-6.8.50.20090302/gdb/target.h
|
||||
===================================================================
|
||||
--- gdb-6.8.50.20090302.orig/gdb/target.h 2009-05-10 21:36:29.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/target.h 2009-05-10 21:41:23.000000000 +0200
|
||||
--- gdb-6.8.50.20090302.orig/gdb/target.h 2009-06-15 13:00:54.000000000 +0200
|
||||
+++ gdb-6.8.50.20090302/gdb/target.h 2009-06-15 13:00:56.000000000 +0200
|
||||
@@ -542,7 +542,7 @@ struct target_ops
|
||||
Return -1 if there is insufficient buffer for a whole entry.
|
||||
Return 1 if an entry was read into *TYPEP and *VALP. */
|
||||
|
|
|
@ -873,7 +873,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.pie/break.exp
|
|||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.pie/break.exp 2008-12-09 17:24:34.000000000 +0100
|
||||
@@ -0,0 +1,973 @@
|
||||
@@ -0,0 +1,977 @@
|
||||
+# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
+# 2000, 2002, 2003, 2004
|
||||
+# Free Software Foundation, Inc.
|
||||
|
@ -1055,6 +1055,9 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.pie/break.exp
|
|||
+set bp_location8 [gdb_get_line_number "set breakpoint 8 here" $srcfile1]
|
||||
+set bp_location9 [gdb_get_line_number "set breakpoint 9 here" $srcfile1]
|
||||
+
|
||||
+# Test a pending breakpoint in PIE executable does not crash later GDB.
|
||||
+gdb_breakpoint "non_existent_function" allow-pending
|
||||
+
|
||||
+gdb_test "info break" \
|
||||
+ "Num\[ \]+Type\[ \]+Disp Enb Address\[ \]+What.*
|
||||
+\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$main_line.*
|
||||
|
@ -1064,7 +1067,8 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.pie/break.exp
|
|||
+\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.*
|
||||
+\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location2.*
|
||||
+\[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_if_conditional at .*$srcfile:$bp_location3.*
|
||||
+\[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_while_conditional at .*$srcfile:$bp_location4" \
|
||||
+\[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_while_conditional at .*$srcfile:$bp_location4.*
|
||||
+\[0-9\]+\[\t \]+breakpoint keep y.* <PENDING> *non_existent_function" \
|
||||
+ "breakpoint info"
|
||||
+
|
||||
+# FIXME: The rest of this test doesn't work with anything that can't
|
||||
|
@ -1490,7 +1494,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.pie/break.exp
|
|||
+}
|
||||
+send_gdb "print marker2(99)\n"
|
||||
+gdb_expect {
|
||||
+ -re "The program being debugged stopped while in a function called from GDB.\r\nWhen the function .marker2$proto. is done executing, GDB will silently\r\nstop .instead of continuing to evaluate the expression containing\r\nthe function call...*$gdb_prompt $"\
|
||||
+ -re "The program being debugged stopped while in a function called from GDB.\r\nEvaluation of the expression containing the function\r\n.marker2$proto. will be abandoned.\r\nWhen the function is done executing, GDB will silently stop.\r\n$gdb_prompt $"\
|
||||
+ {pass "hit breakpoint on called function"}
|
||||
+ -re "$gdb_prompt $"\
|
||||
+ {fail "hit breakpoint on called function"}
|
||||
|
|
5
gdb.spec
5
gdb.spec
|
@ -14,7 +14,7 @@ Version: 6.8.50.20090302
|
|||
|
||||
# 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: 26%{?_with_upstream:.upstream}%{?dist}
|
||||
Release: 27%{?_with_upstream:.upstream}%{?dist}
|
||||
|
||||
License: GPLv3+
|
||||
Group: Development/Debuggers
|
||||
|
@ -876,6 +876,9 @@ fi
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Mon Jun 15 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-27
|
||||
- Fix crash on pending breakpoints with PIE (position-indep.-exec.) (BZ 505943).
|
||||
|
||||
* Fri Jun 12 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-26
|
||||
- Fix an occasional crash during printing of missing debuginfo rpms (BZ 505401).
|
||||
|
||||
|
|
Loading…
Reference in New Issue