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:
parent
2f7f533ae7
commit
072837144c
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||
|
@ -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++))
|
||||
|
@ -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 \
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
589
gdb-no-dg-extract-results-py.patch
Normal file
589
gdb-no-dg-extract-results-py.patch
Normal 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()
|
@ -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
@ -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)
|
||||
{
|
@ -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, §ion->vma, src_end))
|
||||
+ if (!getvalue (&src, §ion->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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
24
gdb.spec
24
gdb.spec
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user