Rebase to 7.9-branch snapshot 7.8.90.20150202.

- Temporarily disable dg-extract-results.py to fix gdb.sum sorting.
This commit is contained in:
Jan Kratochvil 2015-02-02 23:09:42 +01:00
parent 2f7f533ae7
commit 072837144c
14 changed files with 1054 additions and 1033 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
/gdb-libstdc++-v3-python-r155978.tar.bz2
/gdb-7.8.50.20150108.tar.xz
/gdb-7.8.90.20150202.tar.xz

View File

@ -474,7 +474,7 @@ Index: gdb-7.6/gdb/testsuite/gdb.threads/threadcrash.sh
+ local FAILURES=0
+
+ mustNotHave '??' || ((FAILURES++))
+ mustHaveCorrectAmount 12 threadcrash.c: || ((FAILURES++))
+ mustHaveCorrectAmount 11 threadcrash.c: || ((FAILURES++))
+
+ mustHaveSevenThreads || ((FAILURES++))
+ mustHaveSequence sleep "makeSyscall (ignored=" || ((FAILURES++))

View File

@ -21,10 +21,10 @@
Port to GDB-6.8pre.
Index: gdb-7.8.50.20141228/gdb/infrun.c
Index: gdb-7.8.90.20150125/gdb/infrun.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/infrun.c 2014-12-28 21:33:41.301547880 +0100
+++ gdb-7.8.50.20141228/gdb/infrun.c 2015-01-01 17:00:08.212920690 +0100
--- gdb-7.8.90.20150125.orig/gdb/infrun.c 2015-01-25 08:36:16.651716159 +0100
+++ gdb-7.8.90.20150125/gdb/infrun.c 2015-01-25 08:36:26.491758571 +0100
@@ -86,7 +86,7 @@ static void follow_inferior_reset_breakp
static void set_schedlock_func (char *args, int from_tty,
struct cmd_list_element *c);
@ -120,7 +120,7 @@ Index: gdb-7.8.50.20141228/gdb/infrun.c
/* Wait for it to stop (if not standalone)
and in any case decode why it stopped, and act accordingly. */
@@ -5674,14 +5690,16 @@ switch_back_to_stepped_thread (struct ex
@@ -5684,14 +5700,16 @@ switch_back_to_stepped_thread (struct ex
/* Is thread TP in the middle of single-stepping? */
@ -142,11 +142,11 @@ Index: gdb-7.8.50.20141228/gdb/infrun.c
}
/* Inferior has stepped into a subroutine call with source code that
Index: gdb-7.8.50.20141228/gdb/linux-nat.c
Index: gdb-7.8.90.20150125/gdb/linux-nat.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/linux-nat.c 2014-12-28 21:33:41.303547882 +0100
+++ gdb-7.8.50.20141228/gdb/linux-nat.c 2014-12-28 21:33:45.827551687 +0100
@@ -2519,7 +2519,11 @@ static int
--- gdb-7.8.90.20150125.orig/gdb/linux-nat.c 2015-01-25 08:36:16.653716168 +0100
+++ gdb-7.8.90.20150125/gdb/linux-nat.c 2015-01-25 08:36:26.492758576 +0100
@@ -2648,7 +2648,11 @@ static int
select_singlestep_lwp_callback (struct lwp_info *lp, void *data)
{
if (lp->last_resume_kind == resume_step
@ -159,10 +159,10 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
return 1;
else
return 0;
Index: gdb-7.8.50.20141228/gdb/linux-nat.h
Index: gdb-7.8.90.20150125/gdb/linux-nat.h
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/linux-nat.h 2014-12-28 21:33:41.304547882 +0100
+++ gdb-7.8.50.20141228/gdb/linux-nat.h 2014-12-28 21:33:45.827551687 +0100
--- gdb-7.8.90.20150125.orig/gdb/linux-nat.h 2015-01-25 08:36:16.653716168 +0100
+++ gdb-7.8.90.20150125/gdb/linux-nat.h 2015-01-25 08:36:44.948838126 +0100
@@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@ -171,21 +171,21 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.h
#include <signal.h>
@@ -59,8 +60,8 @@ struct lwp_info
/* If non-zero, a pending wait status. */
int status;
@@ -88,8 +89,8 @@ struct lwp_info
running and not stepping, this is 0. */
CORE_ADDR stop_pc;
- /* Non-zero if we were stepping this LWP. */
- int step;
+ /* The kind of stepping of this LWP. */
+ enum resume_step step;
/* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data
watchpoint trap. */
Index: gdb-7.8.50.20141228/gdb/infrun.h
/* The reason the LWP last stopped, if we need to track it
(breakpoint, watchpoint, etc.) */
Index: gdb-7.8.90.20150125/gdb/infrun.h
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/infrun.h 2014-12-28 21:33:45.827551687 +0100
+++ gdb-7.8.50.20141228/gdb/infrun.h 2014-12-28 21:34:13.516574981 +0100
--- gdb-7.8.90.20150125.orig/gdb/infrun.h 2015-01-25 08:36:16.654716172 +0100
+++ gdb-7.8.90.20150125/gdb/infrun.h 2015-01-25 08:36:26.493758580 +0100
@@ -92,7 +92,14 @@ extern void proceed (CORE_ADDR, enum gdb
/* The `resume' routine should only be called in special circumstances.
@ -202,10 +202,10 @@ Index: gdb-7.8.50.20141228/gdb/infrun.h
/* Return a ptid representing the set of threads that we will proceed,
in the perspective of the user/frontend. */
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp 2014-12-28 21:33:41.304547882 +0100
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp 2014-12-28 21:33:45.827551687 +0100
--- gdb-7.8.90.20150125.orig/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp 2015-01-25 08:36:16.654716172 +0100
+++ gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp 2015-01-25 08:36:26.493758580 +0100
@@ -97,7 +97,7 @@ gdb_test "set debug infrun 1"
gdb_test \

View File

@ -1,7 +1,7 @@
Index: gdb-7.8.50.20141228/gdb/linux-nat.c
Index: gdb-7.8.90.20150125/gdb/linux-nat.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/linux-nat.c 2015-01-05 22:52:01.115978026 +0100
+++ gdb-7.8.50.20141228/gdb/linux-nat.c 2015-01-05 22:52:23.147074710 +0100
--- gdb-7.8.90.20150125.orig/gdb/linux-nat.c 2015-01-25 08:42:49.381408899 +0100
+++ gdb-7.8.90.20150125/gdb/linux-nat.c 2015-01-25 08:43:16.378525322 +0100
@@ -174,6 +174,9 @@ blocked. */
static struct target_ops *linux_ops;
static struct target_ops linux_ops_saved;
@ -12,7 +12,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
/* The method to call, if any, when a new thread is attached. */
static void (*linux_nat_new_thread) (struct lwp_info *);
@@ -915,6 +918,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
@@ -924,6 +927,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
if (debug_linux_nat)
fprintf_unfiltered (gdb_stdlog,
"LNPAW: Attaching to a stopped process\n");
@ -20,7 +20,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
/* The process is definitely stopped. It is in a job control
stop, unless the kernel predates the TASK_STOPPED /
@@ -1337,6 +1341,9 @@ get_pending_status (struct lwp_info *lp,
@@ -1424,6 +1428,9 @@ get_pending_status (struct lwp_info *lp,
gdb_signal_to_string (signo));
}
@ -30,7 +30,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
return 0;
}
@@ -1450,6 +1457,8 @@ linux_nat_detach (struct target_ops *ops
@@ -1537,6 +1544,8 @@ linux_nat_detach (struct target_ops *ops
}
else
linux_ops->to_detach (ops, args, from_tty);
@ -38,8 +38,8 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
+ pid_was_stopped = 0;
}
/* Resume LP. */
@@ -1631,6 +1640,14 @@ linux_nat_resume (struct target_ops *ops
/* Resume execution of the inferior process. If STEP is nonzero,
@@ -1741,6 +1750,14 @@ linux_nat_resume (struct target_ops *ops
return;
}
@ -54,7 +54,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
if (resume_many)
iterate_over_lwps (ptid, linux_nat_resume_callback, lp);
@@ -3696,6 +3713,8 @@ linux_nat_mourn_inferior (struct target_
@@ -3723,6 +3740,8 @@ linux_nat_mourn_inferior (struct target_
/* Let the arch-specific native code know this process is gone. */
linux_nat_forget_process (pid);
@ -63,10 +63,10 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
}
/* Convert a native/host siginfo object, into/from the siginfo in the
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/attach-stopped.exp
Index: gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-01-05 22:52:01.115978026 +0100
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-01-05 22:52:23.148074714 +0100
--- gdb-7.8.90.20150125.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-01-25 08:42:49.382408903 +0100
+++ gdb-7.8.90.20150125/gdb/testsuite/gdb.threads/attach-stopped.exp 2015-01-25 08:43:16.379525327 +0100
@@ -61,7 +61,65 @@ proc corefunc { threadtype } {
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
@ -134,10 +134,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.threads/attach-stopped.exp
set test "$threadtype: attach2 to stopped, after setting file"
gdb_test_multiple "attach $testpid" "$test" {
Index: gdb-7.8.50.20141228/gdb/infrun.c
Index: gdb-7.8.90.20150125/gdb/infrun.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/infrun.c 2015-01-05 22:42:48.773501429 +0100
+++ gdb-7.8.50.20141228/gdb/infrun.c 2015-01-05 22:53:47.274443903 +0100
--- gdb-7.8.90.20150125.orig/gdb/infrun.c 2015-01-25 08:42:49.385408916 +0100
+++ gdb-7.8.90.20150125/gdb/infrun.c 2015-01-25 08:43:16.381525335 +0100
@@ -600,6 +600,11 @@ holding the child stopped. Try \"set de
child_pid);
}

View File

@ -37,10 +37,10 @@ gdb/gdbserver/
(linux_create_inferior, linux_tracefork_child): Call it instead of
direct ptrace.
Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c
Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/nat/linux-ptrace.c 2015-01-01 21:38:14.691209094 +0100
+++ gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c 2015-01-01 21:39:34.670157506 +0100
--- gdb-7.8.90.20150125.orig/gdb/nat/linux-ptrace.c 2015-01-25 08:36:55.710884511 +0100
+++ gdb-7.8.90.20150125/gdb/nat/linux-ptrace.c 2015-01-25 08:38:43.157347627 +0100
@@ -25,6 +25,10 @@
#include <stdint.h>
@ -60,8 +60,8 @@ Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c
+ linux_ptrace_create_warnings (buffer);
}
#if defined __i386__ || defined __x86_64__
@@ -568,6 +574,22 @@ linux_ptrace_init_warnings (void)
/* See linux-ptrace.h. */
@@ -595,6 +601,22 @@ linux_ptrace_init_warnings (void)
linux_ptrace_test_ret_to_nx ();
}
@ -84,23 +84,23 @@ Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.c
/* Set additional ptrace flags to use. Some such flags may be checked
by the implementation above. This function must be called before
any other function in this file; otherwise the flags may not take
Index: gdb-7.8.50.20141228/gdb/nat/linux-ptrace.h
Index: gdb-7.8.90.20150125/gdb/nat/linux-ptrace.h
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/nat/linux-ptrace.h 2015-01-01 21:38:21.280204844 +0100
+++ gdb-7.8.50.20141228/gdb/nat/linux-ptrace.h 2015-01-01 21:39:00.542179519 +0100
@@ -90,6 +90,7 @@ struct buffer;
--- gdb-7.8.90.20150125.orig/gdb/nat/linux-ptrace.h 2015-01-25 08:37:02.800915071 +0100
+++ gdb-7.8.90.20150125/gdb/nat/linux-ptrace.h 2015-01-25 08:38:16.565233009 +0100
@@ -98,6 +98,7 @@ extern void linux_ptrace_attach_fail_rea
extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
extern void linux_ptrace_attach_fail_reason (pid_t pid, struct buffer *buffer);
extern void linux_ptrace_init_warnings (void);
+extern void linux_ptrace_create_warnings (struct buffer *buffer);
extern void linux_enable_event_reporting (pid_t pid, int attached);
extern void linux_disable_event_reporting (pid_t pid);
extern int linux_supports_tracefork (void);
Index: gdb-7.8.50.20141228/gdb/configure.ac
Index: gdb-7.8.90.20150125/gdb/configure.ac
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/configure.ac 2015-01-01 21:38:14.692209094 +0100
+++ gdb-7.8.50.20141228/gdb/configure.ac 2015-01-01 21:38:21.281204843 +0100
@@ -2116,6 +2116,10 @@ case $host_os in
--- gdb-7.8.90.20150125.orig/gdb/configure.ac 2015-01-25 08:36:55.712884520 +0100
+++ gdb-7.8.90.20150125/gdb/configure.ac 2015-01-25 08:37:02.801915075 +0100
@@ -2117,6 +2117,10 @@ case $host_os in
esac
AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
@ -111,10 +111,10 @@ Index: gdb-7.8.50.20141228/gdb/configure.ac
dnl Handle optional features that can be enabled.
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
Index: gdb-7.8.50.20141228/gdb/gdbserver/configure.ac
Index: gdb-7.8.90.20150125/gdb/gdbserver/configure.ac
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/gdbserver/configure.ac 2015-01-01 21:38:14.693209093 +0100
+++ gdb-7.8.50.20141228/gdb/gdbserver/configure.ac 2015-01-01 21:38:21.281204843 +0100
--- gdb-7.8.90.20150125.orig/gdb/gdbserver/configure.ac 2015-01-25 08:36:55.712884520 +0100
+++ gdb-7.8.90.20150125/gdb/gdbserver/configure.ac 2015-01-25 08:37:02.801915075 +0100
@@ -461,6 +461,10 @@ if $want_ipa ; then
fi
fi
@ -126,11 +126,11 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/configure.ac
AC_SUBST(GDBSERVER_DEPFILES)
AC_SUBST(GDBSERVER_LIBS)
AC_SUBST(srv_xmlbuiltin)
Index: gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c
Index: gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/gdbserver/linux-low.c 2015-01-01 21:38:14.695209091 +0100
+++ gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c 2015-01-01 21:38:21.282204843 +0100
@@ -537,6 +537,29 @@ add_lwp (ptid_t ptid)
--- gdb-7.8.90.20150125.orig/gdb/gdbserver/linux-low.c 2015-01-25 08:36:55.714884529 +0100
+++ gdb-7.8.90.20150125/gdb/gdbserver/linux-low.c 2015-01-25 08:37:02.803915084 +0100
@@ -591,6 +591,29 @@ add_lwp (ptid_t ptid)
return lwp;
}
@ -160,7 +160,7 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c
/* Start an inferior process and returns its pid.
ALLARGS is a vector of program-name and args. */
@@ -578,7 +601,7 @@ linux_create_inferior (char *program, ch
@@ -632,7 +655,7 @@ linux_create_inferior (char *program, ch
if (pid == 0)
{
close_most_fds ();
@ -169,11 +169,11 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/linux-low.c
#ifndef __ANDROID__ /* Bionic doesn't use SIGRTMIN the way glibc does. */
signal (__SIGRTMIN + 1, SIG_DFL);
Index: gdb-7.8.50.20141228/gdb/inf-ptrace.c
Index: gdb-7.8.90.20150125/gdb/inf-ptrace.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/inf-ptrace.c 2015-01-01 21:38:14.695209091 +0100
+++ gdb-7.8.50.20141228/gdb/inf-ptrace.c 2015-01-01 21:38:21.282204843 +0100
@@ -66,7 +66,15 @@ static void
--- gdb-7.8.90.20150125.orig/gdb/inf-ptrace.c 2015-01-25 08:36:55.715884533 +0100
+++ gdb-7.8.90.20150125/gdb/inf-ptrace.c 2015-01-25 08:37:02.803915084 +0100
@@ -67,7 +67,15 @@ static void
inf_ptrace_me (void)
{
/* "Trace me, Dr. Memory!" */
@ -189,11 +189,11 @@ Index: gdb-7.8.50.20141228/gdb/inf-ptrace.c
}
/* Start a new inferior Unix child process. EXEC_FILE is the file to
Index: gdb-7.8.50.20141228/gdb/linux-nat.c
Index: gdb-7.8.90.20150125/gdb/linux-nat.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/linux-nat.c 2015-01-01 21:38:14.697209090 +0100
+++ gdb-7.8.50.20141228/gdb/linux-nat.c 2015-01-01 21:38:21.283204842 +0100
@@ -1099,6 +1099,7 @@ linux_nat_create_inferior (struct target
--- gdb-7.8.90.20150125.orig/gdb/linux-nat.c 2015-01-25 08:36:55.717884541 +0100
+++ gdb-7.8.90.20150125/gdb/linux-nat.c 2015-01-25 08:37:52.054127362 +0100
@@ -1109,6 +1109,7 @@ linux_nat_create_inferior (struct target
#ifdef HAVE_PERSONALITY
int personality_orig = 0, personality_set = 0;
#endif /* HAVE_PERSONALITY */
@ -201,7 +201,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
/* The fork_child mechanism is synchronous and calls target_wait, so
we have to mask the async mode. */
@@ -1123,7 +1124,10 @@ linux_nat_create_inferior (struct target
@@ -1133,7 +1134,10 @@ linux_nat_create_inferior (struct target
/* Make sure we report all signals during startup. */
linux_nat_pass_signals (ops, 0, NULL);
@ -213,7 +213,7 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
#ifdef HAVE_PERSONALITY
if (personality_set)
@@ -1135,6 +1139,24 @@ linux_nat_create_inferior (struct target
@@ -1145,6 +1149,24 @@ linux_nat_create_inferior (struct target
safe_strerror (errno));
}
#endif /* HAVE_PERSONALITY */
@ -237,11 +237,11 @@ Index: gdb-7.8.50.20141228/gdb/linux-nat.c
+ }
}
static void
Index: gdb-7.8.50.20141228/gdb/config.in
/* Callback for linux_proc_attach_tgid_threads. Attach to PTID if not
Index: gdb-7.8.90.20150125/gdb/config.in
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/config.in 2015-01-01 21:38:14.697209090 +0100
+++ gdb-7.8.50.20141228/gdb/config.in 2015-01-01 21:38:21.284204842 +0100
--- gdb-7.8.90.20150125.orig/gdb/config.in 2015-01-25 08:36:55.718884546 +0100
+++ gdb-7.8.90.20150125/gdb/config.in 2015-01-25 08:37:02.805915092 +0100
@@ -213,6 +213,9 @@
/* Define if librpm library is being used. */
#undef HAVE_LIBRPM
@ -262,11 +262,11 @@ Index: gdb-7.8.50.20141228/gdb/config.in
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
Index: gdb-7.8.50.20141228/gdb/configure
Index: gdb-7.8.90.20150125/gdb/configure
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/configure 2015-01-01 21:38:14.701209087 +0100
+++ gdb-7.8.50.20141228/gdb/configure 2015-01-01 21:38:21.286204840 +0100
@@ -13269,6 +13269,64 @@ cat >>confdefs.h <<_ACEOF
--- gdb-7.8.90.20150125.orig/gdb/configure 2015-01-25 08:36:55.722884563 +0100
+++ gdb-7.8.90.20150125/gdb/configure 2015-01-25 08:37:02.809915110 +0100
@@ -13270,6 +13270,64 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
@ -331,10 +331,10 @@ Index: gdb-7.8.50.20141228/gdb/configure
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
# except that the argument to --with-sysroot is optional.
Index: gdb-7.8.50.20141228/gdb/gdbserver/config.in
Index: gdb-7.8.90.20150125/gdb/gdbserver/config.in
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/gdbserver/config.in 2015-01-01 21:38:14.702209087 +0100
+++ gdb-7.8.50.20141228/gdb/gdbserver/config.in 2015-01-01 21:38:39.365193179 +0100
--- gdb-7.8.90.20150125.orig/gdb/gdbserver/config.in 2015-01-25 08:36:55.724884572 +0100
+++ gdb-7.8.90.20150125/gdb/gdbserver/config.in 2015-01-25 08:37:02.809915110 +0100
@@ -75,6 +75,9 @@
/* Define to 1 if you have the `mcheck' library (-lmcheck). */
#undef HAVE_LIBMCHECK
@ -355,10 +355,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbserver/config.in
/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H
Index: gdb-7.8.50.20141228/gdb/gdbserver/configure
Index: gdb-7.8.90.20150125/gdb/gdbserver/configure
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/gdbserver/configure 2015-01-01 21:38:14.704209086 +0100
+++ gdb-7.8.50.20141228/gdb/gdbserver/configure 2015-01-01 21:38:21.288204839 +0100
--- gdb-7.8.90.20150125.orig/gdb/gdbserver/configure 2015-01-25 08:36:55.726884580 +0100
+++ gdb-7.8.90.20150125/gdb/gdbserver/configure 2015-01-25 08:37:02.811915118 +0100
@@ -6199,6 +6199,64 @@ if $want_ipa ; then
fi
fi

View File

@ -1,11 +0,0 @@
--- gdb-7.8.50.20141228/gdb/compile/compile.c-orig 2014-12-28 02:48:43.000000000 +0100
+++ gdb-7.8.50.20141228/gdb/compile/compile.c 2015-01-05 23:03:33.383016039 +0100
@@ -172,7 +172,7 @@ do_rmdir (void *arg)
gdb_assert (strncmp (dir, TMP_PREFIX, strlen (TMP_PREFIX)) == 0);
zap = concat ("rm -rf ", dir, (char *) NULL);
- system (zap);
+ if (system (zap)) {}
}
/* Return the name of the temporary directory to use for .o files, and

View File

@ -0,0 +1,589 @@
diff -dup -ruNp gdb-7.8.90.20150202-orig/gdb/testsuite/dg-extract-results.py gdb-7.8.90.20150202/gdb/testsuite/dg-extract-results.py
--- gdb-7.8.90.20150202-orig/gdb/testsuite/dg-extract-results.py 2015-02-02 02:58:29.000000000 +0100
+++ gdb-7.8.90.20150202/gdb/testsuite/dg-extract-results.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,585 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2014-2015 Free Software Foundation, Inc.
-#
-# This script 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, or (at your option)
-# any later version.
-
-import sys
-import getopt
-import re
-import io
-from datetime import datetime
-from operator import attrgetter
-
-# True if unrecognised lines should cause a fatal error. Might want to turn
-# this on by default later.
-strict = False
-
-# True if the order of .log segments should match the .sum file, false if
-# they should keep the original order.
-sort_logs = True
-
-# A version of open() that is safe against whatever binary output
-# might be added to the log.
-def safe_open (filename):
- if sys.version_info >= (3, 0):
- return open (filename, 'r', errors = 'surrogateescape')
- return open (filename, 'r')
-
-# Force stdout to handle escape sequences from a safe_open file.
-if sys.version_info >= (3, 0):
- sys.stdout = io.TextIOWrapper (sys.stdout.buffer,
- errors = 'surrogateescape')
-
-class Named:
- def __init__ (self, name):
- self.name = name
-
-class ToolRun (Named):
- def __init__ (self, name):
- Named.__init__ (self, name)
- # The variations run for this tool, mapped by --target_board name.
- self.variations = dict()
-
- # Return the VariationRun for variation NAME.
- def get_variation (self, name):
- if name not in self.variations:
- self.variations[name] = VariationRun (name)
- return self.variations[name]
-
-class VariationRun (Named):
- def __init__ (self, name):
- Named.__init__ (self, name)
- # A segment of text before the harness runs start, describing which
- # baseboard files were loaded for the target.
- self.header = None
- # The harnesses run for this variation, mapped by filename.
- self.harnesses = dict()
- # A list giving the number of times each type of result has
- # been seen.
- self.counts = []
-
- # Return the HarnessRun for harness NAME.
- def get_harness (self, name):
- if name not in self.harnesses:
- self.harnesses[name] = HarnessRun (name)
- return self.harnesses[name]
-
-class HarnessRun (Named):
- def __init__ (self, name):
- Named.__init__ (self, name)
- # Segments of text that make up the harness run, mapped by a test-based
- # key that can be used to order them.
- self.segments = dict()
- # Segments of text that make up the harness run but which have
- # no recognized test results. These are typically harnesses that
- # are completely skipped for the target.
- self.empty = []
- # A list of results. Each entry is a pair in which the first element
- # is a unique sorting key and in which the second is the full
- # PASS/FAIL line.
- self.results = []
-
- # Add a segment of text to the harness run. If the segment includes
- # test results, KEY is an example of one of them, and can be used to
- # combine the individual segments in order. If the segment has no
- # test results (e.g. because the harness doesn't do anything for the
- # current configuration) then KEY is None instead. In that case
- # just collect the segments in the order that we see them.
- def add_segment (self, key, segment):
- if key:
- assert key not in self.segments
- self.segments[key] = segment
- else:
- self.empty.append (segment)
-
-class Segment:
- def __init__ (self, filename, start):
- self.filename = filename
- self.start = start
- self.lines = 0
-
-class Prog:
- def __init__ (self):
- # The variations specified on the command line.
- self.variations = []
- # The variations seen in the input files.
- self.known_variations = set()
- # The tools specified on the command line.
- self.tools = []
- # Whether to create .sum rather than .log output.
- self.do_sum = True
- # Regexps used while parsing.
- self.test_run_re = re.compile (r'^Test Run By (\S+) on (.*)$')
- self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$')
- self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED'
- r'|WARNING|ERROR|UNSUPPORTED|UNTESTED'
- r'|KFAIL):\s*(.+)')
- self.completed_re = re.compile (r'.* completed at (.*)')
- # Pieces of text to write at the head of the output.
- # start_line is a pair in which the first element is a datetime
- # and in which the second is the associated 'Test Run By' line.
- self.start_line = None
- self.native_line = ''
- self.target_line = ''
- self.host_line = ''
- self.acats_premable = ''
- # Pieces of text to write at the end of the output.
- # end_line is like start_line but for the 'runtest completed' line.
- self.acats_failures = []
- self.version_output = ''
- self.end_line = None
- # Known summary types.
- self.count_names = [
- '# of expected passes\t\t',
- '# of unexpected failures\t',
- '# of unexpected successes\t',
- '# of expected failures\t\t',
- '# of unknown successes\t\t',
- '# of known failures\t\t',
- '# of untested testcases\t\t',
- '# of unresolved testcases\t',
- '# of unsupported tests\t\t'
- ]
- self.runs = dict()
-
- def usage (self):
- name = sys.argv[0]
- sys.stderr.write ('Usage: ' + name
- + ''' [-t tool] [-l variant-list] [-L] log-or-sum-file ...
-
- tool The tool (e.g. g++, libffi) for which to create a
- new test summary file. If not specified then output
- is created for all tools.
- variant-list One or more test variant names. If the list is
- not specified then one is constructed from all
- variants in the files for <tool>.
- sum-file A test summary file with the format of those
- created by runtest from DejaGnu.
- If -L is used, merge *.log files instead of *.sum. In this
- mode the exact order of lines may not be preserved, just different
- Running *.exp chunks should be in correct order.
-''')
- sys.exit (1)
-
- def fatal (self, what, string):
- if not what:
- what = sys.argv[0]
- sys.stderr.write (what + ': ' + string + '\n')
- sys.exit (1)
-
- # Parse the command-line arguments.
- def parse_cmdline (self):
- try:
- (options, self.files) = getopt.getopt (sys.argv[1:], 'l:t:L')
- if len (self.files) == 0:
- self.usage()
- for (option, value) in options:
- if option == '-l':
- self.variations.append (value)
- elif option == '-t':
- self.tools.append (value)
- else:
- self.do_sum = False
- except getopt.GetoptError as e:
- self.fatal (None, e.msg)
-
- # Try to parse time string TIME, returning an arbitrary time on failure.
- # Getting this right is just a nice-to-have so failures should be silent.
- def parse_time (self, time):
- try:
- return datetime.strptime (time, '%c')
- except ValueError:
- return datetime.now()
-
- # Parse an integer and abort on failure.
- def parse_int (self, filename, value):
- try:
- return int (value)
- except ValueError:
- self.fatal (filename, 'expected an integer, got: ' + value)
-
- # Return a list that represents no test results.
- def zero_counts (self):
- return [0 for x in self.count_names]
-
- # Return the ToolRun for tool NAME.
- def get_tool (self, name):
- if name not in self.runs:
- self.runs[name] = ToolRun (name)
- return self.runs[name]
-
- # Add the result counts in list FROMC to TOC.
- def accumulate_counts (self, toc, fromc):
- for i in range (len (self.count_names)):
- toc[i] += fromc[i]
-
- # Parse the list of variations after 'Schedule of variations:'.
- # Return the number seen.
- def parse_variations (self, filename, file):
- num_variations = 0
- while True:
- line = file.readline()
- if line == '':
- self.fatal (filename, 'could not parse variation list')
- if line == '\n':
- break
- self.known_variations.add (line.strip())
- num_variations += 1
- return num_variations
-
- # Parse from the first line after 'Running target ...' to the end
- # of the run's summary.
- def parse_run (self, filename, file, tool, variation, num_variations):
- header = None
- harness = None
- segment = None
- final_using = 0
-
- # If this is the first run for this variation, add any text before
- # the first harness to the header.
- if not variation.header:
- segment = Segment (filename, file.tell())
- variation.header = segment
-
- # Parse up until the first line of the summary.
- if num_variations == 1:
- end = '\t\t=== ' + tool.name + ' Summary ===\n'
- else:
- end = ('\t\t=== ' + tool.name + ' Summary for '
- + variation.name + ' ===\n')
- while True:
- line = file.readline()
- if line == '':
- self.fatal (filename, 'no recognised summary line')
- if line == end:
- break
-
- # Look for the start of a new harness.
- if line.startswith ('Running ') and line.endswith (' ...\n'):
- # Close off the current harness segment, if any.
- if harness:
- segment.lines -= final_using
- harness.add_segment (first_key, segment)
- name = line[len ('Running '):-len(' ...\n')]
- harness = variation.get_harness (name)
- segment = Segment (filename, file.tell())
- first_key = None
- final_using = 0
- continue
-
- # Record test results. Associate the first test result with
- # the harness segment, so that if a run for a particular harness
- # has been split up, we can reassemble the individual segments
- # in a sensible order.
- #
- # dejagnu sometimes issues warnings about the testing environment
- # before running any tests. Treat them as part of the header
- # rather than as a test result.
- match = self.result_re.match (line)
- if match and (harness or not line.startswith ('WARNING:')):
- if not harness:
- self.fatal (filename, 'saw test result before harness name')
- name = match.group (2)
- # Ugly hack to get the right order for gfortran.
- if name.startswith ('gfortran.dg/g77/'):
- name = 'h' + name
- key = (name, len (harness.results))
- harness.results.append ((key, line))
- if not first_key and sort_logs:
- first_key = key
-
- # 'Using ...' lines are only interesting in a header. Splitting
- # the test up into parallel runs leads to more 'Using ...' lines
- # than there would be in a single log.
- if line.startswith ('Using '):
- final_using += 1
- else:
- final_using = 0
-
- # Add other text to the current segment, if any.
- if segment:
- segment.lines += 1
-
- # Close off the final harness segment, if any.
- if harness:
- segment.lines -= final_using
- harness.add_segment (first_key, segment)
-
- # Parse the rest of the summary (the '# of ' lines).
- if len (variation.counts) == 0:
- variation.counts = self.zero_counts()
- while True:
- before = file.tell()
- line = file.readline()
- if line == '':
- break
- if line == '\n':
- continue
- if not line.startswith ('# '):
- file.seek (before)
- break
- found = False
- for i in range (len (self.count_names)):
- if line.startswith (self.count_names[i]):
- count = line[len (self.count_names[i]):-1].strip()
- variation.counts[i] += self.parse_int (filename, count)
- found = True
- break
- if not found:
- self.fatal (filename, 'unknown test result: ' + line[:-1])
-
- # Parse an acats run, which uses a different format from dejagnu.
- # We have just skipped over '=== acats configuration ==='.
- def parse_acats_run (self, filename, file):
- # Parse the preamble, which describes the configuration and logs
- # the creation of support files.
- record = (self.acats_premable == '')
- if record:
- self.acats_premable = '\t\t=== acats configuration ===\n'
- while True:
- line = file.readline()
- if line == '':
- self.fatal (filename, 'could not parse acats preamble')
- if line == '\t\t=== acats tests ===\n':
- break
- if record:
- self.acats_premable += line
-
- # Parse the test results themselves, using a dummy variation name.
- tool = self.get_tool ('acats')
- variation = tool.get_variation ('none')
- self.parse_run (filename, file, tool, variation, 1)
-
- # Parse the failure list.
- while True:
- before = file.tell()
- line = file.readline()
- if line.startswith ('*** FAILURES: '):
- self.acats_failures.append (line[len ('*** FAILURES: '):-1])
- continue
- file.seek (before)
- break
-
- # Parse the final summary at the end of a log in order to capture
- # the version output that follows it.
- def parse_final_summary (self, filename, file):
- record = (self.version_output == '')
- while True:
- line = file.readline()
- if line == '':
- break
- if line.startswith ('# of '):
- continue
- if record:
- self.version_output += line
- if line == '\n':
- break
-
- # Parse a .log or .sum file.
- def parse_file (self, filename, file):
- tool = None
- target = None
- num_variations = 1
- while True:
- line = file.readline()
- if line == '':
- return
-
- # Parse the list of variations, which comes before the test
- # runs themselves.
- if line.startswith ('Schedule of variations:'):
- num_variations = self.parse_variations (filename, file)
- continue
-
- # Parse a testsuite run for one tool/variation combination.
- if line.startswith ('Running target '):
- name = line[len ('Running target '):-1]
- if not tool:
- self.fatal (filename, 'could not parse tool name')
- if name not in self.known_variations:
- self.fatal (filename, 'unknown target: ' + name)
- self.parse_run (filename, file, tool,
- tool.get_variation (name),
- num_variations)
- # If there is only one variation then there is no separate
- # summary for it. Record any following version output.
- if num_variations == 1:
- self.parse_final_summary (filename, file)
- continue
-
- # Parse the start line. In the case where several files are being
- # parsed, pick the one with the earliest time.
- match = self.test_run_re.match (line)
- if match:
- time = self.parse_time (match.group (2))
- if not self.start_line or self.start_line[0] > time:
- self.start_line = (time, line)
- continue
-
- # Parse the form used for native testing.
- if line.startswith ('Native configuration is '):
- self.native_line = line
- continue
-
- # Parse the target triplet.
- if line.startswith ('Target is '):
- self.target_line = line
- continue
-
- # Parse the host triplet.
- if line.startswith ('Host is '):
- self.host_line = line
- continue
-
- # Parse the acats premable.
- if line == '\t\t=== acats configuration ===\n':
- self.parse_acats_run (filename, file)
- continue
-
- # Parse the tool name.
- match = self.tool_re.match (line)
- if match:
- tool = self.get_tool (match.group (1))
- continue
-
- # Skip over the final summary (which we instead create from
- # individual runs) and parse the version output.
- if tool and line == '\t\t=== ' + tool.name + ' Summary ===\n':
- if file.readline() != '\n':
- self.fatal (filename, 'expected blank line after summary')
- self.parse_final_summary (filename, file)
- continue
-
- # Parse the completion line. In the case where several files
- # are being parsed, pick the one with the latest time.
- match = self.completed_re.match (line)
- if match:
- time = self.parse_time (match.group (1))
- if not self.end_line or self.end_line[0] < time:
- self.end_line = (time, line)
- continue
-
- # Sanity check to make sure that important text doesn't get
- # dropped accidentally.
- if strict and line.strip() != '':
- self.fatal (filename, 'unrecognised line: ' + line[:-1])
-
- # Output a segment of text.
- def output_segment (self, segment):
- with safe_open (segment.filename) as file:
- file.seek (segment.start)
- for i in range (segment.lines):
- sys.stdout.write (file.readline())
-
- # Output a summary giving the number of times each type of result has
- # been seen.
- def output_summary (self, tool, counts):
- for i in range (len (self.count_names)):
- name = self.count_names[i]
- # dejagnu only prints result types that were seen at least once,
- # but acats always prints a number of unexpected failures.
- if (counts[i] > 0
- or (tool.name == 'acats'
- and name.startswith ('# of unexpected failures'))):
- sys.stdout.write ('%s%d\n' % (name, counts[i]))
-
- # Output unified .log or .sum information for a particular variation,
- # with a summary at the end.
- def output_variation (self, tool, variation):
- self.output_segment (variation.header)
- for harness in sorted (variation.harnesses.values(),
- key = attrgetter ('name')):
- sys.stdout.write ('Running ' + harness.name + ' ...\n')
- if self.do_sum:
- harness.results.sort()
- for (key, line) in harness.results:
- sys.stdout.write (line)
- else:
- # Rearrange the log segments into test order (but without
- # rearranging text within those segments).
- for key in sorted (harness.segments.keys()):
- self.output_segment (harness.segments[key])
- for segment in harness.empty:
- self.output_segment (segment)
- if len (self.variations) > 1:
- sys.stdout.write ('\t\t=== ' + tool.name + ' Summary for '
- + variation.name + ' ===\n\n')
- self.output_summary (tool, variation.counts)
-
- # Output unified .log or .sum information for a particular tool,
- # with a summary at the end.
- def output_tool (self, tool):
- counts = self.zero_counts()
- if tool.name == 'acats':
- # acats doesn't use variations, so just output everything.
- # It also has a different approach to whitespace.
- sys.stdout.write ('\t\t=== ' + tool.name + ' tests ===\n')
- for variation in tool.variations.values():
- self.output_variation (tool, variation)
- self.accumulate_counts (counts, variation.counts)
- sys.stdout.write ('\t\t=== ' + tool.name + ' Summary ===\n')
- else:
- # Output the results in the usual dejagnu runtest format.
- sys.stdout.write ('\n\t\t=== ' + tool.name + ' tests ===\n\n'
- 'Schedule of variations:\n')
- for name in self.variations:
- if name in tool.variations:
- sys.stdout.write (' ' + name + '\n')
- sys.stdout.write ('\n')
- for name in self.variations:
- if name in tool.variations:
- variation = tool.variations[name]
- sys.stdout.write ('Running target '
- + variation.name + '\n')
- self.output_variation (tool, variation)
- self.accumulate_counts (counts, variation.counts)
- sys.stdout.write ('\n\t\t=== ' + tool.name + ' Summary ===\n\n')
- self.output_summary (tool, counts)
-
- def main (self):
- self.parse_cmdline()
- try:
- # Parse the input files.
- for filename in self.files:
- with safe_open (filename) as file:
- self.parse_file (filename, file)
-
- # Decide what to output.
- if len (self.variations) == 0:
- self.variations = sorted (self.known_variations)
- else:
- for name in self.variations:
- if name not in self.known_variations:
- self.fatal (None, 'no results for ' + name)
- if len (self.tools) == 0:
- self.tools = sorted (self.runs.keys())
-
- # Output the header.
- if self.start_line:
- sys.stdout.write (self.start_line[1])
- sys.stdout.write (self.native_line)
- sys.stdout.write (self.target_line)
- sys.stdout.write (self.host_line)
- sys.stdout.write (self.acats_premable)
-
- # Output the main body.
- for name in self.tools:
- if name not in self.runs:
- self.fatal (None, 'no results for ' + name)
- self.output_tool (self.runs[name])
-
- # Output the footer.
- if len (self.acats_failures) > 0:
- sys.stdout.write ('*** FAILURES: '
- + ' '.join (self.acats_failures) + '\n')
- sys.stdout.write (self.version_output)
- if self.end_line:
- sys.stdout.write (self.end_line[1])
- except IOError as e:
- self.fatal (e.filename, e.strerror)
-
-Prog().main()

View File

@ -1,53 +0,0 @@
http://sourceware.org/ml/gdb-patches/2015-01/msg00110.html
Subject: [testsuite patch] Fix new FAIL: py-frame.exp: test Frame.read_register(rip)
--/04w6evG8XlLl3ft
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi,
for x86_64 -m32 run one gets:
+FAIL: gdb.python/py-frame.exp: test Frame.read_register(rip)
I do not have x32 OS here but the %rip test should PASS there I think.
OK for check-in?
The code is there since:
commit 5f3b99cfed3803f0b099152f54aac7cb90a2b926
Author: Sasha Smundak <asmundak@google.com>
Date: Wed Sep 3 16:34:47 2014 -0700
Add support for reading frame registers to Python API.
Jan
--/04w6evG8XlLl3ft
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename=1
gdb/testsuite/
2015-01-07 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.python/py-frame.exp (test Frame.read_register(rip)): Use
is_amd64_regs_target.
diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp
index bf2e1ce..984acfc 100644
--- a/gdb/testsuite/gdb.python/py-frame.exp
+++ b/gdb/testsuite/gdb.python/py-frame.exp
@@ -106,7 +106,7 @@ gdb_test "python print ('result = %s' % (f0.read_register('pc') == f0.pc()))" \
"test Frame.read_register(pc)"
# On x86-64, PC is in $rip register.
-if {[istarget x86_64-*]} {
+if {[is_amd64_regs_target]} {
gdb_test "python print ('result = %s' % (f0.read_register('pc') == f0.read_register('rip')))" \
" = True" \
"test Frame.read_register(rip)"
--/04w6evG8XlLl3ft--

File diff suppressed because it is too large Load Diff

View File

@ -1,349 +0,0 @@
Date: Thu, 2 Oct 2014 17:56:53 +0200
From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
To: Doug Evans <dje at google dot com>
Cc: gdb-patches at sourceware dot org
Subject: [patchv2] Fix 100x slowdown regression on DWZ files
Message-ID: <20141002155653.GA9001@host2.jankratochvil.net>
--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Thu, 02 Oct 2014 01:51:38 +0200, Doug Evans wrote:
> I tested this patch with --target_board=dwarf4-gdb-index
> and got a failure in m-static.exp:
That is particularly with -fdebug-types-section.
> Type units read the line table in a separate path,
OK, therefore I dropped that separate struct dwarf2_lineinfo
and reused struct line_header instead.
> OTOH, I do want to avoid any confusion that this patch may inadvertently
> introduce. For example, IIUC with your patch as is,
> if we read a partial_unit first, before a compile_unit
> that has the same stmt_list value, we'll do more processing in
> dwarf_decode_lines than we really need to since we only need a file
> number to symtab mapping. And if we later read in a compile_unit
> with the same stmt_value we'll call dwarf_decode_lines again,
> and this time we need the pc/line mapping it computes.
> Whereas if we process these in the opposite order we'll only call
> dwarf_decode_lines once. I'm sure this will be confusing at first
> to some later developer going through this code.
> [I could be missing something of course, and I'm happy for any corrections.]
Implemented (omitting some story why I did not include it before).
> The code that processes stmt_list for type_units is in setup_type_unit_groups.
> Note that this code goes to the trouble of re-initializing the buildsym
> machinery (see the calls to restart_symtab in dwarf2read.c) when we process
> the second and subsequent type units that share a stmt_list value.
> This is something that used to be done before your patch and will no
> longer be done with your patch (since if we get a cache hit we exit).
> It may be that the type_unit support is doing this unnecessarily,
> which would be great because we can then simplify it.
I hope this patch should no longer break -fdebug-types-section.
If it additionally enables some future optimization for -fdebug-types-section
the better.
> > + /* Offset of line number information in .debug_line section. */
> > + sect_offset offset;
> > + unsigned offset_in_dwz : 1;
>
> IWBN to document why offset_in_dwz is here.
> It's not obvious why it's needed.
+
On Thu, 02 Oct 2014 01:57:03 +0200, Doug Evans wrote:
> Ah, I guess the offset_in_dwz flag will ensure dwarf_decode_lines gets called
> twice regardless of order. But is that the only reason for the flag?
I have added there now:
+ /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
If one removes it regressions really happen. What happens is that this
line_header_hash (former lineinfo_hash) is in struct dwarf2_per_objfile which
is common for both objfile and its objfile.dwz (that one is normally in
/usr/lib/debug/.dwz/ - common for multiple objfiles). And there are two
different DIEs at offset 0xb - one in objfile and one in objfile.dwz - which
would match single line_header if offset_in_dwz was not there.
Also existing dwarf2read.c code usually transfers "dwz flag" together with DIE
offset, such as:
dwarf2_find_containing_comp_unit (sect_offset offset,
unsigned int offset_in_dwz,
struct objfile *objfile)
This reminds me - why doesn't similar ambiguity happen also for dwp_file?
I am unfortunately not much aware of the dwp implementation details.
> > - struct line_header *line_header
> > - = dwarf_decode_line_header (line_offset, cu);
> > + dwarf2_per_objfile->lineinfo_hash =
>
> As much as I prefer "=" going here, convention says to put it on the
> next line.
I have changed it but this was just blind copy from existing line 21818.
> > + htab_create_alloc_ex (127, dwarf2_lineinfo_hash, dwarf2_lineinfo_eq,
>
> I don't have any data, but 127 seems high.
I have not changed it but this was just blind copy from existing line 21818.
> I wouldn't change it, I just wanted to ask if you have any data
> guiding this choice.
Tuning some constants really makes no sense when GDB has missing + insanely
complicated data structures and in consequence GDB is using inappropriate data
structures with bad algorithmic complexity. One needs to switch GDB to C++
and its STL before one can start talking about data structures performance.
No regressions on {x86_64,x86_64-m32,i686}-fedora20-linux-gnu in DWZ mode and
in -fdebug-types-section mode.
Thanks,
Jan
--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline; filename="partialunit5.patch"
gdb/
2014-10-02 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix 100x slowdown regression on DWZ files.
* dwarf2read.c (struct dwarf2_per_objfile): Add line_header_hash.
(struct line_header): Add offset and offset_in_dwz.
(dwarf_decode_lines): Add parameter decode_mapping to the declaration.
(free_line_header_voidp): New declaration.
(line_header_hash, line_header_eq): New functions.
(dwarf2_build_include_psymtabs): Update dwarf_decode_lines caller.
(handle_DW_AT_stmt_list): Use dwarf2_per_objfile->line_header_hash.
(free_line_header_voidp): New function.
(dwarf_decode_line_header): Initialize offset and offset_in_dwz.
(dwarf_decode_lines): New parameter decode_mapping, use it.
Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c 2015-01-05 22:45:32.823240453 +0100
+++ gdb-7.8.50.20141228/gdb/dwarf2read.c 2015-01-05 22:49:35.270332647 +0100
@@ -309,6 +309,9 @@ struct dwarf2_per_objfile
/* The CUs we recently read. */
VEC (dwarf2_per_cu_ptr) *just_read_cus;
+
+ /* Table containing line_header indexed by offset and offset_in_dwz. */
+ htab_t line_header_hash;
};
static struct dwarf2_per_objfile *dwarf2_per_objfile;
@@ -1025,6 +1028,12 @@ typedef void (die_reader_func_ftype) (co
which contains the following information. */
struct line_header
{
+ /* Offset of line number information in .debug_line section. */
+ sect_offset offset;
+
+ /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
+ unsigned offset_in_dwz : 1;
+
unsigned int total_length;
unsigned short version;
unsigned int header_length;
@@ -1513,7 +1522,7 @@ static struct line_header *dwarf_decode_
static void dwarf_decode_lines (struct line_header *, const char *,
struct dwarf2_cu *, struct partial_symtab *,
- CORE_ADDR);
+ CORE_ADDR, int decode_mapping);
static void dwarf2_start_subfile (const char *, const char *);
@@ -2057,6 +2066,8 @@ get_section_file_name (const struct dwar
/* Return the id of SECTION.
Returns 0 if SECTION doesn't exist. */
+static void free_line_header_voidp (void *arg);
+
static int
get_section_id (const struct dwarf2_section_info *section)
{
@@ -2461,6 +2472,29 @@ dwarf2_get_dwz_file (void)
dwarf2_per_objfile->dwz_file = result;
return result;
}
+
+/* Hash function for line_header_hash. */
+
+static hashval_t
+line_header_hash (const void *item)
+{
+ const struct line_header *ofs = item;
+
+ return ofs->offset.sect_off ^ ofs->offset_in_dwz;
+}
+
+/* Equality function for line_header_hash. */
+
+static int
+line_header_eq (const void *item_lhs, const void *item_rhs)
+{
+ const struct line_header *ofs_lhs = item_lhs;
+ const struct line_header *ofs_rhs = item_rhs;
+
+ return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
+ && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
+}
+
/* DWARF quick_symbols_functions support. */
@@ -4454,7 +4488,7 @@ dwarf2_build_include_psymtabs (struct dw
return; /* No linetable, so no includes. */
/* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
- dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow);
+ dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
free_line_header (lh);
}
@@ -9002,24 +9036,64 @@ static void
handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
{
+ struct objfile *objfile = dwarf2_per_objfile->objfile;
struct attribute *attr;
+ unsigned int line_offset;
+ struct line_header *line_header, line_header_local;
+ unsigned u;
+ void **slot;
+ int decode_mapping;
gdb_assert (! cu->per_cu->is_debug_types);
attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
- if (attr)
+ if (attr == NULL)
+ return;
+
+ line_offset = DW_UNSND (attr);
+
+ if (dwarf2_per_objfile->line_header_hash == NULL)
{
- unsigned int line_offset = DW_UNSND (attr);
- struct line_header *line_header
- = dwarf_decode_line_header (line_offset, cu);
-
- if (line_header)
- {
- cu->line_header = line_header;
- make_cleanup (free_cu_line_header, cu);
- dwarf_decode_lines (line_header, comp_dir, cu, NULL, lowpc);
- }
+ dwarf2_per_objfile->line_header_hash
+ = htab_create_alloc_ex (127, line_header_hash, line_header_eq,
+ free_line_header_voidp,
+ &objfile->objfile_obstack,
+ hashtab_obstack_allocate,
+ dummy_obstack_deallocate);
+ }
+
+ line_header_local.offset.sect_off = line_offset;
+ line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
+ slot = htab_find_slot (dwarf2_per_objfile->line_header_hash,
+ &line_header_local, NO_INSERT);
+
+ /* For DW_TAG_compile_unit we need info like symtab::linetable which
+ is not present in *SLOT. */
+ if (die->tag == DW_TAG_partial_unit && slot != NULL)
+ {
+ gdb_assert (*slot != NULL);
+ cu->line_header = *slot;
+ return;
+ }
+
+ line_header = dwarf_decode_line_header (line_offset, cu);
+ if (line_header == NULL)
+ return;
+ cu->line_header = line_header;
+
+ slot = htab_find_slot (dwarf2_per_objfile->line_header_hash,
+ &line_header_local, INSERT);
+ gdb_assert (slot != NULL);
+ if (*slot == NULL)
+ *slot = line_header;
+ else
+ {
+ gdb_assert (die->tag != DW_TAG_partial_unit);
+ make_cleanup (free_cu_line_header, cu);
}
+ decode_mapping = (die->tag != DW_TAG_partial_unit);
+ dwarf_decode_lines (line_header, comp_dir, cu, NULL, lowpc,
+ decode_mapping);
}
/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
@@ -16917,6 +16991,16 @@ free_line_header (struct line_header *lh
xfree (lh);
}
+/* Stub for free_line_header to match void * callback types. */
+
+static void
+free_line_header_voidp (void *arg)
+{
+ struct line_header *lh = arg;
+
+ free_line_header (lh);
+}
+
/* Add an entry to LH's include directory table. */
static void
@@ -17047,6 +17131,9 @@ dwarf_decode_line_header (unsigned int o
back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
(void *) lh);
+ lh->offset.sect_off = offset;
+ lh->offset_in_dwz = cu->per_cu->is_dwz;
+
line_ptr = section->buffer + offset;
/* Read in the header. */
@@ -17674,17 +17761,22 @@ dwarf_decode_lines_1 (struct line_header
E.g. expand_line_sal requires this when finding psymtabs to expand.
A good testcase for this is mb-inline.exp.
- LOWPC is the lowest address in CU (or 0 if not known). */
+ LOWPC is the lowest address in CU (or 0 if not known).
+
+ Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
+ for its PC<->lines mapping information. Otherwise only filenames
+ tables is read in. */
static void
dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
struct dwarf2_cu *cu, struct partial_symtab *pst,
- CORE_ADDR lowpc)
+ CORE_ADDR lowpc, int decode_mapping)
{
struct objfile *objfile = cu->objfile;
const int decode_for_pst_p = (pst != NULL);
- dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
+ if (decode_mapping)
+ dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
if (decode_for_pst_p)
{

View File

@ -1,151 +0,0 @@
-R for 85880250e591a51624d24db653aaace0c5ce5943
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=85880250e591a51624d24db653aaace0c5ce5943;hp=fce10a8494efa8faec
[buildbot] GDB regression on 85880250e591a51624d24db653aaace0c5ce5943
https://sourceware.org/ml/binutils/2015-01/msg00044.html
diff --git a/bfd/coff-i860.c b/bfd/coff-i860.c
index 8573a8d..2122c0d 100644
--- a/bfd/coff-i860.c
+++ b/bfd/coff-i860.c
@@ -467,10 +467,7 @@ static reloc_howto_type howto_table[] =
FIXME: This macro refers to symbols and asect; these are from the
calling function, not the macro arguments. */
-/* PR 17512: file: 0a38fb7c
- Set an addend value, even if it is not going to be used. A tool
- like coffdump might be used to print out the contents of the reloc. */
-#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) (cache_ptr)->addend = 0
+#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)
/* We use the special COFF backend linker. */
#define coff_relocate_section _bfd_coff_generic_relocate_section
diff --git a/bfd/tekhex.c b/bfd/tekhex.c
index 9444117..969b812 100644
--- a/bfd/tekhex.c
+++ b/bfd/tekhex.c
@@ -267,7 +267,7 @@ typedef struct tekhex_data_struct
#define enda(x) (x->vma + x->size)
static bfd_boolean
-getvalue (char **srcp, bfd_vma *valuep, char * endp)
+getvalue (char **srcp, bfd_vma *valuep)
{
char *src = *srcp;
bfd_vma value = 0;
@@ -279,7 +279,7 @@ getvalue (char **srcp, bfd_vma *valuep, char * endp)
len = hex_value (*src++);
if (len == 0)
len = 16;
- while (len-- && src < endp)
+ while (len--)
{
if (!ISHEX (*src))
return FALSE;
@@ -288,11 +288,11 @@ getvalue (char **srcp, bfd_vma *valuep, char * endp)
*srcp = src;
*valuep = value;
- return len == 0;
+ return TRUE;
}
static bfd_boolean
-getsym (char *dstp, char **srcp, unsigned int *lenp, char * endp)
+getsym (char *dstp, char **srcp, unsigned int *lenp)
{
char *src = *srcp;
unsigned int i;
@@ -304,7 +304,7 @@ getsym (char *dstp, char **srcp, unsigned int *lenp, char * endp)
len = hex_value (*src++);
if (len == 0)
len = 16;
- for (i = 0; i < len && src < endp; i++)
+ for (i = 0; i < len; i++)
dstp[i] = src[i];
dstp[i] = 0;
*srcp = src + i;
@@ -354,7 +354,7 @@ insert_byte (bfd *abfd, int value, bfd_vma addr)
how big the data is. */
static bfd_boolean
-first_phase (bfd *abfd, int type, char *src, char * src_end)
+first_phase (bfd *abfd, int type, char *src)
{
asection *section, *alt_section;
unsigned int len;
@@ -368,21 +368,21 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
{
bfd_vma addr;
- if (!getvalue (&src, &addr, src_end))
+ if (!getvalue (&src, &addr))
return FALSE;
- while (*src && src < src_end - 1)
+ while (*src)
{
insert_byte (abfd, HEX (src), addr);
src += 2;
addr++;
}
- return TRUE;
}
+ return TRUE;
case '3':
/* Symbol record, read the segment. */
- if (!getsym (sym, &src, &len, src_end))
+ if (!getsym (sym, &src, &len))
return FALSE;
section = bfd_get_section_by_name (abfd, sym);
if (section == NULL)
@@ -403,9 +403,9 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
{
case '1': /* Section range. */
src++;
- if (!getvalue (&src, &section->vma, src_end))
+ if (!getvalue (&src, &section->vma))
return FALSE;
- if (!getvalue (&src, &val, src_end))
+ if (!getvalue (&src, &val))
return FALSE;
section->size = val - section->vma;
section->flags = SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC;
@@ -432,7 +432,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
abfd->flags |= HAS_SYMS;
new_symbol->prev = abfd->tdata.tekhex_data->symbols;
abfd->tdata.tekhex_data->symbols = new_symbol;
- if (!getsym (sym, &src, &len, src_end))
+ if (!getsym (sym, &src, &len))
return FALSE;
new_symbol->symbol.name = (const char *)
bfd_alloc (abfd, (bfd_size_type) len + 1);
@@ -480,7 +480,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
new_symbol->symbol.section = alt_section;
}
}
- if (!getvalue (&src, &val, src_end))
+ if (!getvalue (&src, &val))
return FALSE;
new_symbol->symbol.value = val - section->vma;
break;
@@ -498,7 +498,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
record. */
static bfd_boolean
-pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *, char *))
+pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *))
{
unsigned int chars_on_line;
bfd_boolean is_eof = FALSE;
@@ -539,7 +539,8 @@ pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *, char *))
/* Put a null at the end. */
src[chars_on_line] = 0;
- if (!func (abfd, type, src, src + chars_on_line))
+
+ if (!func (abfd, type, src))
return FALSE;
}

View File

@ -6,10 +6,10 @@ GIT snapshot:
commit 511bff520372ffc10fa2ff569c176bdf1e6e475d
Index: gdb-7.8.50.20141228/gdb/c-valprint.c
Index: gdb-7.8.90.20150126/gdb/c-valprint.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/c-valprint.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/c-valprint.c 2015-01-06 23:03:07.424684753 +0100
--- gdb-7.8.90.20150126.orig/gdb/c-valprint.c 2015-01-26 07:47:25.832758314 +0100
+++ gdb-7.8.90.20150126/gdb/c-valprint.c 2015-01-26 07:47:42.394829861 +0100
@@ -537,7 +537,16 @@ c_value_print (struct value *val, struct
{
/* normal case */
@ -28,10 +28,10 @@ Index: gdb-7.8.50.20141228/gdb/c-valprint.c
fprintf_filtered (stream, ") ");
}
}
Index: gdb-7.8.50.20141228/gdb/dwarf2loc.h
Index: gdb-7.8.90.20150126/gdb/dwarf2loc.h
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/dwarf2loc.h 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/dwarf2loc.h 2015-01-06 23:03:07.424684753 +0100
--- gdb-7.8.90.20150126.orig/gdb/dwarf2loc.h 2015-01-26 07:47:25.832758314 +0100
+++ gdb-7.8.90.20150126/gdb/dwarf2loc.h 2015-01-26 07:47:42.395829865 +0100
@@ -111,6 +111,11 @@ int dwarf2_evaluate_property (const stru
CORE_ADDR address,
CORE_ADDR *value);
@ -44,14 +44,14 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.h
/* A helper for the compiler interface that compiles a single dynamic
property to C code.
Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
Index: gdb-7.8.90.20150126/gdb/dwarf2read.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/dwarf2read.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/dwarf2read.c 2015-01-06 23:04:09.691986881 +0100
@@ -1844,6 +1844,12 @@ static void free_dwo_file_cleanup (void
static void process_cu_includes (void);
--- gdb-7.8.90.20150126.orig/gdb/dwarf2read.c 2015-01-26 07:47:25.845758371 +0100
+++ gdb-7.8.90.20150126/gdb/dwarf2read.c 2015-01-26 07:48:05.833931116 +0100
@@ -1855,6 +1855,12 @@ static void process_cu_includes (void);
static void check_producer (struct dwarf2_cu *cu);
static void free_line_header_voidp (void *arg);
+
+static int
+attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
@ -61,7 +61,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
/* Various complaints about symbol reading that don't abort the process. */
@@ -14241,29 +14247,92 @@ read_tag_string_type (struct die_info *d
@@ -14354,29 +14360,92 @@ read_tag_string_type (struct die_info *d
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
@ -161,7 +161,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type);
@@ -14580,13 +14649,15 @@ read_base_type (struct die_info *die, st
@@ -14693,13 +14762,15 @@ read_base_type (struct die_info *die, st
return set_die_type (die, type, cu);
}
@ -178,7 +178,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
{
struct dwarf2_property_baton *baton;
struct obstack *obstack = &cu->objfile->objfile_obstack;
@@ -14599,8 +14670,25 @@ attr_to_dynamic_prop (const struct attri
@@ -14712,8 +14783,25 @@ attr_to_dynamic_prop (const struct attri
baton = obstack_alloc (obstack, sizeof (*baton));
baton->referenced_type = NULL;
baton->locexpr.per_cu = cu->per_cu;
@ -206,7 +206,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
prop->data.baton = baton;
prop->kind = PROP_LOCEXPR;
gdb_assert (prop->data.baton != NULL);
@@ -14630,8 +14718,28 @@ attr_to_dynamic_prop (const struct attri
@@ -14743,8 +14831,28 @@ attr_to_dynamic_prop (const struct attri
baton = obstack_alloc (obstack, sizeof (*baton));
baton->referenced_type = die_type (target_die, target_cu);
baton->locexpr.per_cu = cu->per_cu;
@ -237,7 +237,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
prop->data.baton = baton;
prop->kind = PROP_LOCEXPR;
gdb_assert (prop->data.baton != NULL);
@@ -14666,7 +14774,7 @@ read_subrange_type (struct die_info *die
@@ -14779,7 +14887,7 @@ read_subrange_type (struct die_info *die
struct type *base_type, *orig_base_type;
struct type *range_type;
struct attribute *attr;
@ -246,7 +246,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
int low_default_is_valid;
int high_bound_is_count = 0;
const char *name;
@@ -14686,7 +14794,9 @@ read_subrange_type (struct die_info *die
@@ -14799,7 +14907,9 @@ read_subrange_type (struct die_info *die
low.kind = PROP_CONST;
high.kind = PROP_CONST;
@ -256,7 +256,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
/* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
omitting DW_AT_lower_bound. */
@@ -14719,19 +14829,26 @@ read_subrange_type (struct die_info *die
@@ -14832,19 +14942,26 @@ read_subrange_type (struct die_info *die
break;
}
@ -286,7 +286,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
{
/* If bounds are constant do the final calculation here. */
if (low.kind == PROP_CONST && high.kind == PROP_CONST)
@@ -14795,7 +14912,7 @@ read_subrange_type (struct die_info *die
@@ -14908,7 +15025,7 @@ read_subrange_type (struct die_info *die
&& !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
high.data.const_val |= negative_mask;
@ -295,7 +295,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
if (high_bound_is_count)
TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
@@ -21860,7 +21977,44 @@ set_die_type (struct die_info *die, stru
@@ -21994,7 +22111,44 @@ set_die_type (struct die_info *die, stru
/* Read DW_AT_data_location and set in type. */
attr = dwarf2_attr (die, DW_AT_data_location, cu);
@ -341,10 +341,10 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2read.c
{
TYPE_DATA_LOCATION (type)
= obstack_alloc (&objfile->objfile_obstack, sizeof (prop));
Index: gdb-7.8.50.20141228/gdb/f-typeprint.c
Index: gdb-7.8.90.20150126/gdb/f-typeprint.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/f-typeprint.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/f-typeprint.c 2015-01-06 23:03:07.428684772 +0100
--- gdb-7.8.90.20150126.orig/gdb/f-typeprint.c 2015-01-26 07:47:25.846758375 +0100
+++ gdb-7.8.90.20150126/gdb/f-typeprint.c 2015-01-26 07:47:42.402829895 +0100
@@ -30,6 +30,7 @@
#include "gdbcore.h"
#include "target.h"
@ -429,10 +429,10 @@ Index: gdb-7.8.50.20141228/gdb/f-typeprint.c
if (arrayprint_recurse_level == 1)
fprintf_filtered (stream, ")");
else
Index: gdb-7.8.50.20141228/gdb/f-valprint.c
Index: gdb-7.8.90.20150126/gdb/f-valprint.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/f-valprint.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/f-valprint.c 2015-01-06 23:03:07.428684772 +0100
--- gdb-7.8.90.20150126.orig/gdb/f-valprint.c 2015-01-26 07:47:25.847758379 +0100
+++ gdb-7.8.90.20150126/gdb/f-valprint.c 2015-01-26 07:47:42.403829900 +0100
@@ -36,8 +36,6 @@
extern void _initialize_f_valprint (void);
@ -619,10 +619,10 @@ Index: gdb-7.8.50.20141228/gdb/f-valprint.c
if (index != TYPE_NFIELDS (type) - 1)
fputs_filtered (", ", stream);
}
Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
Index: gdb-7.8.90.20150126/gdb/gdbtypes.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/gdbtypes.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/gdbtypes.c 2015-01-06 23:03:07.429684777 +0100
--- gdb-7.8.90.20150126.orig/gdb/gdbtypes.c 2015-01-26 07:47:25.850758392 +0100
+++ gdb-7.8.90.20150126/gdb/gdbtypes.c 2015-01-26 07:47:42.404829904 +0100
@@ -815,7 +815,8 @@ allocate_stub_method (struct type *type)
struct type *
create_range_type (struct type *result_type, struct type *index_type,
@ -946,10 +946,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.c
return new_type;
}
Index: gdb-7.8.50.20141228/gdb/gdbtypes.h
Index: gdb-7.8.90.20150126/gdb/gdbtypes.h
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/gdbtypes.h 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/gdbtypes.h 2015-01-06 23:03:07.429684777 +0100
--- gdb-7.8.90.20150126.orig/gdb/gdbtypes.h 2015-01-26 07:47:25.852758401 +0100
+++ gdb-7.8.90.20150126/gdb/gdbtypes.h 2015-01-26 07:47:42.405829908 +0100
@@ -660,6 +660,10 @@ struct main_type
struct dynamic_prop high;
@ -1038,10 +1038,10 @@ Index: gdb-7.8.50.20141228/gdb/gdbtypes.h
const struct dynamic_prop *);
extern struct type *create_array_type (struct type *, struct type *,
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp 2015-01-06 23:03:07.429684777 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp 2015-01-26 07:47:42.405829908 +0100
@@ -0,0 +1,65 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1108,10 +1108,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
+gdb_continue_to_breakpoint "vla2-deallocated"
+gdb_test "print l" " = \\.FALSE\\." "print vla2 deallocated"
+gdb_test "print vla2" " = <not allocated>" "print deallocated vla2"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.exp 2015-01-06 23:03:07.429684777 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.exp 2015-01-26 07:47:42.405829908 +0100
@@ -0,0 +1,82 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1195,10 +1195,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.exp
+ "print logicalvla(5,5,5) (2nd)"
+gdb_test "print charactervla(5,5,5)" " = 'X'" \
+ "print charactervla(5,5,5) (2nd)"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.f90 2015-01-06 23:03:07.429684777 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-datatypes.f90 2015-01-26 07:47:42.405829908 +0100
@@ -0,0 +1,51 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -1251,10 +1251,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-datatypes.f90
+ ! dummy statement for bp
+ l = .FALSE. ! vlas-modified
+end program vla_primitives
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.exp 2015-01-26 07:47:42.406829913 +0100
@@ -0,0 +1,61 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1317,10 +1317,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.exp
+ "print vla3 (after func2)"
+gdb_test "ptype vla3" "type = integer\\\(kind=4\\\) \\\(10\\\)" \
+ "ptype vla3 (after func2)"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.f90 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-func.f90 2015-01-26 07:47:42.406829913 +0100
@@ -0,0 +1,71 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -1393,10 +1393,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-func.f90
+
+ ret = .TRUE. ! func2-returned
+end program vla_func
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-history.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-history.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-history.exp 2015-01-26 07:47:42.406829913 +0100
@@ -0,0 +1,62 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1460,10 +1460,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-history.exp
+# Try to access history values for vla values.
+gdb_test "print \$9" " = 1311" "print \$9"
+gdb_test "print \$10" " = 1001" "print \$10"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp 2015-01-26 07:47:42.406829913 +0100
@@ -0,0 +1,87 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1552,10 +1552,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
+ "ptype array1(100) (arbitrary length)"
+gdb_test "ptype array2(4,100)" "type = integer\\\(kind=4\\\)" \
+ "ptype array2(4,100) (arbitrary length)"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-ptype.exp 2015-01-26 07:47:42.406829913 +0100
@@ -0,0 +1,96 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1653,10 +1653,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-ptype.exp
+gdb_test "ptype vla2(5, 45, 20)" \
+ "no such vector element because not allocated" \
+ "ptype vla2(5, 45, 20) not allocated"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sizeof.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sizeof.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sizeof.exp 2015-01-26 07:47:42.406829913 +0100
@@ -0,0 +1,46 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1704,10 +1704,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sizeof.exp
+gdb_breakpoint [gdb_get_line_number "pvla-associated"]
+gdb_continue_to_breakpoint "pvla-associated"
+gdb_test "print sizeof(pvla)" " = 4000" "print sizeof associated pvla"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.exp 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,44 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1753,10 +1753,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.exp
+gdb_continue_to_breakpoint "single-element"
+gdb_test "print pvla" " = \\\(5\\\)" "print single-element"
+gdb_test "print pvla(1)" " = 5" "print one single-element"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.f90 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-stride.f90 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,30 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -1788,10 +1788,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-stride.f90
+
+ pvla => null() ! single-element
+end program vla_stride
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.exp 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,104 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -1897,10 +1897,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.exp
+ "whatis var_char_p after associated"
+gdb_test "ptype var_char_p" "type = PTR TO -> \\( character\\*7 \\)" \
+ "ptype var_char_p after associated"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.f90 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-strings.f90 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,40 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -1942,10 +1942,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-strings.f90
+ var_char_p => null()
+ l = associated(var_char_p) ! var_char_p-not-associated
+end program vla_strings
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sub.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sub.f90 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-sub.f90 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,82 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -2029,10 +2029,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-sub.f90
+
+ call bar(sub_arr3, sub_arr1)
+end program vla_sub
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp 2015-01-06 23:03:07.430684782 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,35 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -2069,10 +2069,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
+gdb_test "p array1(100)" " = 100" "print arbitary array1(100)"
+gdb_test "p array2(4,10)" " = 1" "print arbitary array2(4,10)"
+gdb_test "p array2(4,100)" " = 1" "print arbitary array2(4,100)"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp 2015-01-06 23:03:07.431684787 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp 2015-01-26 07:47:42.407829917 +0100
@@ -0,0 +1,49 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -2123,10 +2123,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
+gdb_test "p sub_arr2(1, 1, 1)" " = 30" "sub_arr2(1, 1, 1) after finish"
+gdb_test "p sub_arr2(2, 1, 1)" " = 20" "sub_arr2(2, 1, 1) after finish"
+
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub.exp 2015-01-06 23:03:07.431684787 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value-sub.exp 2015-01-26 07:47:42.408829922 +0100
@@ -0,0 +1,90 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -2218,10 +2218,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value-sub.exp
+ "set array(2,2,2) to 20 in subroutine (passed vla)"
+gdb_test "print array2" " = \\( *\\( *\\( *30, *20, *3,\[()3, .\]*\\)" \
+ "print array2 in foo after it was mofified in debugger (passed vla)"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value.exp 2015-01-06 23:03:07.431684787 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla-value.exp 2015-01-26 07:47:42.408829922 +0100
@@ -0,0 +1,148 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -2371,10 +2371,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla-value.exp
+gdb_continue_to_breakpoint "pvla-deassociated"
+gdb_test "print \$mypvar(1,3,8)" " = 1001" \
+ "print \$mypvar(1,3,8) after deallocated"
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla.f90 2015-01-06 23:03:07.431684787 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.fortran/vla.f90 2015-01-26 07:47:42.408829922 +0100
@@ -0,0 +1,56 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -2432,10 +2432,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.fortran/vla.f90
+ allocate (vla3 (2,2)) ! vla2-deallocated
+ vla3(:,:) = 13
+end program vla
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/mi-vla-fortran.exp 2015-01-06 23:03:07.431684787 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/mi-vla-fortran.exp 2015-01-26 07:47:42.408829922 +0100
@@ -0,0 +1,182 @@
+# Copyright 2014 Free Software Foundation, Inc.
+
@ -2619,10 +2619,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
+
+mi_gdb_exit
+return 0
Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/vla.f90
Index: gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/vla.f90 2015-01-06 23:03:07.431684787 +0100
+++ gdb-7.8.90.20150126/gdb/testsuite/gdb.mi/vla.f90 2015-01-26 07:47:42.409829926 +0100
@@ -0,0 +1,42 @@
+! Copyright 2014 Free Software Foundation, Inc.
+!
@ -2666,10 +2666,10 @@ Index: gdb-7.8.50.20141228/gdb/testsuite/gdb.mi/vla.f90
+ pvla2 => null()
+ l = associated(pvla2) ! pvla2-set-to-null
+end program vla
Index: gdb-7.8.50.20141228/gdb/typeprint.c
Index: gdb-7.8.90.20150126/gdb/typeprint.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/typeprint.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/typeprint.c 2015-01-06 23:03:07.431684787 +0100
--- gdb-7.8.90.20150126.orig/gdb/typeprint.c 2015-01-26 07:47:25.856758418 +0100
+++ gdb-7.8.90.20150126/gdb/typeprint.c 2015-01-26 07:47:42.409829926 +0100
@@ -456,6 +456,13 @@ whatis_exp (char *exp, int show)
type = value_type (val);
@ -2684,10 +2684,10 @@ Index: gdb-7.8.50.20141228/gdb/typeprint.c
get_user_print_options (&opts);
if (opts.objectprint)
{
Index: gdb-7.8.50.20141228/gdb/valarith.c
Index: gdb-7.8.90.20150126/gdb/valarith.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/valarith.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/valarith.c 2015-01-06 23:03:07.432684792 +0100
--- gdb-7.8.90.20150126.orig/gdb/valarith.c 2015-01-26 07:47:25.857758422 +0100
+++ gdb-7.8.90.20150126/gdb/valarith.c 2015-01-26 07:47:42.409829926 +0100
@@ -193,12 +193,31 @@ value_subscripted_rvalue (struct value *
struct type *array_type = check_typedef (value_type (array));
struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
@ -2722,10 +2722,10 @@ Index: gdb-7.8.50.20141228/gdb/valarith.c
if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
v = allocate_value_lazy (elt_type);
Index: gdb-7.8.50.20141228/gdb/valprint.c
Index: gdb-7.8.90.20150126/gdb/valprint.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/valprint.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/valprint.c 2015-01-06 23:03:07.432684792 +0100
--- gdb-7.8.90.20150126.orig/gdb/valprint.c 2015-01-26 07:47:25.858758427 +0100
+++ gdb-7.8.90.20150126/gdb/valprint.c 2015-01-26 07:47:42.410829930 +0100
@@ -303,6 +303,18 @@ valprint_check_validity (struct ui_file
{
CHECK_TYPEDEF (type);
@ -2800,10 +2800,10 @@ Index: gdb-7.8.50.20141228/gdb/valprint.c
return 1;
}
Index: gdb-7.8.50.20141228/gdb/valprint.h
Index: gdb-7.8.90.20150126/gdb/valprint.h
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/valprint.h 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/valprint.h 2015-01-06 23:03:07.432684792 +0100
--- gdb-7.8.90.20150126.orig/gdb/valprint.h 2015-01-26 07:47:25.859758431 +0100
+++ gdb-7.8.90.20150126/gdb/valprint.h 2015-01-26 07:47:42.410829930 +0100
@@ -217,4 +217,8 @@ extern void output_command_const (const
extern int val_print_scalar_type_p (struct type *type);
@ -2813,10 +2813,10 @@ Index: gdb-7.8.50.20141228/gdb/valprint.h
+extern void val_print_not_associated (struct ui_file *stream);
+
#endif
Index: gdb-7.8.50.20141228/gdb/value.c
Index: gdb-7.8.90.20150126/gdb/value.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/value.c 2015-01-06 22:51:17.663240907 +0100
+++ gdb-7.8.50.20141228/gdb/value.c 2015-01-06 23:03:07.433684797 +0100
--- gdb-7.8.90.20150126.orig/gdb/value.c 2015-01-26 07:47:25.860758435 +0100
+++ gdb-7.8.90.20150126/gdb/value.c 2015-01-26 07:47:42.411829935 +0100
@@ -40,6 +40,7 @@
#include "tracepoint.h"
#include "cp-abi.h"
@ -2919,11 +2919,11 @@ Index: gdb-7.8.50.20141228/gdb/value.c
if (TYPE_LENGTH (type))
read_value_memory (val, 0, value_stack (val),
Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
Index: gdb-7.8.90.20150126/gdb/dwarf2loc.c
===================================================================
--- gdb-7.8.50.20141228.orig/gdb/dwarf2loc.c 2014-12-28 02:48:43.000000000 +0100
+++ gdb-7.8.50.20141228/gdb/dwarf2loc.c 2015-01-06 23:05:55.296499287 +0100
@@ -2326,6 +2346,11 @@ dwarf2_evaluate_loc_desc_full (struct ty
--- gdb-7.8.90.20150126.orig/gdb/dwarf2loc.c 2015-01-26 07:47:25.862758444 +0100
+++ gdb-7.8.90.20150126/gdb/dwarf2loc.c 2015-01-26 07:47:42.412829939 +0100
@@ -2293,6 +2293,11 @@ dwarf2_evaluate_loc_desc_full (struct ty
int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0);
do_cleanups (value_chain);
@ -2935,7 +2935,7 @@ Index: gdb-7.8.50.20141228/gdb/dwarf2loc.c
retval = value_at_lazy (type, address + byte_offset);
if (in_stack_memory)
set_value_stack (retval, 1);
@@ -2546,6 +2546,19 @@ dwarf2_compile_property_to_c (struct ui_
@@ -2552,6 +2557,19 @@ dwarf2_compile_property_to_c (struct ui_
data, data + size, per_cu);
}

View File

@ -22,11 +22,11 @@ Name: %{?scl_prefix}gdb
# See timestamp of source gnulib installed into gdb/gnulib/ .
%global snapgnulib 20121213
%global tarname gdb-%{version}
Version: 7.8.50.20150108
Version: 7.8.90.20150202
# 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: 1%{?dist}
Release: 2%{?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
@ -520,19 +520,14 @@ Patch925: gdb-fortran-frame-string.patch
# Fix Python GIL with gdb.execute("continue") (Phil Muldoon, BZ 1116957).
Patch927: gdb-python-gil.patch
# Fix 'Slow gstack performance' (RH BZ 1103894, Jan Kratochvil).
Patch973: gdb-slow-gstack-performance.patch
# Fix 'compile' compilation warning/error.
Patch977: gdb-compile-warn_unused_result.patch
# Fix jit-reader.h for multi-lib.
Patch978: gdb-jit-reader-multilib.patch
# Fix gdb-7.9pre regressions / new FAILs.
Patch979: gdb-6.8-bz457187-largefile-test-regression-fix.patch
Patch980: gdb-py-frame-rip-test-fix.patch
Patch981: gdb-tekhex-regression-revert.patch
# Temporarily disable dg-extract-results.py to fix gdb.sum sorting.
Patch982: gdb-no-dg-extract-results-py.patch
%if 0%{!?rhel:1} || 0%{?rhel} > 6
# RL_STATE_FEDORA_GDB would not be found for:
@ -815,12 +810,9 @@ find -name "*.info*"|xargs rm -f
%patch918 -p1
%patch925 -p1
%patch927 -p1
%patch973 -p1
%patch977 -p1
%patch978 -p1
%patch979 -p1
%patch980 -p1
%patch981 -p1
%patch982 -p1
%patch848 -p1
%if 0%{!?el6:1}
@ -1321,6 +1313,10 @@ then
fi
%changelog
* Mon Feb 2 2015 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.8.90.20150202-2.fc22
- Rebase to 7.9-branch snapshot 7.8.90.20150202.
- Temporarily disable dg-extract-results.py to fix gdb.sum sorting.
* Thu Jan 8 2015 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.8.50.20150108-1.fc22
- Rebase to pre-7.9 snapshot 7.8.50.20150108.
- Fix jit-reader.h for multi-lib.

View File

@ -1,2 +1,2 @@
4981307aa9619bbec5b73261e4e41c8d gdb-libstdc++-v3-python-r155978.tar.bz2
6b43f1079e9a6401c7277d6bd777bd7f gdb-7.8.50.20150108.tar.xz
3821d055a639644d09bd9734e59b051c gdb-7.8.90.20150202.tar.xz