From de9f421a3c3f30b7d13669d95592794c43925c33 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 27 Jun 2014 18:00:57 +0200 Subject: [PATCH] Rebase to FSF GDB 7.7.90.20140627 (pre-7.8 snapshot). --- .gitignore | 2 +- gdb-bfd-demangled-names.patch | 207 ---------------------- gdb-upstream.patch | 321 ---------------------------------- gdb-watchpoint-fork-fix.patch | 38 ---- gdb.spec | 21 +-- sources | 2 +- 6 files changed, 10 insertions(+), 581 deletions(-) delete mode 100644 gdb-bfd-demangled-names.patch delete mode 100644 gdb-upstream.patch delete mode 100644 gdb-watchpoint-fork-fix.patch diff --git a/.gitignore b/.gitignore index 5975d9c..e5461cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /gdb-libstdc++-v3-python-r155978.tar.bz2 -/gdb-7.7.90.20140613.tar.bz2 +/gdb-7.7.90.20140627.tar.bz2 diff --git a/gdb-bfd-demangled-names.patch b/gdb-bfd-demangled-names.patch deleted file mode 100644 index 72bd834..0000000 --- a/gdb-bfd-demangled-names.patch +++ /dev/null @@ -1,207 +0,0 @@ -Re: ASAN crash regression [Re: [PATCH 2/2] move the demangled_names_hash into the per-BFD] -https://sourceware.org/ml/gdb-patches/2014-06/msg00550.html - -Jan> ./configure ... -fsanitize=address -Jan> echo 'void f(){}main(){}'|gcc -x c++ - -g;ASAN_OPTIONS=symbolize=1 ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer ./gdb -batch a.out -ex 'file a.out' - -Readily seen with valgrind as well. - -Here's my proposed fix. - -Tom - -commit 3a93a67ad0ea3495f67c9708673345b73de2d806 -Author: Tom Tromey -Date: Mon Jun 16 03:17:19 2014 -0600 - - fix memory errors with demangled name hash - - This fixes a regression that Jan pointed out. - - The bug is that some names were allocated by dwarf2read on the objfile - obstack, but then passed to SYMBOL_SET_NAMES with copy_name=0. This - violates the invariant that the names must have a lifetime tied to the - lifetime of the BFD. - - The fix is to allocate names on the per-BFD obstack. - - I looked at all callers, direct or indirect, of SYMBOL_SET_NAMES that - pass copy_name=0. Note that only the ELF and DWARF readers do this; - other symbol readers were never updated (and perhaps cannot be, - depending on the details of the formats). This is why the patch is - relatively small. - - Built and regtested on x86-64 Fedora 20. - - 2014-06-16 Tom Tromey - - * dwarf2read.c (fixup_go_packaging, dwarf2_compute_name) - (dwarf2_physname, read_partial_die) - (guess_partial_die_structure_name, fixup_partial_die) - (guess_full_die_structure_name, anonymous_struct_prefix) - (dwarf2_name): Use per-BFD obstack. - -### a/gdb/ChangeLog -### b/gdb/ChangeLog -## -1,5 +1,13 @@ - 2014-06-16 Tom Tromey - -+ * dwarf2read.c (fixup_go_packaging, dwarf2_compute_name) -+ (dwarf2_physname, read_partial_die) -+ (guess_partial_die_structure_name, fixup_partial_die) -+ (guess_full_die_structure_name, anonymous_struct_prefix) -+ (dwarf2_name): Use per-BFD obstack. -+ -+2014-06-16 Tom Tromey -+ - * minsyms.h (prim_record_minimal_symbol) - (prim_record_minimal_symbol_and_info): Update comments. - ---- a/gdb/dwarf2read.c -+++ b/gdb/dwarf2read.c -@@ -7745,9 +7745,10 @@ fixup_go_packaging (struct dwarf2_cu *cu) - if (package_name != NULL) - { - struct objfile *objfile = cu->objfile; -- const char *saved_package_name = obstack_copy0 (&objfile->objfile_obstack, -- package_name, -- strlen (package_name)); -+ const char *saved_package_name -+ = obstack_copy0 (&objfile->per_bfd->storage_obstack, -+ package_name, -+ strlen (package_name)); - struct type *type = init_type (TYPE_CODE_MODULE, 0, 0, - saved_package_name, objfile); - struct symbol *sym; -@@ -8365,6 +8366,8 @@ dwarf2_compute_name (const char *name, - long length; - const char *prefix; - struct ui_file *buf; -+ char *intermediate_name; -+ const char *canonical_name = NULL; - - prefix = determine_prefix (die, cu); - buf = mem_fileopen (); -@@ -8541,19 +8544,25 @@ dwarf2_compute_name (const char *name, - } - } - -- name = ui_file_obsavestring (buf, &objfile->objfile_obstack, -- &length); -+ intermediate_name = ui_file_xstrdup (buf, &length); - ui_file_delete (buf); - - if (cu->language == language_cplus) -- { -- const char *cname -- = dwarf2_canonicalize_name (name, cu, -- &objfile->objfile_obstack); -+ canonical_name -+ = dwarf2_canonicalize_name (intermediate_name, cu, -+ &objfile->per_bfd->storage_obstack); -+ -+ /* If we only computed INTERMEDIATE_NAME, or if -+ INTERMEDIATE_NAME is already canonical, then we need to -+ copy it to the appropriate obstack. */ -+ if (canonical_name == NULL || canonical_name == intermediate_name) -+ name = obstack_copy0 (&objfile->per_bfd->storage_obstack, -+ intermediate_name, -+ strlen (intermediate_name)); -+ else -+ name = canonical_name; - -- if (cname != NULL) -- name = cname; -- } -+ xfree (intermediate_name); - } - } - -@@ -8562,7 +8571,7 @@ dwarf2_compute_name (const char *name, - - /* Return the fully qualified name of DIE, based on its DW_AT_name. - If scope qualifiers are appropriate they will be added. The result -- will be allocated on the objfile_obstack, or NULL if the DIE does -+ will be allocated on the storage_obstack, or NULL if the DIE does - not have a name. NAME may either be from a previous call to - dwarf2_name or NULL. - -@@ -8677,7 +8686,8 @@ dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu) - retval = canon; - - if (need_copy) -- retval = obstack_copy0 (&objfile->objfile_obstack, retval, strlen (retval)); -+ retval = obstack_copy0 (&objfile->per_bfd->storage_obstack, -+ retval, strlen (retval)); - - do_cleanups (back_to); - return retval; -@@ -15508,7 +15518,7 @@ read_partial_die (const struct die_reader_specs *reader, - default: - part_die->name - = dwarf2_canonicalize_name (DW_STRING (&attr), cu, -- &objfile->objfile_obstack); -+ &objfile->per_bfd->storage_obstack); - break; - } - break; -@@ -15793,7 +15803,7 @@ guess_partial_die_structure_name (struct partial_die_info *struct_pdi, - if (actual_class_name != NULL) - { - struct_pdi->name -- = obstack_copy0 (&cu->objfile->objfile_obstack, -+ = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack, - actual_class_name, - strlen (actual_class_name)); - xfree (actual_class_name); -@@ -15879,8 +15889,9 @@ fixup_partial_die (struct partial_die_info *part_die, - else - base = demangled; - -- part_die->name = obstack_copy0 (&cu->objfile->objfile_obstack, -- base, strlen (base)); -+ part_die->name -+ = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack, -+ base, strlen (base)); - xfree (demangled); - } - } -@@ -18557,7 +18568,7 @@ guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu) - && actual_name[actual_name_len - - die_name_len - 1] == ':') - name = -- obstack_copy0 (&cu->objfile->objfile_obstack, -+ obstack_copy0 (&cu->objfile->per_bfd->storage_obstack, - actual_name, - actual_name_len - die_name_len - 2); - } -@@ -18603,7 +18614,7 @@ anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu) - if (base == NULL || base == DW_STRING (attr) || base[-1] != ':') - return ""; - -- return obstack_copy0 (&cu->objfile->objfile_obstack, -+ return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack, - DW_STRING (attr), &base[-1] - DW_STRING (attr)); - } - -@@ -18943,8 +18954,9 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) - char *base; - - /* FIXME: we already did this for the partial symbol... */ -- DW_STRING (attr) = obstack_copy0 (&cu->objfile->objfile_obstack, -- demangled, strlen (demangled)); -+ DW_STRING (attr) -+ = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack, -+ demangled, strlen (demangled)); - DW_STRING_IS_CANONICAL (attr) = 1; - xfree (demangled); - -@@ -18967,7 +18979,7 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) - { - DW_STRING (attr) - = dwarf2_canonicalize_name (DW_STRING (attr), cu, -- &cu->objfile->objfile_obstack); -+ &cu->objfile->per_bfd->storage_obstack); - DW_STRING_IS_CANONICAL (attr) = 1; - } - return DW_STRING (attr); diff --git a/gdb-upstream.patch b/gdb-upstream.patch deleted file mode 100644 index 21a6d20..0000000 --- a/gdb-upstream.patch +++ /dev/null @@ -1,321 +0,0 @@ -http://sourceware.org/ml/gdb-patches/2014-06/msg00656.html -Subject: Re: Regression with default scheduler-locking=step [Re: [pushed] Consecutive step-overs trigger internal error.] - -On 06/17/2014 08:24 PM, Jan Kratochvil wrote: -> On Tue, 22 Apr 2014 20:24:28 +0200, Pedro Alves wrote: ->> Tested on x86_64 Fedora 17, native and gdbserver, and also native on ->> top of my "software single-step on x86_64" series. -> -> 483805cf9ea5a6dace41415d8830e93fccc49c43 is the first bad commit -> commit 483805cf9ea5a6dace41415d8830e93fccc49c43 -> Author: Pedro Alves -> Date: Tue Apr 22 15:00:56 2014 +0100 -> Consecutive step-overs trigger internal error. -> -> (gdb) next^M -> [Thread 0x7ffff7fda700 (LWP 27168) exited]^M -> [New LWP 27168]^M -> [Thread 0x7ffff74ee700 (LWP 27174) exited]^M -> process 27168 is executing new program: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.threads/thread-execl^M -> [Thread debugging using libthread_db enabled]^M -> Using host libthread_db library "/lib64/libthread_db.so.1".^M -> infrun.c:5225: internal-error: switch_back_to_stepped_thread: Assertion `!schedlock_applies (1)' failed.^M -> A problem internal to GDB has been detected,^M -> further debugging may prove unreliable.^M -> Quit this debugging session? (y or n) FAIL: gdb.threads/thread-execl.exp: get to main in new image (GDB internal error) -> Resyncing due to internal error. - -Thanks Jan. - -> -> The regressions happens only with the attached patch which I am not sure if it -> is considered as a valid FSF GDB regression or not but I think it is. - -If it worked before, then it's certainly a regression. The user is -free to do "set scheduler-locking step" herself. - -Here's a fix. Let me know what you think. - -8<--------------------------------- ->From f717378c16cb04f8350935a1336767d2541b36a5 Mon Sep 17 00:00:00 2001 -From: Pedro Alves -Date: Wed, 18 Jun 2014 14:20:31 +0100 -Subject: [PATCH] Fix next over threaded execl with "set scheduler-locking -Subject: [PATCH] Fix next over threaded execl with "set scheduler-locking - step". - -Running gdb.threads/thread-execl.exp with scheduler-locking set to -"step" reveals a problem: - - (gdb) next^M - [Thread 0x7ffff7fda700 (LWP 27168) exited]^M - [New LWP 27168]^M - [Thread 0x7ffff74ee700 (LWP 27174) exited]^M - process 27168 is executing new program: /home/jkratoch/redhat/gdb-clean/gdb/testsuite/gdb.threads/thread-execl^M - [Thread debugging using libthread_db enabled]^M - Using host libthread_db library "/lib64/libthread_db.so.1".^M - infrun.c:5225: internal-error: switch_back_to_stepped_thread: Assertion `!schedlock_applies (1)' failed.^M - A problem internal to GDB has been detected,^M - further debugging may prove unreliable.^M - Quit this debugging session? (y or n) FAIL: gdb.threads/thread-execl.exp: schedlock step: get to main in new image (GDB internal error) - -The assertion is correct. The issue is that GDB is mistakenly trying -to switch back to an exited thread, that was previously stepping when -it exited. This is exactly the sort of thing the test wants to make -sure doesn't happen: - - # Now set a breakpoint at `main', and step over the execl call. The - # breakpoint at main should be reached. GDB should not try to revert - # back to the old thread from the old image and resume stepping it - -We don't see this bug with schedlock off only because a different -sequence of events makes GDB manage to delete the thread instead of -marking it exited. - -This particular internal error can be fixed by making the loop over -all threads in switch_back_to_stepped_thread skip exited threads. -But, looking over other ALL_THREADS users, all either can or should be -skipping exited threads too. So for simplicity, this patch replaces -ALL_THREADS with a new macro that skips exited threads itself, and -updates everything to use it. - -Tested on x86_64 Fedora 20. - -gdb/ -2014-06-18 Pedro Alves - - * gdbthread.h (ALL_THREADS): Delete. - (ALL_NON_EXITED_THREADS): New macro. - * btrace.c (btrace_free_objfile): Use ALL_NON_EXITED_THREADS - instead of ALL_THREADS. - * infrun.c (find_thread_needs_step_over) - (switch_back_to_stepped_thread): Use ALL_NON_EXITED_THREADS - instead of ALL_THREADS. - * record-btrace.c (record_btrace_open) - (record_btrace_stop_recording, record_btrace_close) - (record_btrace_is_replaying, record_btrace_resume) - (record_btrace_find_thread_to_move, record_btrace_wait): Likewise. - * remote.c (append_pending_thread_resumptions): Likewise. - -gdb/testsuite/ -2014-06-18 Pedro Alves - - * gdb.threads/thread-execl.exp (do_test): New procedure, factored - out from ... - (top level): ... here. Iterate running tests under different - scheduler-locking settings. ---- - gdb/btrace.c | 2 +- - gdb/gdbthread.h | 8 ++++-- - gdb/infrun.c | 4 +-- - gdb/record-btrace.c | 14 +++++----- - gdb/remote.c | 2 +- - gdb/testsuite/gdb.threads/thread-execl.exp | 44 ++++++++++++++++++++---------- - gdb/thread.c | 2 +- - 7 files changed, 46 insertions(+), 30 deletions(-) - -diff --git a/gdb/btrace.c b/gdb/btrace.c -index 601eb41..87a171e 100644 ---- a/gdb/btrace.c -+++ b/gdb/btrace.c -@@ -958,7 +958,7 @@ btrace_free_objfile (struct objfile *objfile) - - DEBUG ("free objfile"); - -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - btrace_clear (tp); - } - -diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h -index 9f5dee6..64e37c3 100644 ---- a/gdb/gdbthread.h -+++ b/gdb/gdbthread.h -@@ -317,10 +317,12 @@ void thread_change_ptid (ptid_t old_ptid, ptid_t new_ptid); - typedef int (*thread_callback_func) (struct thread_info *, void *); - extern struct thread_info *iterate_over_threads (thread_callback_func, void *); - --/* Traverse all threads. */ -+/* Traverse all threads, except those that have THREAD_EXITED -+ state. */ - --#define ALL_THREADS(T) \ -- for (T = thread_list; T; T = T->next) -+#define ALL_NON_EXITED_THREADS(T) \ -+ for (T = thread_list; T; T = T->next) \ -+ if ((T)->state != THREAD_EXITED) - - extern int thread_count (void); - -diff --git a/gdb/infrun.c b/gdb/infrun.c -index 4e808d9..e8e26e0 100644 ---- a/gdb/infrun.c -+++ b/gdb/infrun.c -@@ -2160,7 +2160,7 @@ find_thread_needs_step_over (int step, struct thread_info *except) - return NULL; - } - -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - { - /* Ignore the EXCEPT thread. */ - if (tp == except) -@@ -5204,7 +5204,7 @@ switch_back_to_stepped_thread (struct execution_control_state *ecs) - step/next/etc. */ - stepping_thread = NULL; - step_over = NULL; -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - { - /* Ignore threads of processes we're not resuming. */ - if (!sched_multi -diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c -index e0c537a8..6a9bfe1 100644 ---- a/gdb/record-btrace.c -+++ b/gdb/record-btrace.c -@@ -206,7 +206,7 @@ record_btrace_open (char *args, int from_tty) - gdb_assert (record_btrace_thread_observer == NULL); - - disable_chain = make_cleanup (null_cleanup, NULL); -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - if (args == NULL || *args == 0 || number_is_in_list (args, tp->num)) - { - btrace_enable (tp); -@@ -238,7 +238,7 @@ record_btrace_stop_recording (struct target_ops *self) - - record_btrace_auto_disable (); - -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - if (tp->btrace.target != NULL) - btrace_disable (tp); - } -@@ -259,7 +259,7 @@ record_btrace_close (struct target_ops *self) - - /* We should have already stopped recording. - Tear down btrace in case we have not. */ -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - btrace_teardown (tp); - } - -@@ -835,7 +835,7 @@ record_btrace_is_replaying (struct target_ops *self) - { - struct thread_info *tp; - -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - if (btrace_is_replaying (tp)) - return 1; - -@@ -1522,7 +1522,7 @@ record_btrace_resume (struct target_ops *ops, ptid_t ptid, int step, - - /* Stop replaying other threads if the thread to resume is not replaying. */ - if (!btrace_is_replaying (tp) && execution_direction != EXEC_REVERSE) -- ALL_THREADS (other) -+ ALL_NON_EXITED_THREADS (other) - record_btrace_stop_replaying (other); - - /* As long as we're not replaying, just forward the request. */ -@@ -1572,7 +1572,7 @@ record_btrace_find_thread_to_move (ptid_t ptid) - return tp; - - /* Otherwise, find one other thread that has been resumed. */ -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - if ((tp->btrace.flags & BTHR_MOVE) != 0) - return tp; - -@@ -1777,7 +1777,7 @@ record_btrace_wait (struct target_ops *ops, ptid_t ptid, - - /* Stop all other threads. */ - if (!non_stop) -- ALL_THREADS (other) -+ ALL_NON_EXITED_THREADS (other) - other->btrace.flags &= ~BTHR_MOVE; - - /* Start record histories anew from the current position. */ -diff --git a/gdb/remote.c b/gdb/remote.c -index 6915dd8..b5318f1 100644 ---- a/gdb/remote.c -+++ b/gdb/remote.c -@@ -4626,7 +4626,7 @@ append_pending_thread_resumptions (char *p, char *endp, ptid_t ptid) - { - struct thread_info *thread; - -- ALL_THREADS (thread) -+ ALL_NON_EXITED_THREADS (thread) - if (ptid_match (thread->ptid, ptid) - && !ptid_equal (inferior_ptid, thread->ptid) - && thread->suspend.stop_signal != GDB_SIGNAL_0 -diff --git a/gdb/testsuite/gdb.threads/thread-execl.exp b/gdb/testsuite/gdb.threads/thread-execl.exp -index d837fe4..14b96d2 100644 ---- a/gdb/testsuite/gdb.threads/thread-execl.exp -+++ b/gdb/testsuite/gdb.threads/thread-execl.exp -@@ -28,19 +28,33 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ - return -1 - } - --clean_restart ${binfile} -- --runto_main -- --# Get ourselves to the thread that execs --gdb_breakpoint "thread_execler" --gdb_test "continue" ".*thread_execler.*" "continue to thread start" -- --# Now set a breakpoint at `main', and step over the execl call. The --# breakpoint at main should be reached. GDB should not try to revert --# back to the old thread from the old image and resume stepping it --# (since it is gone). --gdb_breakpoint "main" --gdb_test "next" ".*main.*" "get to main in new image" -+# Run the test proper. SCHEDLOCK specifies what scheduler-locking -+# should be set to. -+ -+proc do_test { schedlock } { -+ global binfile -+ -+ with_test_prefix "schedlock $schedlock" { -+ clean_restart ${binfile} -+ -+ if ![runto_main] { -+ return 0 -+ } -+ -+ # Get ourselves to the thread that execs. -+ gdb_breakpoint "thread_execler" -+ gdb_test "continue" ".*thread_execler.*" "continue to thread start" -+ -+ # Now set a breakpoint at `main', and step over the execl call. The -+ # breakpoint at main should be reached. GDB should not try to revert -+ # back to the old thread from the old image and resume stepping it -+ # (since it is gone). -+ gdb_breakpoint "main" -+ gdb_test_no_output "set scheduler-locking $schedlock" -+ gdb_test "next" ".*main.*" "get to main in new image" -+ } -+} - --return 0 -+foreach schedlock {"off" "step" "on"} { -+ do_test $schedlock -+} -diff --git a/gdb/thread.c b/gdb/thread.c -index 7bc5271..532149d 100644 ---- a/gdb/thread.c -+++ b/gdb/thread.c -@@ -1243,7 +1243,7 @@ thread_apply_all_command (char *cmd, int from_tty) - ta_cleanup.tp_array = tp_array; - ta_cleanup.count = tc; - -- ALL_THREADS (tp) -+ ALL_NON_EXITED_THREADS (tp) - { - tp_array[i] = tp; - tp->refcount++; --- -1.9.3 - - diff --git a/gdb-watchpoint-fork-fix.patch b/gdb-watchpoint-fork-fix.patch deleted file mode 100644 index 388d3a8..0000000 --- a/gdb-watchpoint-fork-fix.patch +++ /dev/null @@ -1,38 +0,0 @@ -http://sourceware.org/ml/gdb-patches/2014-06/msg00710.html -Subject: Re: Regression for watchpoint-fork.exp [Re: [PATCH v3 2/5] PR breakpoints/7143 - Watchpoint does not trigger when first set] - -On 06/19/2014 04:02 PM, Pedro Alves wrote: - ->> Attaching gzipped gdb.threads/watchpoint-fork-parent-st ->> from gcc-4.9.0-9.fc21.x86_64. -> -> Thanks, I can reproduce it. - -Hmm, I suspect this might be related to kernel-side validation -of DR_CONTROL vs DR0-3, like what we already handle in amd64_linux_prepare_to_resume. -And indeed this below makes the error go away. Not exactly sure why yet. - -[ patch extended by Jan Kratochvil ] - ---- gdb-7.7.90.20140613/gdb/i386-linux-nat.c.orig 2014-06-19 21:42:00.788611544 +0200 -+++ gdb-7.7.90.20140613/gdb/i386-linux-nat.c 2014-06-19 21:42:04.556614401 +0200 -@@ -778,6 +778,8 @@ i386_linux_prepare_to_resume (struct lwp - /* See amd64_linux_prepare_to_resume for Linux kernel note on - i386_linux_dr_set calls ordering. */ - -+ i386_linux_dr_set (lwp->ptid, DR_CONTROL, 0); -+ - for (i = DR_FIRSTADDR; i <= DR_LASTADDR; i++) - if (state->dr_ref_count[i] > 0) - { ---- gdb-7.7.90.20140613/gdb/amd64-linux-nat.c.orig 2014-06-19 21:40:37.582534392 +0200 -+++ gdb-7.7.90.20140613/gdb/amd64-linux-nat.c 2014-06-19 21:41:17.192570902 +0200 -@@ -415,6 +415,8 @@ amd64_linux_prepare_to_resume (struct lw - - Ensure DR_CONTROL gets written as the very last register here. */ - -+ amd64_linux_dr_set (lwp->ptid, DR_CONTROL, 0); -+ - for (i = DR_FIRSTADDR; i <= DR_LASTADDR; i++) - if (state->dr_ref_count[i] > 0) - { diff --git a/gdb.spec b/gdb.spec index 5920c21..3cbe242 100644 --- a/gdb.spec +++ b/gdb.spec @@ -18,14 +18,14 @@ Summary: A GNU source-level debugger for C, C++, Fortran, Go and other languages Name: %{?scl_prefix}gdb # Freeze it when GDB gets branched -%global snapsrc 20140613 +%global snapsrc 20140627 # See timestamp of source gnulib installed into gdb/gnulib/ . %global snapgnulib 20121213 -Version: 7.7.90.20140613 +Version: 7.7.90.%{snapsrc} # 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: 5%{?dist} +Release: 6%{?dist} License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL Group: Development/Debuggers @@ -218,7 +218,7 @@ Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch # Backported fixups post the source tarball. #Xdrop: Just backports. -Patch232: gdb-upstream.patch +#Patch232: gdb-upstream.patch # Testcase for PPC Power6/DFP instructions disassembly (BZ 230000). #=fedoratest+ppc @@ -531,12 +531,6 @@ Patch908: gdb-vla-intel-21of23.patch Patch909: gdb-vla-intel-22of23.patch Patch910: gdb-vla-intel-23of23.patch -# Fix ASAN crash regression with demangled names copy (Tom Tromey). -Patch911: gdb-bfd-demangled-names.patch - -# Fix gdb-7.8 watchpoint-fork.exp regression (Pedro Alves). -Patch913: gdb-watchpoint-fork-fix.patch - # Fix --with-system-readline with readline-6.3 patch 5. Patch914: gdb-readline-6.3.5.patch @@ -716,7 +710,7 @@ find -name "*.info*"|xargs rm -f %patch2 -p1 %patch349 -p1 -%patch232 -p1 +#patch232 -p1 %patch888 -p1 %patch889 -p1 %patch890 -p1 @@ -839,8 +833,6 @@ find -name "*.info*"|xargs rm -f %patch852 -p1 %patch863 -p1 %patch887 -p1 -%patch911 -p1 -%patch913 -p1 %patch914 -p1 %patch918 -p1 @@ -1328,6 +1320,9 @@ then fi %changelog +* Fri Jun 27 2014 Jan Kratochvil - 7.7.90.20140627-6.fc21 +- Rebase to FSF GDB 7.7.90.20140627 (pre-7.8 snapshot). + * Fri Jun 27 2014 Jan Kratochvil - 7.7.90.20140613-5.fc21 - Continue backtrace even if a frame filter throws an exception (Phil Muldoon). diff --git a/sources b/sources index f1c61d8..3c5cbbe 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 4981307aa9619bbec5b73261e4e41c8d gdb-libstdc++-v3-python-r155978.tar.bz2 -cf4ddceb79fef56b4146e14be72c8727 gdb-7.7.90.20140613.tar.bz2 +748f54dc55f6e21ce1235492629ef5d8 gdb-7.7.90.20140627.tar.bz2