Compare commits
18 Commits
Author | SHA1 | Date |
---|---|---|
Jan Kratochvil | c940ffd764 | |
Jan Kratochvil | f487017596 | |
Jan Kratochvil | 02db2ebd8c | |
Jan Kratochvil | 93af7f4460 | |
Jan Kratochvil | 2d024d18cd | |
Jan Kratochvil | 993e03d068 | |
Jan Kratochvil | 1081c433bd | |
Jan Kratochvil | de5da8561d | |
Sergio Durigan Junior | d0d7de4406 | |
Jan Kratochvil | bfd851884a | |
Jan Kratochvil | 841b118906 | |
Jan Kratochvil | 827765168c | |
Jan Kratochvil | 9823d71e51 | |
Jan Kratochvil | 983a3bf47d | |
Jan Kratochvil | a98c9ed4a5 | |
Jan Kratochvil | f8a9be3fb7 | |
Jan Kratochvil | c736c63719 | |
Jan Kratochvil | 256c78441d |
|
@ -1,2 +1,2 @@
|
|||
/gdb-libstdc++-v3-python-r155978.tar.bz2
|
||||
/gdb-7.6.tar.bz2
|
||||
/gdb-7.6.1.tar.bz2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Index: gdb-7.5.91.20130407/gdb/event-top.c
|
||||
Index: gdb-7.6/gdb/event-top.c
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/event-top.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.5.91.20130407/gdb/event-top.c 2013-04-11 16:53:03.230280376 +0200
|
||||
--- gdb-7.6.orig/gdb/event-top.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.6/gdb/event-top.c 2013-07-17 19:51:02.679357656 +0200
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "continuations.h"
|
||||
#include "gdbcmd.h" /* for dont_repeat() */
|
||||
|
@ -28,10 +28,10 @@ Index: gdb-7.5.91.20130407/gdb/event-top.c
|
|||
/* Each interpreter has its own rules on displaying the command
|
||||
prompt. */
|
||||
if (!current_interp_display_prompt_p ())
|
||||
Index: gdb-7.5.91.20130407/gdb/elfread.c
|
||||
Index: gdb-7.6/gdb/elfread.c
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/elfread.c 2013-04-11 16:53:00.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/elfread.c 2013-04-11 16:53:03.231280376 +0200
|
||||
--- gdb-7.6.orig/gdb/elfread.c 2013-07-17 19:51:02.639357629 +0200
|
||||
+++ gdb-7.6/gdb/elfread.c 2013-07-17 19:51:50.738390068 +0200
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "gdbcore.h"
|
||||
#include "gdbcmd.h"
|
||||
|
@ -40,7 +40,7 @@ Index: gdb-7.5.91.20130407/gdb/elfread.c
|
|||
#include <sys/stat.h>
|
||||
|
||||
extern void _initialize_elfread (void);
|
||||
@@ -1629,8 +1630,361 @@ build_id_to_filename (const struct elf_b
|
||||
@@ -1682,8 +1683,360 @@ build_id_to_filename (const struct elf_b
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -258,8 +258,7 @@ Index: gdb-7.5.91.20130407/gdb/elfread.c
|
|||
+
|
||||
+ /* Base package name for `debuginfo-install'. We do not use the
|
||||
+ `yum' command directly as the line
|
||||
+ yum --disablerepo='*' --enablerepo='*debug*' \
|
||||
+ install NAME-debuginfo.ARCH
|
||||
+ yum --enablerepo='*debug*' install NAME-debuginfo.ARCH
|
||||
+ would be more complicated than just:
|
||||
+ debuginfo-install NAME-VERSION-RELEASE.ARCH
|
||||
+ Do not supply the rpm base name (derived from .src.rpm name) as
|
||||
|
@ -399,11 +398,11 @@ Index: gdb-7.5.91.20130407/gdb/elfread.c
|
|||
+
|
||||
/* This MISSING_FILEPAIR_HASH tracker is used only for the duplicite messages
|
||||
- Try to install the hash file ...
|
||||
+ yum --disablerepo='*' --enablerepo='*debug*' install ...
|
||||
+ yum --enablerepo='*debug*' install ...
|
||||
avoidance. */
|
||||
|
||||
struct missing_filepair
|
||||
@@ -1684,11 +2038,17 @@ missing_filepair_change (void)
|
||||
@@ -1737,11 +2090,17 @@ missing_filepair_change (void)
|
||||
/* All their memory came just from missing_filepair_OBSTACK. */
|
||||
missing_filepair_hash = NULL;
|
||||
}
|
||||
|
@ -421,7 +420,7 @@ Index: gdb-7.5.91.20130407/gdb/elfread.c
|
|||
missing_filepair_change ();
|
||||
}
|
||||
|
||||
@@ -1755,14 +2115,35 @@ debug_print_missing (const char *binary,
|
||||
@@ -1808,14 +2167,34 @@ debug_print_missing (const char *binary,
|
||||
|
||||
*slot = missing_filepair;
|
||||
|
||||
|
@ -430,17 +429,17 @@ Index: gdb-7.5.91.20130407/gdb/elfread.c
|
|||
+#ifdef HAVE_LIBRPM
|
||||
+ if (missing_exec == MISSING_EXEC_NOT_TRIED)
|
||||
+ {
|
||||
+ char *exec_filename;
|
||||
+ char *execfilename;
|
||||
|
||||
- fprintf_unfiltered (gdb_stdlog,
|
||||
- _("Missing separate debuginfo for %s\n"), binary);
|
||||
- if (debug != NULL)
|
||||
- fprintf_unfiltered (gdb_stdlog, _("Try to install the hash file %s\n"),
|
||||
- debug);
|
||||
+ exec_filename = get_exec_file (0);
|
||||
+ if (exec_filename != NULL)
|
||||
+ execfilename = get_exec_file (0);
|
||||
+ if (execfilename != NULL)
|
||||
+ {
|
||||
+ if (missing_rpm_enlist (exec_filename) == 0)
|
||||
+ if (missing_rpm_enlist (execfilename) == 0)
|
||||
+ missing_exec = MISSING_EXEC_NOT_FOUND;
|
||||
+ else
|
||||
+ missing_exec = MISSING_EXEC_ENLISTED;
|
||||
|
@ -458,16 +457,15 @@ Index: gdb-7.5.91.20130407/gdb/elfread.c
|
|||
+ _("Missing separate debuginfo for %s\n"), binary);
|
||||
+ if (debug != NULL)
|
||||
+ fprintf_unfiltered (gdb_stdlog, _("Try: %s %s\n"),
|
||||
+ "yum --disablerepo='*' --enablerepo='*debug*'"
|
||||
+ " install", debug);
|
||||
+ "yum --enablerepo='*debug*' install", debug);
|
||||
+ }
|
||||
}
|
||||
|
||||
static char *
|
||||
Index: gdb-7.5.91.20130407/gdb/symfile.h
|
||||
Index: gdb-7.6/gdb/symfile.h
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/symfile.h 2013-04-11 16:53:00.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/symfile.h 2013-04-11 16:53:03.231280376 +0200
|
||||
--- gdb-7.6.orig/gdb/symfile.h 2013-07-17 19:51:02.639357629 +0200
|
||||
+++ gdb-7.6/gdb/symfile.h 2013-07-17 19:51:02.687357661 +0200
|
||||
@@ -598,6 +598,8 @@ extern struct elf_build_id *build_id_add
|
||||
extern char *build_id_to_filename (const struct elf_build_id *build_id,
|
||||
char **link_return, int add_debug_suffix);
|
||||
|
@ -477,10 +475,10 @@ Index: gdb-7.5.91.20130407/gdb/symfile.h
|
|||
|
||||
/* From dwarf2read.c */
|
||||
|
||||
Index: gdb-7.5.91.20130407/gdb/testsuite/lib/gdb.exp
|
||||
Index: gdb-7.6/gdb/testsuite/lib/gdb.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/testsuite/lib/gdb.exp 2013-04-11 16:53:00.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/testsuite/lib/gdb.exp 2013-04-11 16:53:03.232280376 +0200
|
||||
--- gdb-7.6.orig/gdb/testsuite/lib/gdb.exp 2013-07-17 19:51:02.640357629 +0200
|
||||
+++ gdb-7.6/gdb/testsuite/lib/gdb.exp 2013-07-17 19:51:02.688357662 +0200
|
||||
@@ -1482,7 +1482,7 @@ proc default_gdb_start { } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
|
@ -490,10 +488,10 @@ Index: gdb-7.5.91.20130407/gdb/testsuite/lib/gdb.exp
|
|||
send_gdb "set build-id-verbose 0\n"
|
||||
gdb_expect 10 {
|
||||
-re "$gdb_prompt $" {
|
||||
Index: gdb-7.5.91.20130407/gdb/testsuite/lib/mi-support.exp
|
||||
Index: gdb-7.6/gdb/testsuite/lib/mi-support.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/testsuite/lib/mi-support.exp 2013-04-11 16:53:00.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/testsuite/lib/mi-support.exp 2013-04-11 16:53:03.233280376 +0200
|
||||
--- gdb-7.6.orig/gdb/testsuite/lib/mi-support.exp 2013-07-17 19:51:02.656357640 +0200
|
||||
+++ gdb-7.6/gdb/testsuite/lib/mi-support.exp 2013-07-17 19:51:02.689357663 +0200
|
||||
@@ -212,7 +212,7 @@ proc default_mi_gdb_start { args } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
|
@ -503,10 +501,10 @@ Index: gdb-7.5.91.20130407/gdb/testsuite/lib/mi-support.exp
|
|||
send_gdb "190-gdb-set build-id-verbose 0\n"
|
||||
gdb_expect 10 {
|
||||
-re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" {
|
||||
Index: gdb-7.5.91.20130407/gdb/tui/tui-interp.c
|
||||
Index: gdb-7.6/gdb/tui/tui-interp.c
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/tui/tui-interp.c 2013-01-01 07:41:30.000000000 +0100
|
||||
+++ gdb-7.5.91.20130407/gdb/tui/tui-interp.c 2013-04-11 16:53:03.233280376 +0200
|
||||
--- gdb-7.6.orig/gdb/tui/tui-interp.c 2013-01-01 07:41:30.000000000 +0100
|
||||
+++ gdb-7.6/gdb/tui/tui-interp.c 2013-07-17 19:51:02.689357663 +0200
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "tui/tui.h"
|
||||
#include "tui/tui-io.h"
|
||||
|
@ -515,10 +513,10 @@ Index: gdb-7.5.91.20130407/gdb/tui/tui-interp.c
|
|||
|
||||
/* Set to 1 when the TUI mode must be activated when we first start
|
||||
gdb. */
|
||||
Index: gdb-7.5.91.20130407/gdb/aclocal.m4
|
||||
Index: gdb-7.6/gdb/aclocal.m4
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/aclocal.m4 2013-01-17 12:06:26.000000000 +0100
|
||||
+++ gdb-7.5.91.20130407/gdb/aclocal.m4 2013-04-11 16:53:03.234280376 +0200
|
||||
--- gdb-7.6.orig/gdb/aclocal.m4 2013-01-17 12:06:26.000000000 +0100
|
||||
+++ gdb-7.6/gdb/aclocal.m4 2013-07-17 19:51:02.689357663 +0200
|
||||
@@ -11,6 +11,164 @@
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
@ -684,10 +682,10 @@ Index: gdb-7.5.91.20130407/gdb/aclocal.m4
|
|||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
|
||||
Index: gdb-7.5.91.20130407/gdb/config.in
|
||||
Index: gdb-7.6/gdb/config.in
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/config.in 2012-12-09 19:39:58.000000000 +0100
|
||||
+++ gdb-7.5.91.20130407/gdb/config.in 2013-04-11 16:53:03.234280376 +0200
|
||||
--- gdb-7.6.orig/gdb/config.in 2012-12-09 19:39:58.000000000 +0100
|
||||
+++ gdb-7.6/gdb/config.in 2013-07-17 19:51:02.689357663 +0200
|
||||
@@ -33,6 +33,9 @@
|
||||
/* Define to BFD's default target vector. */
|
||||
#undef DEFAULT_BFD_VEC
|
||||
|
@ -708,10 +706,10 @@ Index: gdb-7.5.91.20130407/gdb/config.in
|
|||
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
|
||||
#undef HAVE_LIBUNWIND_IA64_H
|
||||
|
||||
Index: gdb-7.5.91.20130407/gdb/configure
|
||||
Index: gdb-7.6/gdb/configure
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/configure 2013-04-11 16:50:50.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/configure 2013-04-11 16:53:13.077280119 +0200
|
||||
--- gdb-7.6.orig/gdb/configure 2013-07-17 19:51:01.665356963 +0200
|
||||
+++ gdb-7.6/gdb/configure 2013-07-17 19:51:02.691357664 +0200
|
||||
@@ -686,6 +686,11 @@ PKGVERSION
|
||||
HAVE_NATIVE_GCORE_TARGET
|
||||
TARGET_OBS
|
||||
|
@ -1259,10 +1257,10 @@ Index: gdb-7.5.91.20130407/gdb/configure
|
|||
|
||||
|
||||
subdirs="$subdirs testsuite"
|
||||
Index: gdb-7.5.91.20130407/gdb/configure.ac
|
||||
Index: gdb-7.6/gdb/configure.ac
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/configure.ac 2013-04-11 16:50:33.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/configure.ac 2013-04-11 16:53:03.240280376 +0200
|
||||
--- gdb-7.6.orig/gdb/configure.ac 2013-07-17 19:51:01.666356964 +0200
|
||||
+++ gdb-7.6/gdb/configure.ac 2013-07-17 19:51:02.692357665 +0200
|
||||
@@ -166,6 +166,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap
|
||||
[Directories safe to hold auto-loaded files.])
|
||||
AC_MSG_RESULT([$with_auto_load_safe_path])
|
||||
|
@ -1463,10 +1461,10 @@ Index: gdb-7.5.91.20130407/gdb/configure.ac
|
|||
AC_CONFIG_SUBDIRS(testsuite)
|
||||
|
||||
# Check whether to support alternative target configurations
|
||||
Index: gdb-7.5.91.20130407/gdb/corelow.c
|
||||
Index: gdb-7.6/gdb/corelow.c
|
||||
===================================================================
|
||||
--- gdb-7.5.91.20130407.orig/gdb/corelow.c 2013-04-11 16:53:00.000000000 +0200
|
||||
+++ gdb-7.5.91.20130407/gdb/corelow.c 2013-04-11 16:53:03.240280376 +0200
|
||||
--- gdb-7.6.orig/gdb/corelow.c 2013-07-17 19:51:02.608357607 +0200
|
||||
+++ gdb-7.6/gdb/corelow.c 2013-07-17 19:51:02.692357665 +0200
|
||||
@@ -314,7 +314,7 @@ build_id_locate_exec (int from_tty)
|
||||
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Index: gdb-7.5.50.20130310/gdb/corelow.c
|
||||
Index: gdb-7.6/gdb/corelow.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/corelow.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/corelow.c 2013-03-10 16:36:37.019937408 +0100
|
||||
--- gdb-7.6.orig/gdb/corelow.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.6/gdb/corelow.c 2013-08-06 16:57:14.832517976 +0200
|
||||
@@ -46,6 +46,9 @@
|
||||
#include "progspace.h"
|
||||
#include "objfiles.h"
|
||||
|
@ -23,7 +23,7 @@ Index: gdb-7.5.50.20130310/gdb/corelow.c
|
|||
+{
|
||||
+ CORE_ADDR at_entry;
|
||||
+ struct elf_build_id *build_id;
|
||||
+ char *exec_filename, *debug_filename;
|
||||
+ char *execfilename, *debug_filename;
|
||||
+ char *build_id_filename;
|
||||
+ struct cleanup *back_to;
|
||||
+
|
||||
|
@ -44,14 +44,14 @@ Index: gdb-7.5.50.20130310/gdb/corelow.c
|
|||
+ file - such .eh_frame would not be found if SYMFILE_OBJFILE would refer
|
||||
+ directly to the separate debug info file. */
|
||||
+
|
||||
+ exec_filename = build_id_to_filename (build_id, &build_id_filename, 0);
|
||||
+ execfilename = build_id_to_filename (build_id, &build_id_filename, 0);
|
||||
+ make_cleanup (xfree, build_id_filename);
|
||||
+
|
||||
+ if (exec_filename != NULL)
|
||||
+ if (execfilename != NULL)
|
||||
+ {
|
||||
+ make_cleanup (xfree, exec_filename);
|
||||
+ exec_file_attach (exec_filename, from_tty);
|
||||
+ symbol_file_add_main (exec_filename, from_tty);
|
||||
+ make_cleanup (xfree, execfilename);
|
||||
+ exec_file_attach (execfilename, from_tty);
|
||||
+ symbol_file_add_main (execfilename, from_tty);
|
||||
+ if (symfile_objfile != NULL)
|
||||
+ symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
|
||||
+ }
|
||||
|
@ -93,11 +93,11 @@ Index: gdb-7.5.50.20130310/gdb/corelow.c
|
|||
+ NULL, NULL, NULL,
|
||||
+ &setlist, &showlist);
|
||||
}
|
||||
Index: gdb-7.5.50.20130310/gdb/doc/gdb.texinfo
|
||||
Index: gdb-7.6/gdb/doc/gdb.texinfo
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/doc/gdb.texinfo 2013-03-10 16:16:23.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/doc/gdb.texinfo 2013-03-10 16:17:15.216114613 +0100
|
||||
@@ -16680,6 +16680,27 @@ information files.
|
||||
--- gdb-7.6.orig/gdb/doc/gdb.texinfo 2013-08-06 16:57:14.531517553 +0200
|
||||
+++ gdb-7.6/gdb/doc/gdb.texinfo 2013-08-06 16:57:14.843517992 +0200
|
||||
@@ -16831,6 +16831,27 @@ information files.
|
||||
|
||||
@end table
|
||||
|
||||
|
@ -125,10 +125,10 @@ Index: gdb-7.5.50.20130310/gdb/doc/gdb.texinfo
|
|||
@cindex @code{.gnu_debuglink} sections
|
||||
@cindex debug link sections
|
||||
A debug link is a special section of the executable file named
|
||||
Index: gdb-7.5.50.20130310/gdb/solib-svr4.c
|
||||
Index: gdb-7.6/gdb/solib-svr4.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/solib-svr4.c 2013-01-31 14:52:52.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/solib-svr4.c 2013-03-10 16:37:49.842963280 +0100
|
||||
--- gdb-7.6.orig/gdb/solib-svr4.c 2013-01-31 14:52:52.000000000 +0100
|
||||
+++ gdb-7.6/gdb/solib-svr4.c 2013-08-06 16:57:14.917518096 +0200
|
||||
@@ -1224,9 +1224,52 @@ svr4_read_so_list (CORE_ADDR lm, struct
|
||||
continue;
|
||||
}
|
||||
|
@ -185,10 +185,10 @@ Index: gdb-7.5.50.20130310/gdb/solib-svr4.c
|
|||
xfree (buffer);
|
||||
|
||||
/* If this entry has no name, or its name matches the name
|
||||
Index: gdb-7.5.50.20130310/gdb/elfread.c
|
||||
Index: gdb-7.6/gdb/elfread.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/elfread.c 2013-03-06 22:20:02.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/elfread.c 2013-03-10 16:38:01.506968687 +0100
|
||||
--- gdb-7.6.orig/gdb/elfread.c 2013-03-18 10:20:02.000000000 +0100
|
||||
+++ gdb-7.6/gdb/elfread.c 2013-08-06 16:57:19.548524529 +0200
|
||||
@@ -45,6 +45,11 @@
|
||||
#include "regcache.h"
|
||||
#include "bcache.h"
|
||||
|
@ -201,7 +201,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
|
||||
extern void _initialize_elfread (void);
|
||||
|
||||
@@ -1067,10 +1072,59 @@ elf_gnu_ifunc_resolver_return_stop (stru
|
||||
@@ -1068,10 +1073,59 @@ elf_gnu_ifunc_resolver_return_stop (stru
|
||||
update_breakpoint_locations (b, sals, sals_end);
|
||||
}
|
||||
|
||||
|
@ -263,7 +263,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
{
|
||||
if (!bfd_check_format (abfd, bfd_object)
|
||||
|| bfd_get_flavour (abfd) != bfd_target_elf_flavour
|
||||
@@ -1080,6 +1134,348 @@ build_id_bfd_get (bfd *abfd)
|
||||
@@ -1081,6 +1135,348 @@ build_id_bfd_get (bfd *abfd)
|
||||
return elf_tdata (abfd)->build_id;
|
||||
}
|
||||
|
||||
|
@ -612,7 +612,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */
|
||||
|
||||
static int
|
||||
@@ -1094,7 +1490,7 @@ build_id_verify (const char *filename, c
|
||||
@@ -1095,7 +1491,7 @@ build_id_verify (const char *filename, c
|
||||
if (abfd == NULL)
|
||||
return 0;
|
||||
|
||||
|
@ -621,12 +621,46 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
|
||||
if (found == NULL)
|
||||
warning (_("File \"%s\" has no build-id, file skipped"), filename);
|
||||
@@ -1110,17 +1506,18 @@ build_id_verify (const char *filename, c
|
||||
return retval;
|
||||
@@ -1112,16 +1508,53 @@ build_id_verify (const char *filename, c
|
||||
}
|
||||
|
||||
-static char *
|
||||
static char *
|
||||
-build_id_to_debug_filename (const struct elf_build_id *build_id)
|
||||
+link_resolve (const char *symlink, int level)
|
||||
+{
|
||||
+ char buf[PATH_MAX + 1], *target, *retval;
|
||||
+ ssize_t got;
|
||||
+
|
||||
+ if (level > 10)
|
||||
+ return xstrdup (symlink);
|
||||
+
|
||||
+ got = readlink (symlink, buf, sizeof (buf));
|
||||
+ if (got < 0 || got >= sizeof (buf))
|
||||
+ return xstrdup (symlink);
|
||||
+ buf[got] = '\0';
|
||||
+
|
||||
+ if (IS_ABSOLUTE_PATH (buf))
|
||||
+ target = xstrdup (buf);
|
||||
+ else
|
||||
+ {
|
||||
+ char *dir = ldirname (symlink);
|
||||
+
|
||||
+ if (dir == NULL)
|
||||
+ return xstrdup (symlink);
|
||||
+ target = xstrprintf ("%s"
|
||||
+#ifndef HAVE_DOS_BASED_FILE_SYSTEM
|
||||
+ "/"
|
||||
+#else /* HAVE_DOS_BASED_FILE_SYSTEM */
|
||||
+ "\\"
|
||||
+#endif /* HAVE_DOS_BASED_FILE_SYSTEM */
|
||||
+ "%s", dir, buf);
|
||||
+ }
|
||||
+
|
||||
+ retval = link_resolve (target, level + 1);
|
||||
+ xfree (target);
|
||||
+ return retval;
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+build_id_to_filename (const struct elf_build_id *build_id, char **link_return,
|
||||
+ int add_debug_suffix)
|
||||
|
@ -644,16 +678,19 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
|
||||
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
|
||||
cause "/.build-id/..." lookups. */
|
||||
@@ -1133,6 +1530,8 @@ build_id_to_debug_filename (const struct
|
||||
@@ -1134,7 +1567,10 @@ build_id_to_debug_filename (const struct
|
||||
size_t debugdir_len = strlen (debugdir);
|
||||
const gdb_byte *data = build_id->data;
|
||||
size_t size = build_id->size;
|
||||
- char *s;
|
||||
+ unsigned seqno;
|
||||
+ struct stat statbuf_trash;
|
||||
char *s;
|
||||
+ /* Initialize it just to avoid a GCC false warning. */
|
||||
+ char *s, *link0 = NULL, *link0_resolved;
|
||||
|
||||
memcpy (link, debugdir, debugdir_len);
|
||||
@@ -1147,37 +1546,240 @@ build_id_to_debug_filename (const struct
|
||||
s = &link[debugdir_len];
|
||||
@@ -1148,37 +1584,256 @@ build_id_to_debug_filename (const struct
|
||||
*s++ = '/';
|
||||
while (size-- > 0)
|
||||
s += sprintf (s, "%02x", (unsigned) *data++);
|
||||
|
@ -682,14 +719,20 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
+ else
|
||||
+ *s2 = 0;
|
||||
+
|
||||
+ if (!seqno)
|
||||
+ {
|
||||
+ /* If none of the real files is found report as missing file
|
||||
+ always the non-.%u-suffixed file. */
|
||||
+ link0 = xstrdup (link);
|
||||
+ }
|
||||
+
|
||||
+ /* `access' automatically dereferences LINK. */
|
||||
+ if (lstat (link, &statbuf_trash) != 0)
|
||||
+ {
|
||||
+ /* Stop increasing SEQNO. */
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
- if (retval != NULL && !build_id_verify (retval, build_id))
|
||||
+
|
||||
+ retval = lrealpath (link);
|
||||
+
|
||||
+ if (retval != NULL && !build_id_verify (retval, build_id))
|
||||
|
@ -703,29 +746,39 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
+ }
|
||||
+
|
||||
+ if (retval != NULL)
|
||||
+ {
|
||||
+ /* LINK_ALL is not used below in this non-NULL RETVAL case. */
|
||||
+ xfree (link0);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ /* If the symlink has target request to install the target.
|
||||
+ BASE-debuginfo.rpm contains the symlink but BASE.rpm may be missing.
|
||||
+ https://bugzilla.redhat.com/show_bug.cgi?id=981154 */
|
||||
+ link0_resolved = link_resolve (link0, 0);
|
||||
+ xfree (link0);
|
||||
|
||||
- if (retval != NULL && !build_id_verify (retval, build_id))
|
||||
+ if (link_all == NULL)
|
||||
+ link_all = xstrdup (link0_resolved);
|
||||
+ else
|
||||
{
|
||||
- xfree (retval);
|
||||
- retval = NULL;
|
||||
+ /* LINK_ALL is not used below in this non-NULL RETVAL case. */
|
||||
+ break;
|
||||
+ size_t len_orig = strlen (link_all);
|
||||
+
|
||||
+ link_all = xrealloc (link_all,
|
||||
+ len_orig + 1 + strlen (link0_resolved) + 1);
|
||||
+
|
||||
+ /* Use whitespace instead of DIRNAME_SEPARATOR to be compatible with
|
||||
+ its possible use as an argument for installation command. */
|
||||
+ link_all[len_orig] = ' ';
|
||||
+
|
||||
+ strcpy (&link_all[len_orig + 1], link0_resolved);
|
||||
}
|
||||
|
||||
+ if (link_all == NULL)
|
||||
+ link_all = xstrdup (link);
|
||||
+ else
|
||||
+ {
|
||||
+ size_t len_orig = strlen (link_all);
|
||||
+
|
||||
+ link_all = xrealloc (link_all, len_orig + 1 + strlen (link) + 1);
|
||||
+
|
||||
+ /* Use whitespace instead of DIRNAME_SEPARATOR to be compatible with
|
||||
+ its possible use as an argument for installation command. */
|
||||
+ link_all[len_orig] = ' ';
|
||||
+
|
||||
+ strcpy (&link_all[len_orig + 1], link);
|
||||
+ }
|
||||
+ xfree (link0_resolved);
|
||||
+ }
|
||||
+
|
||||
|
||||
+ if (link_return != NULL)
|
||||
+ {
|
||||
if (retval != NULL)
|
||||
|
@ -905,7 +958,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
/* Prevent looping on a stripped .debug file. */
|
||||
if (build_id_name != NULL
|
||||
&& filename_cmp (build_id_name, objfile->name) == 0)
|
||||
@@ -1187,7 +1789,7 @@ find_separate_debug_file_by_buildid (str
|
||||
@@ -1188,7 +1843,7 @@ find_separate_debug_file_by_buildid (str
|
||||
xfree (build_id_name);
|
||||
}
|
||||
else if (build_id_name != NULL)
|
||||
|
@ -914,7 +967,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -1425,9 +2027,10 @@ elf_symfile_read (struct objfile *objfil
|
||||
@@ -1426,9 +2081,10 @@ elf_symfile_read (struct objfile *objfil
|
||||
&& objfile->separate_debug_objfile == NULL
|
||||
&& objfile->separate_debug_objfile_backlink == NULL)
|
||||
{
|
||||
|
@ -927,7 +980,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
|
||||
if (debugfile == NULL)
|
||||
debugfile = find_separate_debug_file_by_debuglink (objfile);
|
||||
@@ -1441,6 +2044,12 @@ elf_symfile_read (struct objfile *objfil
|
||||
@@ -1442,6 +2098,12 @@ elf_symfile_read (struct objfile *objfil
|
||||
symbol_file_add_separate (abfd, symfile_flags, objfile);
|
||||
do_cleanups (cleanup);
|
||||
}
|
||||
|
@ -940,7 +993,7 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1760,4 +2369,16 @@ _initialize_elfread (void)
|
||||
@@ -1761,4 +2423,16 @@ _initialize_elfread (void)
|
||||
|
||||
elf_objfile_gnu_ifunc_cache_data = register_objfile_data ();
|
||||
gnu_ifunc_fns_p = &elf_gnu_ifunc_fns;
|
||||
|
@ -957,10 +1010,10 @@ Index: gdb-7.5.50.20130310/gdb/elfread.c
|
|||
+
|
||||
+ observer_attach_executable_changed (debug_print_executable_changed);
|
||||
}
|
||||
Index: gdb-7.5.50.20130310/gdb/symfile.h
|
||||
Index: gdb-7.6/gdb/symfile.h
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/symfile.h 2013-02-03 17:20:18.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/symfile.h 2013-03-10 16:37:41.203959517 +0100
|
||||
--- gdb-7.6.orig/gdb/symfile.h 2013-02-03 17:20:18.000000000 +0100
|
||||
+++ gdb-7.6/gdb/symfile.h 2013-08-06 16:57:14.919518099 +0200
|
||||
@@ -593,6 +593,12 @@ void free_symfile_segment_data (struct s
|
||||
|
||||
extern struct cleanup *increment_reading_symtab (void);
|
||||
|
@ -974,10 +1027,10 @@ Index: gdb-7.5.50.20130310/gdb/symfile.h
|
|||
/* From dwarf2read.c */
|
||||
|
||||
/* Names for a dwarf2 debugging section. The field NORMAL is the normal
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp
|
||||
Index: gdb-7.6/gdb/testsuite/lib/gdb.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/lib/gdb.exp 2013-03-10 16:16:22.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp 2013-03-10 16:17:15.219114612 +0100
|
||||
--- gdb-7.6.orig/gdb/testsuite/lib/gdb.exp 2013-08-06 16:57:14.298517226 +0200
|
||||
+++ gdb-7.6/gdb/testsuite/lib/gdb.exp 2013-08-06 16:57:14.920518100 +0200
|
||||
@@ -1482,6 +1482,16 @@ proc default_gdb_start { } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
|
@ -995,10 +1048,10 @@ Index: gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp
|
|||
return 0;
|
||||
}
|
||||
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp
|
||||
Index: gdb-7.6/gdb/testsuite/lib/mi-support.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/lib/mi-support.exp 2013-01-22 00:57:59.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp 2013-03-10 16:17:15.220114612 +0100
|
||||
--- gdb-7.6.orig/gdb/testsuite/lib/mi-support.exp 2013-01-22 00:57:59.000000000 +0100
|
||||
+++ gdb-7.6/gdb/testsuite/lib/mi-support.exp 2013-08-06 16:57:14.920518100 +0200
|
||||
@@ -212,6 +212,16 @@ proc default_mi_gdb_start { args } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
|
@ -1016,10 +1069,10 @@ Index: gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp
|
|||
# If allowing the inferior to have its own PTY then assign the inferior
|
||||
# its own terminal device here.
|
||||
if { $separate_inferior_pty } {
|
||||
Index: gdb-7.5.50.20130310/gdb/objfiles.h
|
||||
Index: gdb-7.6/gdb/objfiles.h
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/objfiles.h 2013-02-28 20:00:31.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/objfiles.h 2013-03-10 16:17:15.220114612 +0100
|
||||
--- gdb-7.6.orig/gdb/objfiles.h 2013-02-28 20:00:31.000000000 +0100
|
||||
+++ gdb-7.6/gdb/objfiles.h 2013-08-06 16:57:14.920518100 +0200
|
||||
@@ -432,6 +432,10 @@ struct objfile
|
||||
|
||||
#define OBJF_MAINLINE (1 << 5)
|
||||
|
@ -1031,10 +1084,10 @@ Index: gdb-7.5.50.20130310/gdb/objfiles.h
|
|||
/* The object file that contains the runtime common minimal symbols
|
||||
for SunOS4. Note that this objfile has no associated BFD. */
|
||||
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/gdb.base/corefile.exp
|
||||
Index: gdb-7.6/gdb/testsuite/gdb.base/corefile.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/gdb.base/corefile.exp 2013-01-01 07:33:25.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/gdb.base/corefile.exp 2013-03-10 16:17:15.220114612 +0100
|
||||
--- gdb-7.6.orig/gdb/testsuite/gdb.base/corefile.exp 2013-01-01 07:33:25.000000000 +0100
|
||||
+++ gdb-7.6/gdb/testsuite/gdb.base/corefile.exp 2013-08-06 16:57:14.921518102 +0200
|
||||
@@ -256,3 +256,33 @@ if ![is_remote target] {
|
||||
|
||||
gdb_exit
|
||||
|
|
|
@ -1,209 +0,0 @@
|
|||
http://sourceware.org/ml/gdb-cvs/2013-06/msg00034.html
|
||||
|
||||
### src/gdb/ChangeLog 2013/06/05 20:43:53 1.15689
|
||||
### src/gdb/ChangeLog 2013/06/05 22:28:51 1.15690
|
||||
## -1,3 +1,14 @@
|
||||
+2013-06-05 Doug Evans <dje@google.com>
|
||||
+ Keith Seitz <keiths@redhat.com>
|
||||
+
|
||||
+ PR 15519
|
||||
+ * cp-namespace.c (find_symbol_in_baseclass): Call
|
||||
+ cp_lookup_symbol_in_namespace instead of cp_lookup_symbol_namespace.
|
||||
+ Check result of call to lookup_symbol_static.
|
||||
+ Call lookup_static_symbol_aux unconditionally.
|
||||
+ Call check_typedef on base types before accessing them.
|
||||
+ (cp_lookup_nested_symbol): Fix comment.
|
||||
+
|
||||
2013-06-05 Luis Machado <lgustavo@codesourcery.com>
|
||||
|
||||
* gnu-v3-abi.c (gnuv3_skip_trampoline): Handle thunk
|
||||
--- src/gdb/cp-namespace.c 2013/05/30 17:29:06 1.67
|
||||
+++ src/gdb/cp-namespace.c 2013/06/05 22:28:51 1.68
|
||||
@@ -720,36 +720,40 @@
|
||||
for (i = 0; i < TYPE_N_BASECLASSES (parent_type); ++i)
|
||||
{
|
||||
size_t len;
|
||||
+ struct type *base_type = TYPE_BASECLASS (parent_type, i);
|
||||
const char *base_name = TYPE_BASECLASS_NAME (parent_type, i);
|
||||
|
||||
if (base_name == NULL)
|
||||
continue;
|
||||
|
||||
/* Search this particular base class. */
|
||||
- sym = cp_lookup_symbol_namespace (base_name, name, block, VAR_DOMAIN);
|
||||
+ sym = cp_lookup_symbol_in_namespace (base_name, name, block,
|
||||
+ VAR_DOMAIN, 0);
|
||||
if (sym != NULL)
|
||||
break;
|
||||
|
||||
+ /* Now search all static file-level symbols. We have to do this for
|
||||
+ things like typedefs in the class. First search in this symtab,
|
||||
+ what we want is possibly there. */
|
||||
len = strlen (base_name) + 2 + strlen (name) + 1;
|
||||
concatenated_name = xrealloc (concatenated_name, len);
|
||||
xsnprintf (concatenated_name, len, "%s::%s", base_name, name);
|
||||
sym = lookup_symbol_static (concatenated_name, block, VAR_DOMAIN);
|
||||
+ if (sym != NULL)
|
||||
+ break;
|
||||
|
||||
- /* If there is currently no BLOCK, e.g., the inferior hasn't yet
|
||||
- been started, then try searching all STATIC_BLOCK symbols in
|
||||
- all objfiles. */
|
||||
- if (block == NULL)
|
||||
- {
|
||||
- sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
|
||||
- if (sym != NULL)
|
||||
- break;
|
||||
- }
|
||||
+ /* Nope. We now have to search all static blocks in all objfiles,
|
||||
+ even if block != NULL, because there's no guarantees as to which
|
||||
+ symtab the symbol we want is in. */
|
||||
+ sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
|
||||
+ if (sym != NULL)
|
||||
+ break;
|
||||
|
||||
/* If this class has base classes, search them next. */
|
||||
- if (TYPE_N_BASECLASSES (TYPE_BASECLASS (parent_type, i)) > 0)
|
||||
+ CHECK_TYPEDEF (base_type);
|
||||
+ if (TYPE_N_BASECLASSES (base_type) > 0)
|
||||
{
|
||||
- sym = find_symbol_in_baseclass (TYPE_BASECLASS (parent_type, i),
|
||||
- name, block);
|
||||
+ sym = find_symbol_in_baseclass (base_type, name, block);
|
||||
if (sym != NULL)
|
||||
break;
|
||||
}
|
||||
@@ -797,8 +801,8 @@
|
||||
if (sym != NULL)
|
||||
return sym;
|
||||
|
||||
- /* Now search all static file-level symbols. Not strictly
|
||||
- correct, but more useful than an error. We do not try to
|
||||
+ /* Now search all static file-level symbols. We have to do this
|
||||
+ for things like typedefs in the class. We do not try to
|
||||
guess any imported namespace as even the fully specified
|
||||
namespace search is already not C++ compliant and more
|
||||
assumptions could make it too magic. */
|
||||
### src/gdb/testsuite/ChangeLog 2013/06/05 20:38:37 1.3685
|
||||
### src/gdb/testsuite/ChangeLog 2013/06/05 22:28:51 1.3686
|
||||
## -1,3 +1,11 @@
|
||||
+2013-06-05 Doug Evans <dje@google.com>
|
||||
+ Keith Seitz <keiths@redhat.com>
|
||||
+
|
||||
+ * gdb.cp/derivation2.cc: New file.
|
||||
+ * gdb.cp/derivation.cc (main): Call foo2.
|
||||
+ * gdb.cp/derivation.exp: Add tests for typedefs in another
|
||||
+ file, and when there's an active block.
|
||||
+
|
||||
2013-06-05 Luis Machado <lgustavo@codesourcery.com>
|
||||
|
||||
* gdb.cp/virtfunc.exp (make_one_vtable_result): Handle extra output
|
||||
--- src/gdb/testsuite/gdb.cp/derivation2.cc
|
||||
+++ src/gdb/testsuite/gdb.cp/derivation2.cc 2013-06-10 12:35:14.881272247 +0000
|
||||
@@ -0,0 +1,49 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ This program is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+/* A copy of some classes in derivation.cc so that we can test symbol lookup
|
||||
+ in other CUs. */
|
||||
+
|
||||
+class A2 {
|
||||
+public:
|
||||
+ typedef int value_type;
|
||||
+ value_type a;
|
||||
+
|
||||
+ A2()
|
||||
+ {
|
||||
+ a=1;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+class D2 : public A2 {
|
||||
+public:
|
||||
+ value_type d;
|
||||
+
|
||||
+ D2()
|
||||
+ {
|
||||
+ d=7;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+void
|
||||
+foo2 ()
|
||||
+{
|
||||
+ D2 d2_instance;
|
||||
+ d2_instance.a = 42;
|
||||
+ d2_instance.d = 43;
|
||||
+}
|
||||
--- src/gdb/testsuite/gdb.cp/derivation.cc 2013/01/01 06:33:27 1.5
|
||||
+++ src/gdb/testsuite/gdb.cp/derivation.cc 2013/06/05 22:28:51 1.6
|
||||
@@ -16,6 +16,8 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
+extern void foo2 (); /* from derivation2.cc */
|
||||
+
|
||||
namespace N {
|
||||
typedef double value_type;
|
||||
struct Base { typedef int value_type; };
|
||||
@@ -306,9 +308,7 @@
|
||||
N::Derived::value_type d = 1;
|
||||
N::value_type n = 3.0;
|
||||
dobj.doit ();
|
||||
+ foo2 ();
|
||||
return 0;
|
||||
|
||||
}
|
||||
-
|
||||
-
|
||||
-
|
||||
--- src/gdb/testsuite/gdb.cp/derivation.exp 2013/01/01 06:33:27 1.24
|
||||
+++ src/gdb/testsuite/gdb.cp/derivation.exp 2013/06/05 22:28:51 1.25
|
||||
@@ -32,14 +32,15 @@
|
||||
|
||||
load_lib "cp-support.exp"
|
||||
|
||||
-standard_testfile .cc
|
||||
+standard_testfile derivation.cc derivation2.cc
|
||||
|
||||
-if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
|
||||
+if {[prepare_for_testing $testfile.exp $testfile \
|
||||
+ [list $srcfile $srcfile2] {debug c++}]} {
|
||||
return -1
|
||||
}
|
||||
|
||||
# Check inheritance of typedefs.
|
||||
-foreach klass {"A" "D" "E" "F"} {
|
||||
+foreach klass {"A" "D" "E" "F" "A2" "D2"} {
|
||||
gdb_test "ptype ${klass}::value_type" "type = int"
|
||||
gdb_test "whatis ${klass}::value_type" "type = int"
|
||||
gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
@@ -57,6 +58,13 @@
|
||||
continue
|
||||
}
|
||||
|
||||
+# Check inheritance of typedefs again, but this time with an active block.
|
||||
+foreach klass {"A" "D" "A2" "D2"} {
|
||||
+ gdb_test "ptype ${klass}::value_type" "type = int"
|
||||
+ gdb_test "whatis ${klass}::value_type" "type = int"
|
||||
+ gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
+}
|
||||
+
|
||||
gdb_test "up" ".*main.*" "up from marker1"
|
||||
|
||||
# Print class types and values.
|
|
@ -1,58 +0,0 @@
|
|||
http://sourceware.org/ml/gdb-cvs/2013-06/msg00044.html
|
||||
|
||||
### src/gdb/testsuite/ChangeLog 2013/06/06 19:00:13 1.3688
|
||||
### src/gdb/testsuite/ChangeLog 2013/06/06 19:02:26 1.3689
|
||||
## -1,3 +1,7 @@
|
||||
+2013-06-06 Doug Evans <dje@google.com>
|
||||
+
|
||||
+ * gdb.cp/derivation.exp: Make tests have unique names.
|
||||
+
|
||||
2013-06-06 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.base/dump.exp (capture_value): Don't put expression into
|
||||
--- src/gdb/testsuite/gdb.cp/derivation.exp 2013/06/05 22:28:51 1.25
|
||||
+++ src/gdb/testsuite/gdb.cp/derivation.exp 2013/06/06 19:02:27 1.26
|
||||
@@ -40,15 +40,17 @@
|
||||
}
|
||||
|
||||
# Check inheritance of typedefs.
|
||||
-foreach klass {"A" "D" "E" "F" "A2" "D2"} {
|
||||
- gdb_test "ptype ${klass}::value_type" "type = int"
|
||||
- gdb_test "whatis ${klass}::value_type" "type = int"
|
||||
- gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
-}
|
||||
-foreach klass {"Z" "ZZ"} {
|
||||
- gdb_test "ptype ${klass}::value_type" "type = float"
|
||||
- gdb_test "whatis ${klass}::value_type" "type = float"
|
||||
- gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
+with_test_prefix "before run" {
|
||||
+ foreach klass {"A" "D" "E" "F" "A2" "D2"} {
|
||||
+ gdb_test "ptype ${klass}::value_type" "type = int"
|
||||
+ gdb_test "whatis ${klass}::value_type" "type = int"
|
||||
+ gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
+ }
|
||||
+ foreach klass {"Z" "ZZ"} {
|
||||
+ gdb_test "ptype ${klass}::value_type" "type = float"
|
||||
+ gdb_test "whatis ${klass}::value_type" "type = float"
|
||||
+ gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
+ }
|
||||
}
|
||||
|
||||
# Set it up at a breakpoint so we can play with the variable values.
|
||||
@@ -59,10 +61,12 @@
|
||||
}
|
||||
|
||||
# Check inheritance of typedefs again, but this time with an active block.
|
||||
-foreach klass {"A" "D" "A2" "D2"} {
|
||||
- gdb_test "ptype ${klass}::value_type" "type = int"
|
||||
- gdb_test "whatis ${klass}::value_type" "type = int"
|
||||
- gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
+with_test_prefix "at marker1" {
|
||||
+ foreach klass {"A" "D" "A2" "D2"} {
|
||||
+ gdb_test "ptype ${klass}::value_type" "type = int"
|
||||
+ gdb_test "whatis ${klass}::value_type" "type = int"
|
||||
+ gdb_test "p (${klass}::value_type) 0" " = 0"
|
||||
+ }
|
||||
}
|
||||
|
||||
gdb_test "up" ".*main.*" "up from marker1"
|
|
@ -0,0 +1,86 @@
|
|||
http://sourceware.org/ml/gdb-patches/2013-06/msg00788.html
|
||||
Subject: [PATCH] "enable count" user input error handling (PR gdb/15678)
|
||||
|
||||
Typing "enable count" by itself crashes GDB. Also, if you omit the
|
||||
breakpoint number/range, the error message is not very clear:
|
||||
|
||||
(gdb) enable count 2
|
||||
warning: bad breakpoint number at or near ''
|
||||
(gdb) enable count
|
||||
Segmentation fault (core dumped)
|
||||
|
||||
With this patch, the error messages are slightly more helpful:
|
||||
|
||||
(gdb) enable count 2
|
||||
Argument required (one or more breakpoint numbers).
|
||||
(gdb) enable count
|
||||
Argument required (hit count).
|
||||
|
||||
They are not as helpful to the user as I would like, but it's better
|
||||
than crashing. Suggestions are welcome.
|
||||
|
||||
Simon
|
||||
|
||||
gdb/ChangeLog:
|
||||
2013-06-26 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* breakpoint.c (map_breakpoint_numbers): Check for empty args
|
||||
string.
|
||||
(enable_count_command): Check args for NULL value.
|
||||
|
||||
gdb/testsuite/ChangeLog:
|
||||
2013-06-26 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* gdb.base/ena-dis-br.exp: Test "enable count" for bad user input.
|
||||
---
|
||||
gdb/breakpoint.c | 9 +++++++--
|
||||
gdb/testsuite/gdb.base/ena-dis-br.exp | 8 ++++++++
|
||||
2 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||
index ccd05d9..5a0c5ab 100644
|
||||
--- a/gdb/breakpoint.c
|
||||
+++ b/gdb/breakpoint.c
|
||||
@@ -14389,7 +14389,7 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
|
||||
int match;
|
||||
struct get_number_or_range_state state;
|
||||
|
||||
- if (args == 0)
|
||||
+ if (args == 0 || *args == '\0')
|
||||
error_no_arg (_("one or more breakpoint numbers"));
|
||||
|
||||
init_number_or_range (&state, args);
|
||||
@@ -14713,7 +14713,12 @@ do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
|
||||
static void
|
||||
enable_count_command (char *args, int from_tty)
|
||||
{
|
||||
- int count = get_number (&args);
|
||||
+ int count;
|
||||
+
|
||||
+ if (args == NULL)
|
||||
+ error_no_arg (_("hit count"));
|
||||
+
|
||||
+ count = get_number (&args);
|
||||
|
||||
map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
|
||||
}
|
||||
diff --git a/gdb/testsuite/gdb.base/ena-dis-br.exp b/gdb/testsuite/gdb.base/ena-dis-br.exp
|
||||
index b08b709..82aef64 100644
|
||||
--- a/gdb/testsuite/gdb.base/ena-dis-br.exp
|
||||
+++ b/gdb/testsuite/gdb.base/ena-dis-br.exp
|
||||
@@ -173,6 +173,14 @@ set bp [break_at $bp_location7 "line $bp_location7"]
|
||||
|
||||
set bp2 [break_at marker1 " line ($bp_location15|$bp_location16)"]
|
||||
|
||||
+gdb_test "enable count" \
|
||||
+ "Argument required \\(hit count\\)\\." \
|
||||
+ "enable count missing arguments"
|
||||
+
|
||||
+gdb_test "enable count 2" \
|
||||
+ "Argument required \\(one or more breakpoint numbers\\)\\." \
|
||||
+ "enable count missing last argument"
|
||||
+
|
||||
gdb_test_no_output "enable count 2 $bp" "disable break with count"
|
||||
|
||||
gdb_test "continue" \
|
||||
|
|
@ -169,7 +169,7 @@ Index: gdb-7.5.91.20130407/gdb/gdb-add-index
|
|||
+dir="${file%/*}"
|
||||
+
|
||||
+# We don't care if gdb gives an error.
|
||||
+gdb -nx --batch-silent -ex "file $file" -ex "save gdb-index $dir"
|
||||
+gdb -nx -iex 'set auto-load no' --batch-silent -ex "file $file" -ex "save gdb-index $dir"
|
||||
+
|
||||
+if test -f "${file}.gdb-index"; then
|
||||
+ objcopy --add-section .gdb_index="${file}.gdb-index" --set-section-flags .gdb_index=readonly "$file" "$file"
|
||||
|
|
|
@ -0,0 +1,451 @@
|
|||
commit adde2bff0757e89175ede493f03b86953d0d9352
|
||||
Author: Doug Evans <xdje42@gmail.com>
|
||||
Date: Thu Feb 20 09:13:53 2014 -0800
|
||||
|
||||
Fix PR symtab/16581
|
||||
|
||||
* dwarf2read.c (struct die_info): New member in_process.
|
||||
(reset_die_in_process): New function.
|
||||
(process_die): Set it at the start, reset when returning.
|
||||
(inherit_abstract_dies): Only call process_die if origin_child_die
|
||||
not already being processed.
|
||||
|
||||
testsuite/
|
||||
* gdb.dwarf2/dw2-icycle.S: New file.
|
||||
* gdb.dwarf2/dw2-icycle.c: New file.
|
||||
* gdb.dwarf2/dw2-icycle.exp: New file.
|
||||
|
||||
### a/gdb/ChangeLog
|
||||
### b/gdb/ChangeLog
|
||||
## -1,3 +1,14 @@
|
||||
+2014-02-20 lin zuojian <manjian2006@gmail.com>
|
||||
+ Joel Brobecker <brobecker@adacore.com>
|
||||
+ Doug Evans <xdje42@gmail.com>
|
||||
+
|
||||
+ PR symtab/16581
|
||||
+ * dwarf2read.c (struct die_info): New member in_process.
|
||||
+ (reset_die_in_process): New function.
|
||||
+ (process_die): Set it at the start, reset when returning.
|
||||
+ (inherit_abstract_dies): Only call process_die if origin_child_die
|
||||
+ not already being processed.
|
||||
+
|
||||
2014-02-20 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* windows-nat.c (handle_unload_dll): Add function documentation.
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -1225,6 +1225,9 @@ struct die_info
|
||||
type derived from this DIE. */
|
||||
unsigned char building_fullname : 1;
|
||||
|
||||
+ /* True if this die is in process. PR 16581. */
|
||||
+ unsigned char in_process : 1;
|
||||
+
|
||||
/* Abbrev number */
|
||||
unsigned int abbrev;
|
||||
|
||||
@@ -8008,11 +8011,28 @@ process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
|
||||
}
|
||||
}
|
||||
|
||||
+/* Reset the in_process bit of a die. */
|
||||
+
|
||||
+static void
|
||||
+reset_die_in_process (void *arg)
|
||||
+{
|
||||
+ struct die_info *die = arg;
|
||||
+ die->in_process = 0;
|
||||
+}
|
||||
+
|
||||
/* Process a die and its children. */
|
||||
|
||||
static void
|
||||
process_die (struct die_info *die, struct dwarf2_cu *cu)
|
||||
{
|
||||
+ struct cleanup *in_process;
|
||||
+
|
||||
+ /* We should only be processing those not already in process. */
|
||||
+ gdb_assert (!die->in_process);
|
||||
+
|
||||
+ die->in_process = 1;
|
||||
+ in_process = make_cleanup (reset_die_in_process,die);
|
||||
+
|
||||
switch (die->tag)
|
||||
{
|
||||
case DW_TAG_padding:
|
||||
@@ -7278,6 +7298,8 @@ process_die (struct die_info *die, struc
|
||||
new_symbol (die, NULL, cu);
|
||||
break;
|
||||
}
|
||||
+
|
||||
+ do_cleanups (in_process);
|
||||
}
|
||||
|
||||
/* A helper function for dwarf2_compute_name which determines whether DIE
|
||||
@@ -10967,8 +10989,12 @@ inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
|
||||
if (offsetp >= offsets_end
|
||||
|| offsetp->sect_off > origin_child_die->offset.sect_off)
|
||||
{
|
||||
- /* Found that ORIGIN_CHILD_DIE is really not referenced. */
|
||||
- process_die (origin_child_die, origin_cu);
|
||||
+ /* Found that ORIGIN_CHILD_DIE is really not referenced.
|
||||
+ Check whether we're already processing ORIGIN_CHILD_DIE.
|
||||
+ This can happen with mutually referenced abstract_origins.
|
||||
+ PR 16581. */
|
||||
+ if (!origin_child_die->in_process)
|
||||
+ process_die (origin_child_die, origin_cu);
|
||||
}
|
||||
origin_child_die = sibling_die (origin_child_die);
|
||||
}
|
||||
### a/gdb/testsuite/ChangeLog
|
||||
### b/gdb/testsuite/ChangeLog
|
||||
## -1,3 +1,12 @@
|
||||
+2014-02-20 lin zuojian <manjian2006@gmail.com>
|
||||
+ Joel Brobecker <brobecker@adacore.com>
|
||||
+ Doug Evans <xdje42@gmail.com>
|
||||
+
|
||||
+ PR symtab/16581
|
||||
+ * gdb.dwarf2/dw2-icycle.S: New file.
|
||||
+ * gdb.dwarf2/dw2-icycle.c: New file.
|
||||
+ * gdb.dwarf2/dw2-icycle.exp: New file.
|
||||
+
|
||||
2014-02-19 Siva Chandra Reddy <sivachandra@google.com>
|
||||
|
||||
* gdb.python/py-value-cc.cc: Improve test case to enable testing
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.dwarf2/dw2-icycle.S
|
||||
@@ -0,0 +1,258 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ This program is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+ .text
|
||||
+
|
||||
+.Ltext0:
|
||||
+ .type p__top__middle__inside.3062, @function
|
||||
+p__top__middle__inside.3062:
|
||||
+.LFB4:
|
||||
+ .file 1 "p.adb"
|
||||
+ .4byte 0
|
||||
+.LBE6:
|
||||
+
|
||||
+ .globl p__top
|
||||
+ .type p__top, @function
|
||||
+p__top:
|
||||
+.LFB2:
|
||||
+ .4byte 0
|
||||
+.LFE2:
|
||||
+.Letext0:
|
||||
+
|
||||
+ .section .debug_info,"",@progbits
|
||||
+.Ldebug_info0:
|
||||
+ .4byte .Ledebug_info0 - .Lsdebug_info0 /* Length of CU Info */
|
||||
+.Lsdebug_info0:
|
||||
+ .2byte 0x4 /* DWARF version number */
|
||||
+ .4byte .Ldebug_abbrev0 /* Offset Into Abbrev. Section */
|
||||
+ .byte 0x4 /* Pointer Size (in bytes) */
|
||||
+ .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */
|
||||
+ .ascii "GNU Ada 4.9.0 20140126\0" /* DW_AT_producer */
|
||||
+ .byte 0xd /* DW_AT_language */
|
||||
+ .ascii "p.adb\0" /* DW_AT_name */
|
||||
+ .ascii "/tmp\0" /* DW_AT_comp_dir */
|
||||
+ .4byte .Ltext0 /* DW_AT_low_pc */
|
||||
+ .4byte .Letext0-.Ltext0 /* DW_AT_high_pc */
|
||||
+.S0x142:
|
||||
+ .uleb128 0x8 /* (DIE (0x142) DW_TAG_base_type) */
|
||||
+ .byte 0x4 /* DW_AT_byte_size */
|
||||
+ .byte 0x5 /* DW_AT_encoding */
|
||||
+ .ascii "integer\0" /* DW_AT_name */
|
||||
+
|
||||
+ .uleb128 0x13 /* (DIE (0x1b4) DW_TAG_subprogram) */
|
||||
+ /* DW_AT_external */
|
||||
+ .ascii "p__top\0" /* DW_AT_name */
|
||||
+ .byte 0x1 /* DW_AT_decl_file (p.adb) */
|
||||
+ .byte 0x3 /* DW_AT_decl_line */
|
||||
+ .4byte .LFB2 /* DW_AT_low_pc */
|
||||
+ .4byte .LFE2-.LFB2 /* DW_AT_high_pc */
|
||||
+ .uleb128 0x1 /* DW_AT_frame_base */
|
||||
+ .byte 0x9c /* DW_OP_call_frame_cfa */
|
||||
+ /* DW_AT_GNU_all_call_sites */
|
||||
+ .4byte .S0x4fc - .Ldebug_info0 /* DW_AT_sibling */
|
||||
+.S0x1e0:
|
||||
+ .uleb128 0x15 /* (DIE (0x1e0) DW_TAG_subprogram) */
|
||||
+ .ascii "p__top__middle\0" /* DW_AT_name */
|
||||
+ .byte 0x1 /* DW_AT_decl_file (p.adb) */
|
||||
+ .byte 0x4 /* DW_AT_decl_line */
|
||||
+ .byte 0x1 /* DW_AT_inline */
|
||||
+ .4byte .S0x374 - .Ldebug_info0 /* DW_AT_sibling */
|
||||
+.S0x202:
|
||||
+ .uleb128 0x15 /* (DIE (0x202) DW_TAG_subprogram) */
|
||||
+ .ascii "p__top__middle__inside\0" /* DW_AT_name */
|
||||
+ .byte 0x1 /* DW_AT_decl_file (p.adb) */
|
||||
+ .byte 0x5 /* DW_AT_decl_line */
|
||||
+ .byte 0x1 /* DW_AT_inline */
|
||||
+ .4byte .S0x225 - .Ldebug_info0 /* DW_AT_sibling */
|
||||
+ .byte 0 /* end of children of DIE 0x202 */
|
||||
+.S0x225:
|
||||
+ .uleb128 0x18 /* (DIE (0x225) DW_TAG_subprogram) */
|
||||
+ .4byte .S0x202 - .Ldebug_info0 /* DW_AT_abstract_origin */
|
||||
+ .4byte .LFB4 /* DW_AT_low_pc */
|
||||
+ .4byte .LBE6-.LFB4 /* DW_AT_high_pc */
|
||||
+ .uleb128 0x1 /* DW_AT_frame_base */
|
||||
+ .byte 0x9c /* DW_OP_call_frame_cfa */
|
||||
+ .uleb128 0x1 /* DW_AT_static_link */
|
||||
+ .byte 0x56 /* DW_OP_reg6 */
|
||||
+ /* DW_AT_GNU_all_call_sites */
|
||||
+ .uleb128 0x1a /* (DIE (0x247) DW_TAG_inlined_subroutine) */
|
||||
+ .4byte .S0x1e0 - .Ldebug_info0 /* DW_AT_abstract_origin */
|
||||
+ .4byte .LFB4 /* DW_AT_low_pc */
|
||||
+ .4byte .LBE6-.LFB4 /* DW_AT_high_pc */
|
||||
+ .byte 0x1 /* DW_AT_call_file (p.adb) */
|
||||
+ .byte 0x14 /* DW_AT_call_line */
|
||||
+ .4byte .S0x374 - .Ldebug_info0 /* DW_AT_sibling */
|
||||
+ .byte 0 /* end of children of DIE 0x247 */
|
||||
+ .byte 0 /* end of children of DIE 0x225 */
|
||||
+ .byte 0 /* end of children of DIE 0x1e0 */
|
||||
+.S0x374:
|
||||
+ .uleb128 0x23 /* (DIE (0x382) DW_TAG_inlined_subroutine) */
|
||||
+ .4byte .S0x1e0 - .Ldebug_info0 /* DW_AT_abstract_origin */
|
||||
+ .4byte .LFB4 /* DW_AT_low_pc */
|
||||
+ .4byte .LBE6-.LFB4 /* DW_AT_high_pc */
|
||||
+ .byte 0x1 /* DW_AT_call_file (p.adb) */
|
||||
+ .byte 0x1d /* DW_AT_call_line */
|
||||
+ .byte 0 /* end of children of DIE 0x382 */
|
||||
+ .byte 0 /* end of children of DIE 0x1b4 */
|
||||
+.S0x4fc:
|
||||
+ .uleb128 0x28 /* (DIE (0x52e) DW_TAG_subprogram) */
|
||||
+ /* DW_AT_external */
|
||||
+ .ascii "__gnat_rcheck_PE_Explicit_Raise\0" /* DW_AT_name */
|
||||
+ /* DW_AT_artificial */
|
||||
+ /* DW_AT_declaration */
|
||||
+ .byte 0 /* end of children of DIE 0x52e */
|
||||
+ .byte 0 /* end of children of DIE 0xb */
|
||||
+.Ledebug_info0:
|
||||
+
|
||||
+ .section .debug_abbrev,"",@progbits
|
||||
+.Ldebug_abbrev0:
|
||||
+ .uleb128 0x1 /* (abbrev code) */
|
||||
+ .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x25 /* (DW_AT_producer) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .uleb128 0x13 /* (DW_AT_language) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x3 /* (DW_AT_name) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .uleb128 0x1b /* (DW_AT_comp_dir) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .uleb128 0x11 /* (DW_AT_low_pc) */
|
||||
+ .uleb128 0x1 /* (DW_FORM_addr) */
|
||||
+ .uleb128 0x12 /* (DW_AT_high_pc) */
|
||||
+ .uleb128 0x6 /* (DW_FORM_data4) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x8 /* (abbrev code) */
|
||||
+ .uleb128 0x24 /* (TAG: DW_TAG_base_type) */
|
||||
+ .byte 0 /* DW_children_no */
|
||||
+ .uleb128 0xb /* (DW_AT_byte_size) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x3e /* (DW_AT_encoding) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x3 /* (DW_AT_name) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x13 /* (abbrev code) */
|
||||
+ .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x3f /* (DW_AT_external) */
|
||||
+ .uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
+ .uleb128 0x3 /* (DW_AT_name) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .uleb128 0x3a /* (DW_AT_decl_file) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x3b /* (DW_AT_decl_line) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x11 /* (DW_AT_low_pc) */
|
||||
+ .uleb128 0x1 /* (DW_FORM_addr) */
|
||||
+ .uleb128 0x12 /* (DW_AT_high_pc) */
|
||||
+ .uleb128 0x6 /* (DW_FORM_data4) */
|
||||
+ .uleb128 0x40 /* (DW_AT_frame_base) */
|
||||
+ .uleb128 0x18 /* (DW_FORM_exprloc) */
|
||||
+ .uleb128 0x2117 /* (DW_AT_GNU_all_call_sites) */
|
||||
+ .uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
+ .uleb128 0x1 /* (DW_AT_sibling) */
|
||||
+ .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x15 /* (abbrev code) */
|
||||
+ .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x3 /* (DW_AT_name) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .uleb128 0x3a /* (DW_AT_decl_file) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x3b /* (DW_AT_decl_line) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x20 /* (DW_AT_inline) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x1 /* (DW_AT_sibling) */
|
||||
+ .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x18 /* (abbrev code) */
|
||||
+ .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x31 /* (DW_AT_abstract_origin) */
|
||||
+ .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
+ .uleb128 0x11 /* (DW_AT_low_pc) */
|
||||
+ .uleb128 0x1 /* (DW_FORM_addr) */
|
||||
+ .uleb128 0x12 /* (DW_AT_high_pc) */
|
||||
+ .uleb128 0x6 /* (DW_FORM_data4) */
|
||||
+ .uleb128 0x40 /* (DW_AT_frame_base) */
|
||||
+ .uleb128 0x18 /* (DW_FORM_exprloc) */
|
||||
+ .uleb128 0x48 /* (DW_AT_static_link) */
|
||||
+ .uleb128 0x18 /* (DW_FORM_exprloc) */
|
||||
+ .uleb128 0x2117 /* (DW_AT_GNU_all_call_sites) */
|
||||
+ .uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x1a /* (abbrev code) */
|
||||
+ .uleb128 0x1d /* (TAG: DW_TAG_inlined_subroutine) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x31 /* (DW_AT_abstract_origin) */
|
||||
+ .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
+ .uleb128 0x11 /* (DW_AT_low_pc) */
|
||||
+ .uleb128 0x1 /* (DW_FORM_addr) */
|
||||
+ .uleb128 0x12 /* (DW_AT_high_pc) */
|
||||
+ .uleb128 0x6 /* (DW_FORM_data4) */
|
||||
+ .uleb128 0x58 /* (DW_AT_call_file) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x59 /* (DW_AT_call_line) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x1 /* (DW_AT_sibling) */
|
||||
+ .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x23 /* (abbrev code) */
|
||||
+ .uleb128 0x1d /* (TAG: DW_TAG_inlined_subroutine) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x31 /* (DW_AT_abstract_origin) */
|
||||
+ .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
+ .uleb128 0x11 /* (DW_AT_low_pc) */
|
||||
+ .uleb128 0x1 /* (DW_FORM_addr) */
|
||||
+ .uleb128 0x12 /* (DW_AT_high_pc) */
|
||||
+ .uleb128 0x6 /* (DW_FORM_data4) */
|
||||
+ .uleb128 0x58 /* (DW_AT_call_file) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .uleb128 0x59 /* (DW_AT_call_line) */
|
||||
+ .uleb128 0xb /* (DW_FORM_data1) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x28 /* (abbrev code) */
|
||||
+ .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */
|
||||
+ .byte 0x1 /* DW_children_yes */
|
||||
+ .uleb128 0x3f /* (DW_AT_external) */
|
||||
+ .uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
+ .uleb128 0x3 /* (DW_AT_name) */
|
||||
+ .uleb128 0x8 /* (DW_FORM_string) */
|
||||
+ .uleb128 0x34 /* (DW_AT_artificial) */
|
||||
+ .uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
+ .uleb128 0x3c /* (DW_AT_declaration) */
|
||||
+ .uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+
|
||||
+ .section .debug_line
|
||||
+.Lline1_begin:
|
||||
+ .byte 0
|
||||
+
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.dwarf2/dw2-icycle.c
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2004-2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ This program is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+/* Dummy main function. */
|
||||
+
|
||||
+int
|
||||
+main()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.dwarf2/dw2-icycle.exp
|
||||
@@ -0,0 +1,46 @@
|
||||
+# Copyright 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# This test exercises PR 16581.
|
||||
+
|
||||
+load_lib dwarf.exp
|
||||
+
|
||||
+# This test can only be run on targets which support DWARF-2 and use gas.
|
||||
+if {![dwarf2_support]} {
|
||||
+ return 0
|
||||
+}
|
||||
+
|
||||
+standard_testfile .S .c
|
||||
+
|
||||
+if { [prepare_for_testing ${testfile}.exp ${testfile} \
|
||||
+ [list $srcfile $srcfile2] {nodebug}] } {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+# We are trying to verify that the partial symtab to symtab expansion
|
||||
+# for the debugging info hand-coded in our assembly file does not cause
|
||||
+# the debugger to crash (infinite recursion). To facilitate the test,
|
||||
+# start the debugger with -readnow. This force expansion as soon as
|
||||
+# the objfile is loaded.
|
||||
+
|
||||
+set saved_gdbflags $GDBFLAGS
|
||||
+set GDBFLAGS "$GDBFLAGS -readnow"
|
||||
+clean_restart ${testfile}
|
||||
+set GDBFLAGS $saved_gdbflags
|
||||
+
|
||||
+# And just to be sure that the debugger did not crash after having
|
||||
+# expanded our symbols, do a life-check.
|
||||
+
|
||||
+gdb_test "echo life check\\n" "life check"
|
|
@ -0,0 +1,125 @@
|
|||
http://sourceware.org/ml/gdb-patches/2014-02/msg00729.html
|
||||
Subject: [patch] [testsuite] Fix dw2-icycle.exp -fsanitize=address GDB crash
|
||||
|
||||
|
||||
--WIyZ46R2i8wDzkSu
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline
|
||||
|
||||
Hi Doug,
|
||||
|
||||
in fact obvious, I will check it in.
|
||||
|
||||
binutils readelf -wi:
|
||||
<4><a2>: Abbrev Number: 26 (DW_TAG_inlined_subroutine)
|
||||
<a3> DW_AT_abstract_origin: <0x5a>
|
||||
<a7> DW_AT_low_pc : 0x400590
|
||||
<ab> DW_AT_high_pc : 0x4
|
||||
<af> DW_AT_call_file : 1
|
||||
<b0> DW_AT_call_line : 20
|
||||
<b1> DW_AT_sibling : <0xb8>
|
||||
<2><b8>: Abbrev Number: 35 (DW_TAG_inlined_subroutine)
|
||||
<b9> DW_AT_abstract_origin: <0x5a>
|
||||
<bd> DW_AT_low_pc : 0x400590
|
||||
<c1> DW_AT_high_pc : 0x4
|
||||
<c5> DW_AT_call_file : 1
|
||||
<c6> DW_AT_call_line : 29
|
||||
|
||||
<b1> DW_AT_sibling points to the next DIE - but that DIE is 2 levels
|
||||
upwards - definitely not a sibling. This confuses GDB up to a crash:
|
||||
|
||||
==32143== ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6024000198ac at pc 0xb4d104 bp 0x7fff63e96e70 sp 0x7fff63e96e60
|
||||
READ of size 1 at 0x6024000198ac thread T0
|
||||
#0 0xb4d103 in read_unsigned_leb128 (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb4d103)
|
||||
#1 0xb15f3c in peek_die_abbrev (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb15f3c)
|
||||
#2 0xb46185 in load_partial_dies (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb46185)
|
||||
#3 0xb103fb in process_psymtab_comp_unit_reader (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb103fb)
|
||||
#4 0xb0d2a9 in init_cutu_and_read_dies (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb0d2a9)
|
||||
#5 0xb1115f in process_psymtab_comp_unit (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb1115f)
|
||||
#6 0xb1235f in dwarf2_build_psymtabs_hard (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb1235f)
|
||||
#7 0xb05536 in dwarf2_build_psymtabs (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0xb05536)
|
||||
#8 0x86d5a5 in read_psyms (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x86d5a5)
|
||||
#9 0x9b1c37 in require_partial_symbols (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x9b1c37)
|
||||
#10 0x9bf2d0 in read_symbols (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x9bf2d0)
|
||||
#11 0x9c014c in syms_from_objfile_1 (/home/jkratoch/redhat/gdb-clean/gdb/gdb+0x9c014c)
|
||||
|
||||
I have added === Delete all DW_AT_sibling ===:
|
||||
https://sourceware.org/gdb/wiki/GDBTestcaseCookbook?action=diff&rev2=31&rev1=30
|
||||
|
||||
|
||||
Jan
|
||||
|
||||
--WIyZ46R2i8wDzkSu
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline; filename="sibling.patch"
|
||||
|
||||
gdb/testsuite/
|
||||
2014-02-24 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix dw2-icycle.exp -fsanitize=address GDB crash.
|
||||
* gdb.dwarf2/dw2-icycle.S: Remove all DW_AT_sibling.
|
||||
|
||||
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-icycle.S b/gdb/testsuite/gdb.dwarf2/dw2-icycle.S
|
||||
index 1f84e4a..938ff20 100644
|
||||
--- a/gdb/testsuite/gdb.dwarf2/dw2-icycle.S
|
||||
+++ b/gdb/testsuite/gdb.dwarf2/dw2-icycle.S
|
||||
@@ -63,21 +63,18 @@ p__top:
|
||||
.uleb128 0x1 /* DW_AT_frame_base */
|
||||
.byte 0x9c /* DW_OP_call_frame_cfa */
|
||||
/* DW_AT_GNU_all_call_sites */
|
||||
- .4byte .S0x4fc - .Ldebug_info0 /* DW_AT_sibling */
|
||||
.S0x1e0:
|
||||
.uleb128 0x15 /* (DIE (0x1e0) DW_TAG_subprogram) */
|
||||
.ascii "p__top__middle\0" /* DW_AT_name */
|
||||
.byte 0x1 /* DW_AT_decl_file (p.adb) */
|
||||
.byte 0x4 /* DW_AT_decl_line */
|
||||
.byte 0x1 /* DW_AT_inline */
|
||||
- .4byte .S0x374 - .Ldebug_info0 /* DW_AT_sibling */
|
||||
.S0x202:
|
||||
.uleb128 0x15 /* (DIE (0x202) DW_TAG_subprogram) */
|
||||
.ascii "p__top__middle__inside\0" /* DW_AT_name */
|
||||
.byte 0x1 /* DW_AT_decl_file (p.adb) */
|
||||
.byte 0x5 /* DW_AT_decl_line */
|
||||
.byte 0x1 /* DW_AT_inline */
|
||||
- .4byte .S0x225 - .Ldebug_info0 /* DW_AT_sibling */
|
||||
.byte 0 /* end of children of DIE 0x202 */
|
||||
.S0x225:
|
||||
.uleb128 0x18 /* (DIE (0x225) DW_TAG_subprogram) */
|
||||
@@ -95,7 +92,6 @@ p__top:
|
||||
.4byte .LBE6-.LFB4 /* DW_AT_high_pc */
|
||||
.byte 0x1 /* DW_AT_call_file (p.adb) */
|
||||
.byte 0x14 /* DW_AT_call_line */
|
||||
- .4byte .S0x374 - .Ldebug_info0 /* DW_AT_sibling */
|
||||
.byte 0 /* end of children of DIE 0x247 */
|
||||
.byte 0 /* end of children of DIE 0x225 */
|
||||
.byte 0 /* end of children of DIE 0x1e0 */
|
||||
@@ -167,8 +163,6 @@ p__top:
|
||||
.uleb128 0x18 /* (DW_FORM_exprloc) */
|
||||
.uleb128 0x2117 /* (DW_AT_GNU_all_call_sites) */
|
||||
.uleb128 0x19 /* (DW_FORM_flag_present) */
|
||||
- .uleb128 0x1 /* (DW_AT_sibling) */
|
||||
- .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
.byte 0
|
||||
.byte 0
|
||||
.uleb128 0x15 /* (abbrev code) */
|
||||
@@ -182,8 +176,6 @@ p__top:
|
||||
.uleb128 0xb /* (DW_FORM_data1) */
|
||||
.uleb128 0x20 /* (DW_AT_inline) */
|
||||
.uleb128 0xb /* (DW_FORM_data1) */
|
||||
- .uleb128 0x1 /* (DW_AT_sibling) */
|
||||
- .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
.byte 0
|
||||
.byte 0
|
||||
.uleb128 0x18 /* (abbrev code) */
|
||||
@@ -216,8 +208,6 @@ p__top:
|
||||
.uleb128 0xb /* (DW_FORM_data1) */
|
||||
.uleb128 0x59 /* (DW_AT_call_line) */
|
||||
.uleb128 0xb /* (DW_FORM_data1) */
|
||||
- .uleb128 0x1 /* (DW_AT_sibling) */
|
||||
- .uleb128 0x13 /* (DW_FORM_ref4) */
|
||||
.byte 0
|
||||
.byte 0
|
||||
.uleb128 0x23 /* (abbrev code) */
|
||||
|
||||
--WIyZ46R2i8wDzkSu--
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
http://sourceware.org/ml/gdb-patches/2014-02/msg00731.html
|
||||
Subject: [patch] gdb_assert -> complaint for weird DWARF
|
||||
|
||||
|
||||
--6TrnltStXW4iwmi0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline
|
||||
|
||||
Hi,
|
||||
|
||||
PR 16581:
|
||||
GDB crash on inherit_abstract_dies infinite recursion
|
||||
https://sourceware.org/bugzilla/show_bug.cgi?id=16581
|
||||
|
||||
fixed crash from an infinite recursion. But in rare cases the new code can
|
||||
now gdb_assert() due to weird DWARF file.
|
||||
|
||||
I do not yet fully understand why the DWARF is as it is but just GDB should
|
||||
never crash due to invalid DWARF anyway. The "invalid" DWARF I see only in
|
||||
Fedora GCC build, not in FSF GCC build, more info at:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1069382
|
||||
http://people.redhat.com/jkratoch/gcc-debuginfo-4.8.2-7.fc20.x86_64-gnatbind.debug
|
||||
|
||||
|
||||
Thanks,
|
||||
Jan
|
||||
|
||||
--6TrnltStXW4iwmi0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
Content-Disposition: inline; filename="complaint.patch"
|
||||
|
||||
gdb/
|
||||
2014-02-24 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* dwarf2read.c (process_die): Change gdb_assert to complaint.
|
||||
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
index 3eaa0b1..71f5d34 100644
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -8029,7 +8029,13 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
|
||||
struct cleanup *in_process;
|
||||
|
||||
/* We should only be processing those not already in process. */
|
||||
- gdb_assert (!die->in_process);
|
||||
+ if (die->in_process)
|
||||
+ {
|
||||
+ complaint (&symfile_complaints,
|
||||
+ _("DIE at 0x%x attempted to be processed twice"),
|
||||
+ die->offset.sect_off);
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
die->in_process = 1;
|
||||
in_process = make_cleanup (reset_die_in_process,die);
|
||||
|
||||
--6TrnltStXW4iwmi0--
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
Index: gdb-7.6.1/gdb/c-exp.y
|
||||
===================================================================
|
||||
--- gdb-7.6.1.orig/gdb/c-exp.y 2013-11-09 17:29:19.336729300 +0100
|
||||
+++ gdb-7.6.1/gdb/c-exp.y 2013-11-09 17:29:21.935727454 +0100
|
||||
@@ -2890,6 +2890,30 @@ classify_inner_name (const struct block
|
||||
{
|
||||
case LOC_BLOCK:
|
||||
case LOC_LABEL:
|
||||
+ {
|
||||
+ struct field_of_this_result fot;
|
||||
+
|
||||
+ /* We might have erroneously found a constructor where we wanted
|
||||
+ a type name. The trick is ascertaining what the user wanted.
|
||||
+ If cp_lookup_nested_symbol found a constructor, but it is for a
|
||||
+ different type than CONTEXT, then this is really a type, not a
|
||||
+ constructor. Look for the type and return that. */
|
||||
+ memset (&fot, 0, sizeof (fot));
|
||||
+ check_field (type, copy, &fot);
|
||||
+ if (fot.fn_field != NULL
|
||||
+ && TYPE_FN_FIELD_CONSTRUCTOR (fot.fn_field->fn_fields, 0)
|
||||
+ && !types_equal (type, fot.type))
|
||||
+ {
|
||||
+ struct symbol *sym;
|
||||
+
|
||||
+ sym = lookup_symbol (copy, block, STRUCT_DOMAIN, NULL);
|
||||
+ if (sym != NULL)
|
||||
+ {
|
||||
+ yylval.tsym.type = SYMBOL_TYPE (sym);
|
||||
+ return TYPENAME;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
return ERROR;
|
||||
|
||||
case LOC_TYPEDEF:
|
||||
Index: gdb-7.6.1/gdb/symtab.c
|
||||
===================================================================
|
||||
--- gdb-7.6.1.orig/gdb/symtab.c 2013-11-09 17:29:19.338729298 +0100
|
||||
+++ gdb-7.6.1/gdb/symtab.c 2013-11-09 17:29:21.936727453 +0100
|
||||
@@ -1260,7 +1260,7 @@ lookup_language_this (const struct langu
|
||||
return 1 if the component named NAME from the ultimate target
|
||||
structure/union is defined, otherwise, return 0. */
|
||||
|
||||
-static int
|
||||
+int
|
||||
check_field (struct type *type, const char *name,
|
||||
struct field_of_this_result *is_a_field_of_this)
|
||||
{
|
||||
Index: gdb-7.6.1/gdb/symtab.h
|
||||
===================================================================
|
||||
--- gdb-7.6.1.orig/gdb/symtab.h 2013-11-09 17:29:19.339729298 +0100
|
||||
+++ gdb-7.6.1/gdb/symtab.h 2013-11-09 17:27:11.329820268 +0100
|
||||
@@ -1318,4 +1318,9 @@ void iterate_over_symbols (const struct
|
||||
struct cleanup *demangle_for_lookup (const char *name, enum language lang,
|
||||
const char **result_name);
|
||||
|
||||
+/* See comment in symtab.c. */
|
||||
+
|
||||
+int check_field (struct type *type, const char *name,
|
||||
+ struct field_of_this_result *is_a_field_of_this);
|
||||
+
|
||||
#endif /* !defined(SYMTAB_H) */
|
||||
Index: gdb-7.6.1/gdb/valops.c
|
||||
===================================================================
|
||||
--- gdb-7.6.1.orig/gdb/valops.c 2013-11-09 17:29:19.340729297 +0100
|
||||
+++ gdb-7.6.1/gdb/valops.c 2013-11-09 17:28:02.417784136 +0100
|
||||
@@ -3401,10 +3401,35 @@ value_struct_elt_for_reference (struct t
|
||||
return value_from_longest
|
||||
(lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
|
||||
offset + (TYPE_FIELD_BITPOS (t, i) >> 3));
|
||||
- else if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||
+ else if (noside != EVAL_NORMAL)
|
||||
return allocate_value (TYPE_FIELD_TYPE (t, i));
|
||||
else
|
||||
- error (_("Cannot reference non-static field \"%s\""), name);
|
||||
+ {
|
||||
+ /* Try to evaluate NAME as a qualified name with implicit
|
||||
+ this pointer. In this case, attempt to return the
|
||||
+ equivalent to `this->*(&TYPE::NAME)'. */
|
||||
+ v = value_of_this_silent (current_language);
|
||||
+ if (v != NULL)
|
||||
+ {
|
||||
+ struct value *ptr;
|
||||
+ long mem_offset;
|
||||
+ struct type *type, *tmp;
|
||||
+
|
||||
+ ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
|
||||
+ type = check_typedef (value_type (ptr));
|
||||
+ gdb_assert (type != NULL
|
||||
+ && TYPE_CODE (type) == TYPE_CODE_MEMBERPTR);
|
||||
+ tmp = lookup_pointer_type (TYPE_DOMAIN_TYPE (type));
|
||||
+ v = value_cast_pointers (tmp, v, 1);
|
||||
+ mem_offset = value_as_long (ptr);
|
||||
+ tmp = lookup_pointer_type (TYPE_TARGET_TYPE (type));
|
||||
+ result = value_from_pointer (tmp,
|
||||
+ value_as_long (v) + mem_offset);
|
||||
+ return value_ind (result);
|
||||
+ }
|
||||
+
|
||||
+ error (_("Cannot reference non-static field \"%s\""), name);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
Index: gdb-7.6.1/gdb/testsuite/gdb.cp/impl-this.cc
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ gdb-7.6.1/gdb/testsuite/gdb.cp/impl-this.cc 2013-11-09 17:29:21.938727452 +0100
|
||||
@@ -0,0 +1,96 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ This program is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#ifdef DEBUG
|
||||
+#include <stdio.h>
|
||||
+#endif
|
||||
+
|
||||
+class A
|
||||
+{
|
||||
+public:
|
||||
+ int i;
|
||||
+ int z;
|
||||
+ A () : i (1), z (10) {}
|
||||
+};
|
||||
+
|
||||
+class B : public virtual A
|
||||
+{
|
||||
+public:
|
||||
+ int i;
|
||||
+ B () : i (2) {}
|
||||
+};
|
||||
+
|
||||
+class C : public virtual A
|
||||
+{
|
||||
+public:
|
||||
+ int i;
|
||||
+ int c;
|
||||
+ C () : i (3), c (30) {}
|
||||
+};
|
||||
+
|
||||
+class D : public B, public C
|
||||
+{
|
||||
+public:
|
||||
+ int i;
|
||||
+ int x;
|
||||
+ D () : i (4), x (40) {}
|
||||
+
|
||||
+#ifdef DEBUG
|
||||
+#define SUM(X) \
|
||||
+ do \
|
||||
+ { \
|
||||
+ sum += (X); \
|
||||
+ printf ("" #X " = %d\n", (X)); \
|
||||
+ } \
|
||||
+ while (0)
|
||||
+#else
|
||||
+#define SUM(X) sum += (X)
|
||||
+#endif
|
||||
+
|
||||
+int
|
||||
+f (void)
|
||||
+ {
|
||||
+ int sum = 0;
|
||||
+
|
||||
+ SUM (i);
|
||||
+ SUM (D::i);
|
||||
+ SUM (D::B::i);
|
||||
+ SUM (B::i);
|
||||
+ SUM (D::C::i);
|
||||
+ SUM (C::i);
|
||||
+ SUM (D::B::A::i);
|
||||
+ SUM (B::A::i);
|
||||
+ SUM (A::i);
|
||||
+ SUM (D::C::A::i);
|
||||
+ SUM (C::A::i);
|
||||
+ SUM (D::x);
|
||||
+ SUM (x);
|
||||
+ SUM (D::C::c);
|
||||
+ SUM (C::c);
|
||||
+ SUM (c);
|
||||
+
|
||||
+ return sum;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ D d;
|
||||
+
|
||||
+ return d.f ();
|
||||
+}
|
||||
Index: gdb-7.6.1/gdb/testsuite/gdb.cp/impl-this.exp
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ gdb-7.6.1/gdb/testsuite/gdb.cp/impl-this.exp 2013-11-09 17:29:21.939727451 +0100
|
||||
@@ -0,0 +1,89 @@
|
||||
+# Copyright 2013 Free Software Foundation, Inc.
|
||||
+
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# This file is part of the gdb testsuite
|
||||
+
|
||||
+# Test expressions which assume an implicit "this" with a qualified
|
||||
+# name.
|
||||
+
|
||||
+if {[skip_cplus_tests]} { continue }
|
||||
+
|
||||
+standard_testfile .cc
|
||||
+
|
||||
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+# First test expressions when there is no context.
|
||||
+gdb_test "print i" "No symbol \"i\" in current context."
|
||||
+gdb_test "print D::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print D::B::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print B::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print D::C::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print C::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print D::B::A::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print B::A::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print A::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print D::C::A::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print C::A::i" "Cannot reference non-static field \"i\""
|
||||
+gdb_test "print D::x" "Cannot reference non-static field \"x\""
|
||||
+gdb_test "print x" "No symbol \"x\" in current context."
|
||||
+gdb_test "print D::C::c" "Cannot reference non-static field \"c\""
|
||||
+gdb_test "print C::c" "Cannot reference non-static field \"c\""
|
||||
+gdb_test "print c" "No symbol \"c\" in current context."
|
||||
+
|
||||
+# Run to D::f.
|
||||
+if {![runto_main]} {
|
||||
+ perror "couldn't run to main"
|
||||
+ continue
|
||||
+}
|
||||
+
|
||||
+gdb_breakpoint "D::f"
|
||||
+gdb_continue_to_breakpoint "run to D::f"
|
||||
+
|
||||
+# Now test valid expressions in the class hierarchy for D.
|
||||
+gdb_test "print i" "= 4"
|
||||
+gdb_test "print D::i" "= 4"
|
||||
+gdb_test "print D::B::i" "= 2"
|
||||
+gdb_test "print B::i" "= 2"
|
||||
+gdb_test "print D::C::i" "= 3"
|
||||
+gdb_test "print C::i" "= 3"
|
||||
+gdb_test "print D::B::A::i" "= 1"
|
||||
+gdb_test "print B::A::i" "= 1"
|
||||
+gdb_test "print A::i" "= 1"
|
||||
+gdb_test "print D::C::A::i" "= 1"
|
||||
+gdb_test "print C::A::i" "= 1"
|
||||
+gdb_test "print D::x" "= 40"
|
||||
+gdb_test "print x" "= 40"
|
||||
+gdb_test "print D::C::c" "= 30"
|
||||
+gdb_test "print C::c" "= 30"
|
||||
+gdb_test "print c" "= 30"
|
||||
+
|
||||
+# Test some invalid expressions
|
||||
+gdb_test "print D::B::c" "There is no field named c"
|
||||
+gdb_test "print D::B::A::c" "There is no field named c"
|
||||
+gdb_test "print D::C::A::c" "There is no field named c"
|
||||
+gdb_test "print B::c" "There is no field named c"
|
||||
+gdb_test "print B::A::c" "There is no field named c"
|
||||
+gdb_test "print C::A::c" "There is no field named c"
|
||||
+gdb_test "print D::B::x" "There is no field named x"
|
||||
+gdb_test "print D::B::A::x" "There is no field named x"
|
||||
+gdb_test "print B::x" "There is no field named x"
|
||||
+gdb_test "print B::A::x" "There is no field named x"
|
||||
+gdb_test "print D::C::x" "There is no field named x"
|
||||
+gdb_test "print C::x" "There is no field named x"
|
||||
+gdb_test "print D::C::A::x" "There is no field named x"
|
||||
+gdb_test "print C::A::x" "There is no field named x"
|
||||
+
|
|
@ -0,0 +1,731 @@
|
|||
[PATCH] Full POWER8 binutils support
|
||||
http://sourceware.org/ml/binutils/2013-05/msg00235.html
|
||||
http://sourceware.org/ml/binutils-cvs/2013-05/msg00095.html
|
||||
|
||||
### src/opcodes/ChangeLog 2013/05/17 12:57:15 1.1964
|
||||
### src/opcodes/ChangeLog 2013/05/21 01:36:46 1.1965
|
||||
## -1,3 +1,28 @@
|
||||
+2013-05-20 Peter Bergner <bergner@vnet.ibm.com>
|
||||
+
|
||||
+ * ppc-dis.c (powerpc_init_dialect): Set default dialect to power8.
|
||||
+ * ppc-opc.c (BHRBE, ST, SIX, PS, SXL, VXPS_MASK, XX1RB_MASK,
|
||||
+ XLS_MASK, PPCVSX2): New defines.
|
||||
+ (powerpc_opcodes) <bcdadd., bcdsub., bctar, bctar, bctarl, clrbhrb,
|
||||
+ fmrgew, fmrgow, lqarx, lxsiwax, lxsiwzx, lxsspx, mfbhrbe,
|
||||
+ mffprd, mffprwz, mfvrd, mfvrwz, mfvsrd, mfvsrwz, msgclrp, msgsndp,
|
||||
+ mtfprd, mtfprwa, mtfprwz, mtsle, mtvrd, mtvrwa, mtvrwz, mtvsrd,
|
||||
+ mtvsrwa, mtvsrwz, pbt., rfebb, stqcx., stxsiwx, stxsspx,
|
||||
+ vaddcuq, vaddecuq, vaddeuqm, vaddudm, vadduqm, vbpermq, vcipher,
|
||||
+ vcipherlast, vclzb, vclzd, vclzh, vclzw, vcmpequd, vcmpequd.,
|
||||
+ vcmpgtsd, vcmpgtsd., vcmpgtud, vcmpgtud., veqv, vgbbd, vmaxsd,
|
||||
+ vmaxud, vminsd, vminud, vmrgew, vmrgow, vmulesw, vmuleuw, vmulosw,
|
||||
+ vmulouw, vmuluwm, vnand, vncipher, vncipherlast, vorc, vpermxor,
|
||||
+ vpksdss, vpksdus, vpkudum, vpkudus, vpmsumb, vpmsumd, vpmsumh,
|
||||
+ vpmsumw, vpopcntb, vpopcntd, vpopcnth, vpopcntw, vrld, vsbox,
|
||||
+ vshasigmad, vshasigmaw, vsld, vsrad, vsrd, vsubcuq, vsubecuq,
|
||||
+ vsubeuqm, vsubudm, vsubuqm, vupkhsw, vupklsw, waitasec, xsaddsp,
|
||||
+ xscvdpspn, xscvspdpn, xscvsxdsp, xscvuxdsp, xsdivsp, xsmaddasp,
|
||||
+ xsmaddmsp, xsmsubasp, xsmsubmsp, xsmulsp, xsnmaddasp, xsnmaddmsp,
|
||||
+ xsnmsubasp, xsnmsubmsp, xsresp, xsrsp, xsrsqrtesp, xssqrtsp,
|
||||
+ xssubsp, xxleqv, xxlnand, xxlorc>: New instructions.
|
||||
+ <lxvx, stxvx>: New extended mnemonics.
|
||||
+
|
||||
2013-05-17 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ia64-raw.tbl: Replace non-ASCII char.
|
||||
--- src/opcodes/ppc-dis.c 2013/01/11 02:25:36 1.62
|
||||
+++ src/opcodes/ppc-dis.c 2013/05/21 01:36:46 1.63
|
||||
@@ -315,10 +315,7 @@
|
||||
dialect = (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_VLE);
|
||||
break;
|
||||
default:
|
||||
- dialect = (PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64
|
||||
- | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
|
||||
- | PPC_OPCODE_POWER7 | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX
|
||||
- | PPC_OPCODE_ANY);
|
||||
+ dialect = ppc_parse_cpu (dialect, &sticky, "power8") | PPC_OPCODE_ANY;
|
||||
}
|
||||
|
||||
arg = info->disassembler_options;
|
||||
--- src/opcodes/ppc-opc.c 2013/05/09 04:32:55 1.159
|
||||
+++ src/opcodes/ppc-opc.c 2013/05/21 01:36:46 1.160
|
||||
@@ -315,14 +315,18 @@
|
||||
{ 0xfffc, 0, NULL, NULL,
|
||||
PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
|
||||
|
||||
- /* The DUIS field in a XFX form instruction, 10 bits unsigned imediate */
|
||||
+ /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
|
||||
+ unsigned imediate */
|
||||
#define DUIS DS + 1
|
||||
+#define BHRBE DUIS
|
||||
{ 0x3ff, 11, NULL, NULL, 0 },
|
||||
|
||||
/* The E field in a wrteei instruction. */
|
||||
/* And the W bit in the pair singles instructions. */
|
||||
+ /* And the ST field in a VX form instruction. */
|
||||
#define E DUIS + 1
|
||||
#define PSW E
|
||||
+#define ST E
|
||||
{ 0x1, 15, NULL, NULL, 0 },
|
||||
|
||||
/* The FL1 field in a POWER SC form instruction. */
|
||||
@@ -695,8 +699,16 @@
|
||||
#define UIMM3 UIMM + 1
|
||||
{ 0x7, 16, NULL, NULL, 0 },
|
||||
|
||||
+ /* The SIX field in a VX form instruction. */
|
||||
+#define SIX UIMM3 + 1
|
||||
+ { 0xf, 11, NULL, NULL, 0 },
|
||||
+
|
||||
+ /* The PS field in a VX form instruction. */
|
||||
+#define PS SIX + 1
|
||||
+ { 0x1, 9, NULL, NULL, 0 },
|
||||
+
|
||||
/* The SHB field in a VA form instruction. */
|
||||
-#define SHB UIMM3 + 1
|
||||
+#define SHB PS + 1
|
||||
{ 0xf, 6, NULL, NULL, 0 },
|
||||
|
||||
/* The other UIMM field in a half word EVX form instruction. */
|
||||
@@ -751,8 +763,12 @@
|
||||
#define S SP + 1
|
||||
{ 0x1, 20, NULL, NULL, 0 },
|
||||
|
||||
+ /* The S field in a XL form instruction. */
|
||||
+#define SXL S + 1
|
||||
+ { 0x1, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
|
||||
+
|
||||
/* SH field starting at bit position 16. */
|
||||
-#define SH16 S + 1
|
||||
+#define SH16 SXL + 1
|
||||
/* The DCM and DGM fields in a Z form instruction. */
|
||||
#define DCM SH16
|
||||
#define DGM DCM
|
||||
@@ -2325,6 +2341,9 @@
|
||||
/* A VX_MASK with a UIMM2 field. */
|
||||
#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
|
||||
|
||||
+/* A VX_MASK with a PS field. */
|
||||
+#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
|
||||
+
|
||||
/* A VA form instruction. */
|
||||
#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
|
||||
|
||||
@@ -2379,6 +2398,9 @@
|
||||
/* The mask for an XX1 form instruction. */
|
||||
#define XX1_MASK X (0x3f, 0x3ff)
|
||||
|
||||
+/* An XX1_MASK with the RB field fixed. */
|
||||
+#define XX1RB_MASK (XX1_MASK | RB_MASK)
|
||||
+
|
||||
/* The mask for an XX2 form instruction. */
|
||||
#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
|
||||
|
||||
@@ -2516,6 +2538,9 @@
|
||||
/* The mask for an XL form instruction. */
|
||||
#define XL_MASK XLLK (0x3f, 0x3ff, 1)
|
||||
|
||||
+/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear. */
|
||||
+#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
|
||||
+
|
||||
/* An XL form instruction which explicitly sets the BO field. */
|
||||
#define XLO(op, bo, xop, lk) \
|
||||
(XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
|
||||
@@ -2699,6 +2724,7 @@
|
||||
#define PPCVEC PPC_OPCODE_ALTIVEC
|
||||
#define PPCVEC2 PPC_OPCODE_ALTIVEC2
|
||||
#define PPCVSX PPC_OPCODE_VSX
|
||||
+#define PPCVSX2 PPC_OPCODE_VSX
|
||||
#define POWER PPC_OPCODE_POWER
|
||||
#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
|
||||
#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
|
||||
@@ -2845,6 +2871,7 @@
|
||||
{"vperm", VXA(4, 43), VXA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB, VC}},
|
||||
{"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB, SHB}},
|
||||
{"ps_sel", A (4, 23,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
|
||||
+{"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, VC}},
|
||||
{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VC, VB}},
|
||||
{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
|
||||
{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VC, VB}},
|
||||
@@ -2863,6 +2890,10 @@
|
||||
{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
|
||||
{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, PPCNONE, {FRT, FRA, FRC, FRB}},
|
||||
{"ps_cmpo0", X (4, 32), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
|
||||
+{"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, VC}},
|
||||
+{"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, VC}},
|
||||
+{"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, VC}},
|
||||
+{"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, VC}},
|
||||
{"vadduhm", VX (4, 64), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vrlh", VX (4, 68), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
@@ -2886,6 +2917,8 @@
|
||||
{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vrlw", VX (4, 132), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vmrghw", VX (4, 140), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, PPCNONE, {FRT, FRB}},
|
||||
@@ -2893,12 +2926,17 @@
|
||||
{"machhwsu", XO (4, 76,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"machhwsu.", XO (4, 76,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"ps_cmpo1", X (4, 96), X_MASK|(3<<21), PPCPS, PPCNONE, {BF, FRA, FRB}},
|
||||
+{"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vrld", VX (4, 196), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"machhws", XO (4, 108,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"machhws.", XO (4, 108,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"nmachhws", XO (4, 110,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"nmachhws.", XO (4, 110,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
+{"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vslb", VX (4, 260), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vmulosb", VX (4, 264), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
@@ -2911,6 +2949,7 @@
|
||||
{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"macchwu", XO (4, 140,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"macchwu.", XO (4, 140,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
+{"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vslh", VX (4, 324), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vmulosh", VX (4, 328), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
@@ -2926,11 +2965,13 @@
|
||||
{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vslw", VX (4, 388), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}},
|
||||
{"vmrglw", VX (4, 396), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vpkshss", VX (4, 398), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"macchwsu", XO (4, 204,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"macchwsu.", XO (4, 204,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
+{"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vsl", VX (4, 452), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}},
|
||||
@@ -3014,6 +3055,7 @@
|
||||
{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"evfsneg", VX (4, 646), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evfsmul", VX (4, 648), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vrfip", VX (4, 650), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}},
|
||||
@@ -3039,11 +3081,13 @@
|
||||
{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, PPCNONE, {RA, FSL}},
|
||||
{"efsadd", VX (4, 704), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"efssub", VX (4, 705), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vminud", VX (4, 706), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"efsabs", VX (4, 708), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"vsr", VX (4, 708), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"efsnabs", VX (4, 709), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"efsneg", VX (4, 710), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"efsmul", VX (4, 712), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"efsdiv", VX (4, 713), VX_MASK, PPCEFS|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vrfim", VX (4, 714), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}},
|
||||
@@ -3163,12 +3207,16 @@
|
||||
{"vminsw", VX (4, 898), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vsraw", VX (4, 900), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vctuxs", VX (4, 906), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}},
|
||||
{"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}},
|
||||
{"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, SIMM}},
|
||||
{"maclhwsu", XO (4, 460,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"maclhwsu.", XO (4, 460,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
+{"vminsd", VX (4, 962), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vsrad", VX (4, 964), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vctsxs", VX (4, 970), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}},
|
||||
{"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB, UIMM}},
|
||||
{"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VB}},
|
||||
@@ -3177,6 +3225,7 @@
|
||||
{"nmaclhws", XO (4, 494,0,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"nmaclhws.", XO (4, 494,0,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"vsububm", VX (4,1024), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, PS}},
|
||||
{"vavgub", VX (4,1026), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmhessf", VX (4,1027), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
@@ -3185,6 +3234,7 @@
|
||||
{"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"evmhossf", VX (4,1031), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmheumi", VX (4,1032), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
@@ -3206,6 +3256,7 @@
|
||||
{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, PPCNONE, {VD, VA, VB, PS}},
|
||||
{"vavguh", VX (4,1090), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vandc", VX (4,1092), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
@@ -3213,11 +3264,13 @@
|
||||
{"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vminfp", VX (4,1098), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vsro", VX (4,1100), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmwssf", VX (4,1107), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"machhwo", XO (4, 44,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
@@ -3243,6 +3296,7 @@
|
||||
{"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vmr", VX (4,1156), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VBA}},
|
||||
{"vor", VX (4,1156), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
@@ -3250,6 +3304,7 @@
|
||||
{"machhwsuo.", XO (4, 76,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
|
||||
{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
|
||||
+{"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
@@ -3259,18 +3314,22 @@
|
||||
{"evdivws", VX (4,1222), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"evdivwu", VX (4,1223), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA}},
|
||||
+{"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"machhwso", XO (4, 108,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"machhwso.", XO (4, 108,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"nmachhwso", XO (4, 110,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"nmachhwso.", XO (4, 110,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
|
||||
{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, PPCNONE, {FRT, FRA, FRB}},
|
||||
+{"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vavgsb", VX (4,1282), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
@@ -3283,8 +3342,11 @@
|
||||
{"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vcipher", VX (4,1288), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
@@ -3296,13 +3358,19 @@
|
||||
{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vavgsh", VX (4,1346), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vorc", VX (4,1348), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vncipher", VX (4,1352), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"macchwo", XO (4, 172,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
@@ -3316,6 +3384,7 @@
|
||||
{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"vavgsw", VX (4,1410), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vnand", VX (4,1412), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
@@ -3337,11 +3406,14 @@
|
||||
{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vsld", VX (4,1476), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, PPCNONE, {VD, VA}},
|
||||
{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
+{"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
{"macchwso", XO (4, 236,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"evmwumian", VX (4,1496), VX_MASK, PPCSPE|PPCVLE, PPCNONE, {RS, RA, RB}},
|
||||
@@ -3362,15 +3434,25 @@
|
||||
{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"vsubuws", VX (4,1664), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, ST, SIX}},
|
||||
+{"veqv", VX (4,1668), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
+{"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, ST, SIX}},
|
||||
+{"vsrd", VX (4,1732), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
+{"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
@@ -3378,6 +3460,8 @@
|
||||
{"maclhwuo", XO (4, 396,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"maclhwuo.", XO (4, 396,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"vsubshs", VX (4,1856), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
+{"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
@@ -3386,14 +3470,20 @@
|
||||
{"nmaclhwo", XO (4, 430,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"nmaclhwo.", XO (4, 430,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"vsubsws", VX (4,1920), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
+{"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"vsumsws", VX (4,1928), VX_MASK, PPCVEC|PPCVLE, PPCNONE, {VD, VA, VB}},
|
||||
+{"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"maclhwsuo", XO (4, 460,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"maclhwsuo.", XO (4, 460,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
+{"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
+{"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, PPCNONE, {VD, VB}},
|
||||
{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, PPCNONE, {VD, VA, VB}},
|
||||
{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
+{"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, PPCNONE, {VD, VA, VB}},
|
||||
{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
|
||||
{"maclhwso", XO (4, 492,1,0),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"maclhwso.", XO (4, 492,1,1),XO_MASK, MULHW|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
@@ -3965,6 +4055,8 @@
|
||||
|
||||
{"crandc", XL(19,129), XL_MASK, COM, PPCNONE, {BT, BA, BB}},
|
||||
|
||||
+{"rfebb", XL(19,146), XLS_MASK, POWER8, PPCNONE, {SXL}},
|
||||
+
|
||||
{"isync", XL(19,150), 0xffffffff, PPCCOM, PPCNONE, {0}},
|
||||
{"ics", XL(19,150), 0xffffffff, PWRCOM, PPCNONE, {0}},
|
||||
|
||||
@@ -4148,6 +4240,13 @@
|
||||
{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCNONE, {BO, BI, BH}},
|
||||
{"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, PPCNONE, {BO, BI}},
|
||||
|
||||
+{"bctar-", XLYLK(19,560,0,0), XLYBB_MASK, POWER8, PPCNONE, {BOE, BI}},
|
||||
+{"bctarl-", XLYLK(19,560,0,1), XLYBB_MASK, POWER8, PPCNONE, {BOE, BI}},
|
||||
+{"bctar+", XLYLK(19,560,1,0), XLYBB_MASK, POWER8, PPCNONE, {BOE, BI}},
|
||||
+{"bctarl+", XLYLK(19,560,1,1), XLYBB_MASK, POWER8, PPCNONE, {BOE, BI}},
|
||||
+{"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCNONE, {BO, BI, BH}},
|
||||
+{"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCNONE, {BO, BI, BH}},
|
||||
+
|
||||
{"rlwimi", M(20,0), M_MASK, PPCCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
|
||||
{"rlimi", M(20,0), M_MASK, PWRCOM, PPCNONE, {RA, RS, SH, MBE, ME}},
|
||||
|
||||
@@ -4276,6 +4375,8 @@
|
||||
{"mulhwu", XO(31,11,0,0), XO_MASK, PPC|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
+{"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, PPCNONE, {XT6, RA0, RB}},
|
||||
+
|
||||
{"isellt", X(31,15), X_MASK, PPCISEL, PPCNONE, {RT, RA0, RB}},
|
||||
|
||||
{"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, PPCNONE, {0}},
|
||||
@@ -4316,6 +4417,9 @@
|
||||
{"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}},
|
||||
|
||||
{"ldepx", X(31,29), X_MASK, E500MC|PPCA2|PPCVLE, PPCNONE, {RT, RA0, RB}},
|
||||
+
|
||||
+{"waitasec", X(31,30), XRTRARB_MASK,POWER8, PPCNONE, {0}},
|
||||
+
|
||||
{"lwepx", X(31,31), X_MASK, E500MC|PPCA2|PPCVLE, PPCNONE, {RT, RA0, RB}},
|
||||
|
||||
{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM|PPCVLE, PPCNONE, {OBF, RA, RB}},
|
||||
@@ -4335,6 +4439,8 @@
|
||||
|
||||
{"addg6s", XO(31,74,0,0), XO_MASK, POWER6, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
+{"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, PPCNONE, {XT6, RA0, RB}},
|
||||
+
|
||||
{"iseleq", X(31,79), X_MASK, PPCISEL, PPCNONE, {RT, RA0, RB}},
|
||||
|
||||
{"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN|PPCVLE, PPCNONE, {RT, RA0, RB, CRB}},
|
||||
@@ -4344,6 +4450,9 @@
|
||||
{"subf.", XO(31,40,0,1), XO_MASK, PPC|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"sub.", XO(31,40,0,1), XO_MASK, PPC|PPCVLE, PPCNONE, {RT, RB, RA}},
|
||||
|
||||
+{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, PPCNONE, {RA, XS6}},
|
||||
+{"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, PPCNONE, {RA, FRS}},
|
||||
+{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {RA, VS}},
|
||||
{"eratilx", X(31,51), X_MASK, PPCA2, PPCNONE, {ERAT_T, RA, RB}},
|
||||
|
||||
{"lbarx", X(31,52), XEH_MASK, POWER7|PPCVLE, PPCNONE, {RT, RA0, RB, EH}},
|
||||
@@ -4421,6 +4530,10 @@
|
||||
|
||||
{"mtsrdin", X(31,114), XRA_MASK, PPC64, PPCNONE, {RS, RB}},
|
||||
|
||||
+{"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, PPCNONE, {RA, FRS}},
|
||||
+{"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {RA, VS}},
|
||||
+{"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, PPCNONE, {RA, XS6}},
|
||||
+
|
||||
{"lharx", X(31,116), XEH_MASK, POWER7|PPCVLE, PPCNONE, {RT, RA0, RB, EH}},
|
||||
|
||||
{"clf", X(31,118), XTO_MASK, POWER, PPCNONE, {RA, RB}},
|
||||
@@ -4453,6 +4566,9 @@
|
||||
{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
+{"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, PPCNONE, {XS6, RA0, RB}},
|
||||
+
|
||||
+{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, PPCNONE, {RB}},
|
||||
{"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
|
||||
|
||||
{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, PPCNONE, {RS}},
|
||||
@@ -4461,6 +4577,8 @@
|
||||
|
||||
{"mtmsr", X(31,146), XRLARB_MASK, COM|PPCVLE, PPCNONE, {RS, A_L}},
|
||||
|
||||
+{"mtsle", X(31,147), XRTLRARB_MASK, POWER8, PPCNONE, {L}},
|
||||
+
|
||||
{"eratsx", XRC(31,147,0), X_MASK, PPCA2, PPCNONE, {RT, RA0, RB}},
|
||||
{"eratsx.", XRC(31,147,1), X_MASK, PPCA2, PPCNONE, {RT, RA0, RB}},
|
||||
|
||||
@@ -4490,14 +4608,19 @@
|
||||
{"stvehx", X(31,167), X_MASK, PPCVEC, PPCNONE, {VS, RA0, RB}},
|
||||
{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
|
||||
|
||||
+{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, PPCNONE, {RB}},
|
||||
{"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
|
||||
|
||||
{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, PPCNONE, {RS, A_L}},
|
||||
|
||||
+{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, PPCNONE, {XT6, RA}},
|
||||
+{"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, PPCNONE, {FRT, RA}},
|
||||
+{"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {VD, RA}},
|
||||
{"eratre", X(31,179), X_MASK, PPCA2, PPCNONE, {RT, RA, WS}},
|
||||
|
||||
{"stdux", X(31,181), X_MASK, PPC64|PPCVLE, PPCNONE, {RS, RAS, RB}},
|
||||
|
||||
+{"stqcx.", XRC(31,182,1), X_MASK, POWER8, PPCNONE, {RSQ, RA0, RB}},
|
||||
{"wchkall", X(31,182), X_MASK, PPCA2, PPCNONE, {OBF}},
|
||||
|
||||
{"stwux", X(31,183), X_MASK, PPCCOM|PPCVLE, PPCNONE, {RS, RAS, RB}},
|
||||
@@ -4527,6 +4650,9 @@
|
||||
|
||||
{"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}},
|
||||
|
||||
+{"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, PPCNONE, {FRT, RA}},
|
||||
+{"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {VD, RA}},
|
||||
+{"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, PPCNONE, {XT6, RA}},
|
||||
{"eratwe", X(31,211), X_MASK, PPCA2, PPCNONE, {RS, RA, WS}},
|
||||
|
||||
{"ldawx.", XRC(31,212,1), X_MASK, PPCA2, PPCNONE, {RT, RA0, RB}},
|
||||
@@ -4571,6 +4697,10 @@
|
||||
{"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}},
|
||||
{"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}},
|
||||
|
||||
+{"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, PPCNONE, {FRT, RA}},
|
||||
+{"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, PPCNONE, {VD, RA}},
|
||||
+{"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, PPCNONE, {XT6, RA}},
|
||||
+
|
||||
{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, PPCNONE, {RA0, RB}},
|
||||
{"dcbtst", X(31,246), X_MASK, POWER4, PPCNONE, {RA0, RB, CT}},
|
||||
{"dcbtst", X(31,246), X_MASK, PPC|PPCVLE, POWER4, {CT, RA0, RB}},
|
||||
@@ -4608,6 +4738,8 @@
|
||||
|
||||
{"mfapidi", X(31,275), X_MASK, BOOKE, TITAN, {RT, RA}},
|
||||
|
||||
+{"lqarx", X(31,276), XEH_MASK, POWER8, PPCNONE, {RTQ, RAX, RBX, EH}},
|
||||
+
|
||||
{"lscbx", XRC(31,277,0), X_MASK, M601, PPCNONE, {RT, RA, RB}},
|
||||
{"lscbx.", XRC(31,277,1), X_MASK, M601, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
@@ -4629,6 +4761,8 @@
|
||||
{"lvexhx", X(31,293), X_MASK, PPCVEC2, PPCNONE, {VD, RA0, RB}},
|
||||
{"lvepx", X(31,295), X_MASK, PPCVEC2|PPCVLE, PPCNONE, {VD, RA0, RB}},
|
||||
|
||||
+{"mfbhrbe", X(31,302), X_MASK, POWER8, PPCNONE, {RT, BHRBE}},
|
||||
+
|
||||
{"tlbie", X(31,306), XRTLRA_MASK, PPC, TITAN, {RB, L}},
|
||||
{"tlbi", X(31,306), XRT_MASK, POWER, PPCNONE, {RA0, RB}},
|
||||
|
||||
@@ -4937,6 +5071,8 @@
|
||||
|
||||
{"slbmte", X(31,402), XRA_MASK, PPC64, PPCNONE, {RS, RB}},
|
||||
|
||||
+{"pbt.", XRC(31,404,1), X_MASK, POWER8, PPCNONE, {RS, RA0, RB}},
|
||||
+
|
||||
{"icswx", XRC(31,406,0), X_MASK, POWER7|PPCA2, PPCNONE, {RS, RA, RB}},
|
||||
{"icswx.", XRC(31,406,1), X_MASK, POWER7|PPCA2, PPCNONE, {RS, RA, RB}},
|
||||
|
||||
@@ -4958,6 +5094,8 @@
|
||||
{"divwe", XO(31,427,0,0), XO_MASK, POWER7|PPCA2, PPCNONE, {RT, RA, RB}},
|
||||
{"divwe.", XO(31,427,0,1), XO_MASK, POWER7|PPCA2, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
+{"clrbhrb", X(31,430), 0xffffffff, POWER8, PPCNONE, {0}},
|
||||
+
|
||||
{"slbie", X(31,434), XRTRA_MASK, PPC64, PPCNONE, {RB}},
|
||||
|
||||
{"ecowx", X(31,438), X_MASK, PPC, TITAN, {RT, RA0, RB}},
|
||||
@@ -5246,6 +5384,8 @@
|
||||
{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
+{"lxsspx", X(31,524), XX1_MASK, PPCVSX2, PPCNONE, {XT6, RA0, RB}},
|
||||
+
|
||||
{"clcs", X(31,531), XRB_MASK, M601, PPCNONE, {RT, RA}},
|
||||
|
||||
{"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, PPCNONE, {RT, RA0, RB}},
|
||||
@@ -5340,6 +5480,8 @@
|
||||
{"stvlx", X(31,647), X_MASK, CELL, PPCNONE, {VS, RA0, RB}},
|
||||
{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, PPCNONE, {FCRT, RA, RB}},
|
||||
|
||||
+{"stxsspx", X(31,652), XX1_MASK, PPCVSX2, PPCNONE, {XS6, RA0, RB}},
|
||||
+
|
||||
{"tbegin.", XRC(31,654,1), XRTLRARB_MASK,PPCHTM, PPCNONE, {HTM_R}},
|
||||
|
||||
{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
@@ -5525,6 +5667,7 @@
|
||||
{"divo.", XO(31,331,1,1), XO_MASK, M601, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
{"lxvd2x", X(31,844), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA0, RB}},
|
||||
+{"lxvx", X(31,844), XX1_MASK, PPCVSX, PPCNONE, {XT6, RA0, RB}},
|
||||
|
||||
{"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, PPCNONE, {TO, RA, HTM_SI}},
|
||||
|
||||
@@ -5636,6 +5779,7 @@
|
||||
{"divwuo.", XO(31,459,1,1), XO_MASK, PPC|PPCVLE, PPCNONE, {RT, RA, RB}},
|
||||
|
||||
{"stxvd2x", X(31,972), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA0, RB}},
|
||||
+{"stxvx", X(31,972), XX1_MASK, PPCVSX, PPCNONE, {XS6, RA0, RB}},
|
||||
|
||||
{"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
|
||||
{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, PPCNONE, {RT, RA}},
|
||||
@@ -5868,14 +6012,25 @@
|
||||
{"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCNONE, {FRT, FRB}},
|
||||
{"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCNONE, {FRT, FRB}},
|
||||
|
||||
+{"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6, SHW}},
|
||||
{"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6, XC6}},
|
||||
+{"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6S, DMEX}},
|
||||
{"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6S}},
|
||||
{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6, DM}},
|
||||
+{"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
+{"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
+{"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
{"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
|
||||
@@ -5929,14 +6084,18 @@
|
||||
{"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCNONE, {BF, XA6, XB6}},
|
||||
+{"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
+{"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
+{"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
+{"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
@@ -5949,12 +6108,15 @@
|
||||
{"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCNONE, {BF, XB6}},
|
||||
+{"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
+{"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
+{"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
@@ -5985,8 +6147,13 @@
|
||||
{"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCNONE, {XT6, XA6, XB6}},
|
||||
{"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
+{"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
+{"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
+{"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
+{"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
{"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
+{"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCNONE, {XT6, XB6}},
|
||||
{"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
{"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCNONE, {XT6, XB6}},
|
||||
@@ -6222,6 +6389,8 @@
|
||||
{"denbcdq", XRC(63,834,0), X_MASK, POWER6, PPCNONE, {S, FRTp, FRBp}},
|
||||
{"denbcdq.", XRC(63,834,1), X_MASK, POWER6, PPCNONE, {S, FRTp, FRBp}},
|
||||
|
||||
+{"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCNONE, {FRT, FRA, FRB}},
|
||||
+
|
||||
{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
|
||||
{"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCNONE, {FRT, FRB}},
|
||||
{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCNONE, {FRT, FRB}},
|
||||
@@ -6236,6 +6405,8 @@
|
||||
{"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCNONE, {FRT, FRB}},
|
||||
{"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCNONE, {FRT, FRB}},
|
||||
|
||||
+{"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCNONE, {FRT, FRA, FRB}},
|
||||
+
|
||||
{"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCNONE, {FRT, FRB}},
|
||||
{"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCNONE, {FRT, FRB}},
|
||||
};
|
|
@ -0,0 +1,60 @@
|
|||
[PATCH] Enable hw watchpoint with longer ranges using DAWR on Power
|
||||
http://sourceware.org/ml/gdb-patches/2013-07/msg00085.html
|
||||
http://sourceware.org/ml/gdb-cvs/2013-07/msg00097.html
|
||||
|
||||
### src/gdb/ChangeLog 2013/07/22 11:42:30 1.15812
|
||||
### src/gdb/ChangeLog 2013/07/22 13:17:51 1.15813
|
||||
## -1,3 +1,9 @@
|
||||
+2013-07-22 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
||||
+
|
||||
+ * ppc-linux-nat.c (PPC_DEBUG_FEATURE_DATA_BP_DAWR): New define.
|
||||
+ (ppc_linux_region_ok_for_hw_watchpoint): Add checking to use the new
|
||||
+ DAWR interface for longer ranges hardware watchpoint (up to 512 bytes).
|
||||
+
|
||||
2013-07-22 Phil Muldoon <pmuldoon@redhat.com>
|
||||
|
||||
* top.c (print_gdb_version): Add help, apropos description and
|
||||
--- gdb-7.6/gdb/ppc-linux-nat.c.orig 2013-07-24 17:39:30.434549279 +0200
|
||||
+++ gdb-7.6/gdb/ppc-linux-nat.c 2013-07-24 17:41:31.337706502 +0200
|
||||
@@ -178,7 +178,11 @@ struct ppc_hw_breakpoint
|
||||
(1<<((n)+PPC_BREAKPOINT_CONDITION_BE_SHIFT))
|
||||
#endif /* PPC_PTRACE_GETHWDBGINFO */
|
||||
|
||||
-
|
||||
+/* Feature defined on Linux kernel v3.9: DAWR interface, that enables wider
|
||||
+ watchpoint (up to 512 bytes). */
|
||||
+#ifndef PPC_DEBUG_FEATURE_DATA_BP_DAWR
|
||||
+#define PPC_DEBUG_FEATURE_DATA_BP_DAWR 0x10
|
||||
+#endif /* PPC_DEBUG_FEATURE_DATA_BP_DAWR */
|
||||
|
||||
/* Similarly for the general-purpose (gp0 -- gp31)
|
||||
and floating-point registers (fp0 -- fp31). */
|
||||
@@ -1503,6 +1507,7 @@ ppc_linux_region_ok_for_hw_watchpoint (C
|
||||
to determine the hardcoded watchable region for watchpoints. */
|
||||
if (have_ptrace_booke_interface ())
|
||||
{
|
||||
+ int region_size;
|
||||
/* Embedded DAC-based processors, like the PowerPC 440 have ranged
|
||||
watchpoints and can watch any access within an arbitrary memory
|
||||
region. This is useful to watch arrays and structs, for instance. It
|
||||
@@ -1511,11 +1516,17 @@ ppc_linux_region_ok_for_hw_watchpoint (C
|
||||
&& booke_debug_info.features & PPC_DEBUG_FEATURE_DATA_BP_RANGE
|
||||
&& ppc_linux_get_hwcap () & PPC_FEATURE_BOOKE)
|
||||
return 2;
|
||||
+ /* Check if the processor provides DAWR interface. */
|
||||
+ if (booke_debug_info.features & PPC_DEBUG_FEATURE_DATA_BP_DAWR)
|
||||
+ /* DAWR interface allows to watch up to 512 byte wide ranges which
|
||||
+ can't cross a 512 byte boundary. */
|
||||
+ region_size = 512;
|
||||
+ else
|
||||
+ region_size = booke_debug_info.data_bp_alignment;
|
||||
/* Server processors provide one hardware watchpoint and addr+len should
|
||||
fall in the watchable region provided by the ptrace interface. */
|
||||
- if (booke_debug_info.data_bp_alignment
|
||||
- && (addr + len > (addr & ~(booke_debug_info.data_bp_alignment - 1))
|
||||
- + booke_debug_info.data_bp_alignment))
|
||||
+ if (region_size
|
||||
+ && (addr + len > (addr & ~(region_size - 1)) + region_size))
|
||||
return 0;
|
||||
}
|
||||
/* addr+len must fall in the 8 byte watchable region for DABR-based
|
|
@ -0,0 +1,136 @@
|
|||
https://sourceware.org/ml/gdb-patches/2013-07/msg00469.html
|
||||
|
||||
Hi.
|
||||
This patch adds the missing calls to check_typedef
|
||||
and adds a testcase to show the issue.
|
||||
|
||||
The PR is not closeable yet, but the remaining issues are more cleanups
|
||||
than actual bug fixes.
|
||||
|
||||
Regression tested on amd64-linux.
|
||||
|
||||
I will check this in in a few days if there are no objections.
|
||||
|
||||
[The multiple calls to check_typedef (value_type (*argp)) are
|
||||
bothersome, but the code is simpler this way, and I expect
|
||||
resolving the rest of the issues in 15695 to potentially change this
|
||||
code significantly.]
|
||||
|
||||
---
|
||||
|
||||
commit cbb25189b69e501ddca64917d810b54bb1466c93
|
||||
Author: Doug Evans <dje@google.com>
|
||||
Date: Thu Aug 1 23:59:47 2013 +0000
|
||||
|
||||
PR symtab/15695
|
||||
* valops.c (value_struct_elt): Add missing call to check_typedef.
|
||||
(value_find_oload_method_list): Ditto.
|
||||
|
||||
testsuite/
|
||||
* gdb.base/func-ptr.exp: New file.
|
||||
* gdb.base/func-ptr.c: New file.
|
||||
|
||||
2013-08-01 Doug Evans <dje@google.com>
|
||||
|
||||
PR symtab/15695
|
||||
* valops.c (value_struct_elt): Add missing call to check_typedef.
|
||||
(value_find_oload_method_list): Ditto.
|
||||
|
||||
2013-08-01 Doug Evans <dje@google.com>
|
||||
|
||||
PR symtab/15695
|
||||
* gdb.base/func-ptr.exp: New file.
|
||||
* gdb.base/func-ptr.c: New file.
|
||||
|
||||
Index: gdb-7.6.1/gdb/testsuite/gdb.base/func-ptr.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ gdb-7.6.1/gdb/testsuite/gdb.base/func-ptr.c
|
||||
@@ -0,0 +1,30 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ This program is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+void
|
||||
+bar ()
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+typedef void foo (void);
|
||||
+foo *pbar = bar;
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
Index: gdb-7.6.1/gdb/testsuite/gdb.base/func-ptr.exp
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ gdb-7.6.1/gdb/testsuite/gdb.base/func-ptr.exp
|
||||
@@ -0,0 +1,30 @@
|
||||
+# Copyright 2013 Free Software Foundation, Inc.
|
||||
+
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# This testcase exercises bug 15695.
|
||||
+# Trying to print foo->bar if foo is a pointer to a typedef of a pointer
|
||||
+# to a function will put gdb into an infinite loop.
|
||||
+
|
||||
+if { [prepare_for_testing func-ptr.exp "func-ptr" {func-ptr.c} {debug}] } {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+if ![runto_main] {
|
||||
+ fail "Can't run to main"
|
||||
+ return 0
|
||||
+}
|
||||
+
|
||||
+# This would put gdb into an infinite loop.
|
||||
+gdb_test "print pbar->baz" "Attempt to extract .*"
|
||||
Index: gdb-7.6.1/gdb/valops.c
|
||||
===================================================================
|
||||
--- gdb-7.6.1.orig/gdb/valops.c
|
||||
+++ gdb-7.6.1/gdb/valops.c
|
||||
@@ -2450,7 +2450,7 @@ value_struct_elt (struct value **argp, s
|
||||
{
|
||||
*argp = value_ind (*argp);
|
||||
/* Don't coerce fn pointer to fn and then back again! */
|
||||
- if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
|
||||
+ if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
|
||||
*argp = coerce_array (*argp);
|
||||
t = check_typedef (value_type (*argp));
|
||||
}
|
||||
@@ -2614,7 +2614,7 @@ value_find_oload_method_list (struct val
|
||||
{
|
||||
*argp = value_ind (*argp);
|
||||
/* Don't coerce fn pointer to fn and then back again! */
|
||||
- if (TYPE_CODE (value_type (*argp)) != TYPE_CODE_FUNC)
|
||||
+ if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
|
||||
*argp = coerce_array (*argp);
|
||||
t = check_typedef (value_type (*argp));
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1202,100 +1202,6 @@ http://sourceware.org/ml/gdb-cvs/2013-04/msg00070.html
|
|||
|
||||
|
||||
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=15413
|
||||
http://sourceware.org/ml/gdb-cvs/2013-05/msg00063.html
|
||||
|
||||
### src/gdb/ChangeLog 2013/04/26 14:13:13 1.15260.2.50
|
||||
### src/gdb/ChangeLog 2013/05/07 17:04:56 1.15260.2.51
|
||||
## -1,3 +1,10 @@
|
||||
+2013-05-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
+
|
||||
+ PR breakpoints/15413:
|
||||
+ * breakpoint.c (condition_completer): Simplify the code to
|
||||
+ disconsider multiple locations of breakpoints when completing the
|
||||
+ "condition" command.
|
||||
+
|
||||
2013-04-26 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* version.in: Set version to 7.6.0.20130426-cvs.
|
||||
--- src/gdb/breakpoint.c 2013/04/25 08:15:34 1.745.2.5
|
||||
+++ src/gdb/breakpoint.c 2013/05/07 17:04:57 1.745.2.6
|
||||
@@ -1015,27 +1015,14 @@
|
||||
len = strlen (text);
|
||||
|
||||
ALL_BREAKPOINTS (b)
|
||||
- {
|
||||
- int single = b->loc->next == NULL;
|
||||
- struct bp_location *loc;
|
||||
- int count = 1;
|
||||
-
|
||||
- for (loc = b->loc; loc; loc = loc->next)
|
||||
- {
|
||||
- char location[50];
|
||||
-
|
||||
- if (single)
|
||||
- xsnprintf (location, sizeof (location), "%d", b->number);
|
||||
- else
|
||||
- xsnprintf (location, sizeof (location), "%d.%d", b->number,
|
||||
- count);
|
||||
+ {
|
||||
+ char number[50];
|
||||
|
||||
- if (strncmp (location, text, len) == 0)
|
||||
- VEC_safe_push (char_ptr, result, xstrdup (location));
|
||||
+ xsnprintf (number, sizeof (number), "%d", b->number);
|
||||
|
||||
- ++count;
|
||||
- }
|
||||
- }
|
||||
+ if (strncmp (number, text, len) == 0)
|
||||
+ VEC_safe_push (char_ptr, result, xstrdup (number));
|
||||
+ }
|
||||
|
||||
return result;
|
||||
}
|
||||
### src/gdb/testsuite/ChangeLog 2013/05/03 16:26:32 1.3580.2.20
|
||||
### src/gdb/testsuite/ChangeLog 2013/05/07 17:04:57 1.3580.2.21
|
||||
## -1,3 +1,11 @@
|
||||
+2013-05-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
+
|
||||
+ PR breakpoints/15413:
|
||||
+ * gdb.base/pending.exp: Add test for completion of the "condition"
|
||||
+ command for pending breakpoints.
|
||||
+ * gdb.linespec/linespec.ex: Add test for completion of the
|
||||
+ "condition" command when dealing with multiple locations.
|
||||
+
|
||||
2013-05-03 Hafiz Abid Qadeer <abidh@codesourcery.com>
|
||||
|
||||
* status-stop.exp (test_tstart_tstart): Check for error
|
||||
--- src/gdb/testsuite/gdb.base/pending.exp 2013/01/01 06:33:26 1.27
|
||||
+++ src/gdb/testsuite/gdb.base/pending.exp 2013/05/07 17:04:57 1.27.2.1
|
||||
@@ -55,6 +55,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
+# Complete the condition (PR 15413).
|
||||
+gdb_test "complete condition " "condition 1"
|
||||
+
|
||||
gdb_test "info break" \
|
||||
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
||||
\[0-9\]+\[\t \]+breakpoint keep y.*PENDING.*pendfunc1.*" \
|
||||
--- src/gdb/testsuite/gdb.linespec/linespec.exp 2013/01/01 06:41:24 1.6
|
||||
+++ src/gdb/testsuite/gdb.linespec/linespec.exp 2013/05/07 17:04:57 1.6.2.1
|
||||
@@ -63,6 +63,10 @@
|
||||
"Breakpoint $decimal at $hex: dupname:label. \[(\]2 locations\[)\]" \
|
||||
"multi-location break using duplicate function name and label"
|
||||
|
||||
+# Testing if the "condition" command completes only the breakpoints,
|
||||
+# not the locations.
|
||||
+gdb_test "complete condition " "condition $decimal\r\ncondition $decimal\r\ncondition $decimal"
|
||||
+
|
||||
gdb_test_no_output "set breakpoint pending off" \
|
||||
"disable pending breakpoints for linespec tests"
|
||||
|
||||
|
||||
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=967915
|
||||
http://sourceware.org/ml/gdb-cvs/2013-05/msg00146.html
|
||||
|
||||
|
@ -1341,3 +1247,209 @@ http://sourceware.org/ml/gdb-cvs/2013-05/msg00146.html
|
|||
return 0;
|
||||
}
|
||||
/* addr+len must fall in the 8 byte watchable region for DABR-based
|
||||
|
||||
|
||||
|
||||
commit 1aa4cd774ca674ee6061e2068a410bb67c8bc812
|
||||
Author: Andrew Pinski <apinski@cavium.com>
|
||||
Date: Thu Sep 12 07:14:37 2013 +0000
|
||||
|
||||
2013-09-12 Andrew Pinski <apinski@cavium.com>
|
||||
|
||||
* aarch64-linux-nat.c (aarch64_linux_set_debug_regs): Zero out regs.
|
||||
|
||||
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
|
||||
index fa3de16..903dcba 100644
|
||||
### a/gdb/ChangeLog
|
||||
### b/gdb/ChangeLog
|
||||
## -1,3 +1,7 @@
|
||||
+2013-09-12 Andrew Pinski <apinski@cavium.com>
|
||||
+
|
||||
+ * aarch64-linux-nat.c (aarch64_linux_set_debug_regs): Zero out regs.
|
||||
+
|
||||
2013-09-10 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* config/s390/s390.mh (NATDEPFILES): Add linux-waitpid.o.
|
||||
diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
|
||||
index 846f156..f685619 100644
|
||||
--- a/gdb/aarch64-linux-nat.c
|
||||
+++ b/gdb/aarch64-linux-nat.c
|
||||
@@ -312,6 +312,7 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
|
||||
const CORE_ADDR *addr;
|
||||
const unsigned int *ctrl;
|
||||
|
||||
+ memset (®s, 0, sizeof (regs));
|
||||
iov.iov_base = ®s;
|
||||
iov.iov_len = sizeof (regs);
|
||||
count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
|
||||
|
||||
|
||||
|
||||
commit 05feb1933f80f2d55e132adc657d3152947af3d1
|
||||
Author: Will Newton <willnewton@sourceware.org>
|
||||
Date: Thu Oct 10 10:40:42 2013 +0000
|
||||
|
||||
gdb/aarch64-linux-tdep.c: Call linux_init_abi.
|
||||
|
||||
If we are running on a Linux platform we should call linux_init_abi
|
||||
in order to get all the useful hooks it enables.
|
||||
|
||||
gdb/ChangeLog:
|
||||
|
||||
2013-10-10 Will Newton <will.newton@linaro.org>
|
||||
|
||||
* aarch64-linux-tdep.c (aarch64_linux_init_abi): Call
|
||||
linux_init_abi.
|
||||
|
||||
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
|
||||
index 4372579..7a41967 100644
|
||||
### a/gdb/ChangeLog
|
||||
### b/gdb/ChangeLog
|
||||
## -1,3 +1,8 @@
|
||||
+2013-10-10 Will Newton <will.newton@linaro.org>
|
||||
+
|
||||
+ * aarch64-linux-tdep.c (aarch64_linux_init_abi): Call
|
||||
+ linux_init_abi.
|
||||
+
|
||||
2013-10-10 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* cli/cli-cmds.c (show_baud_rate): Moved to serial.c as
|
||||
diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
|
||||
index 8e66425..bcfcce2 100644
|
||||
--- a/gdb/aarch64-linux-tdep.c
|
||||
+++ b/gdb/aarch64-linux-tdep.c
|
||||
@@ -270,6 +270,8 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
|
||||
tdep->lowest_pc = 0x8000;
|
||||
|
||||
+ linux_init_abi (info, gdbarch);
|
||||
+
|
||||
set_solib_svr4_fetch_link_map_offsets (gdbarch,
|
||||
svr4_lp64_fetch_link_map_offsets);
|
||||
|
||||
|
||||
|
||||
|
||||
pre-req for:
|
||||
[PATCH, AArch64] Fix bug in hardware watchpoint/breakpoint handling
|
||||
commit c623a6ef72a8d7dbbb646345f75646710cb9bb68
|
||||
Author: Will Newton <willnewton@sourceware.org>
|
||||
Date: Mon Sep 16 14:22:19 2013 +0000
|
||||
|
||||
gdbserver, aarch64: Zero out regs in aarch64_linux_set_debug_regs.
|
||||
|
||||
Apply the same fix that was applied to aarch64-linux-nat.c.
|
||||
|
||||
2013-09-16 Will Newton <will.newton@linaro.org>
|
||||
|
||||
* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Zero
|
||||
out regs.
|
||||
|
||||
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
|
||||
index 73191f4..1082e78 100644
|
||||
### a/gdb/gdbserver/ChangeLog
|
||||
### b/gdb/gdbserver/ChangeLog
|
||||
## -1,3 +1,8 @@
|
||||
+2013-09-16 Will Newton <will.newton@linaro.org>
|
||||
+
|
||||
+ * linux-aarch64-low.c (aarch64_linux_set_debug_regs): Zero
|
||||
+ out regs.
|
||||
+
|
||||
2013-09-06 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* Makefile.in (gdb_proc_service_h, regdef_h, regcache_h)
|
||||
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
|
||||
index e37f602..93246b3 100644
|
||||
--- a/gdb/gdbserver/linux-aarch64-low.c
|
||||
+++ b/gdb/gdbserver/linux-aarch64-low.c
|
||||
@@ -600,6 +600,7 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
|
||||
const CORE_ADDR *addr;
|
||||
const unsigned int *ctrl;
|
||||
|
||||
+ memset (®s, 0, sizeof (regs));
|
||||
iov.iov_base = ®s;
|
||||
iov.iov_len = sizeof (regs);
|
||||
count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
|
||||
|
||||
|
||||
|
||||
[PATCH, AArch64] Fix bug in hardware watchpoint/breakpoint handling
|
||||
https://sourceware.org/ml/gdb-patches/2013-12/msg00707.html
|
||||
commit f45c82da381e0ce5ce51b7fb24d0d28611d266b8
|
||||
Author: Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
Date: Wed Dec 18 16:47:33 2013 +0000
|
||||
|
||||
gdb/
|
||||
|
||||
* aarch64-linux-nat.c (aarch64_linux_set_debug_regs): Set
|
||||
iov.iov_len with the real length in use.
|
||||
|
||||
gdb/gdbserver/
|
||||
|
||||
* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Set
|
||||
iov.iov_len with the real length in use.
|
||||
|
||||
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
|
||||
index 7d9308f..513c593 100644
|
||||
### a/gdb/ChangeLog
|
||||
### b/gdb/ChangeLog
|
||||
## -1,3 +1,8 @@
|
||||
+2013-12-18 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
+
|
||||
+ * aarch64-linux-nat.c (aarch64_linux_set_debug_regs): Set
|
||||
+ iov.iov_len with the real length in use.
|
||||
+
|
||||
2013-12-18 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* target.h (target_xfer_partial_ftype): New typedef.
|
||||
diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
|
||||
index 256725b..7d76833 100644
|
||||
--- a/gdb/aarch64-linux-nat.c
|
||||
+++ b/gdb/aarch64-linux-nat.c
|
||||
@@ -314,10 +314,13 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
|
||||
|
||||
memset (®s, 0, sizeof (regs));
|
||||
iov.iov_base = ®s;
|
||||
- iov.iov_len = sizeof (regs);
|
||||
count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
|
||||
addr = watchpoint ? state->dr_addr_wp : state->dr_addr_bp;
|
||||
ctrl = watchpoint ? state->dr_ctrl_wp : state->dr_ctrl_bp;
|
||||
+ if (count == 0)
|
||||
+ return;
|
||||
+ iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs[count - 1])
|
||||
+ + sizeof (regs.dbg_regs [count - 1]));
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
|
||||
index c73840f..2847796 100644
|
||||
### a/gdb/gdbserver/ChangeLog
|
||||
### b/gdb/gdbserver/ChangeLog
|
||||
## -1,3 +1,8 @@
|
||||
+2013-12-18 Yufeng Zhang <yufeng.zhang@arm.com>
|
||||
+
|
||||
+ * linux-aarch64-low.c (aarch64_linux_set_debug_regs): Set
|
||||
+ iov.iov_len with the real length in use.
|
||||
+
|
||||
2013-12-13 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* Makefile.in (safe-ctype.o, lbasename.o): New rules.
|
||||
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
|
||||
index 93246b3..c2d271a 100644
|
||||
--- a/gdb/gdbserver/linux-aarch64-low.c
|
||||
+++ b/gdb/gdbserver/linux-aarch64-low.c
|
||||
@@ -602,10 +602,13 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
|
||||
|
||||
memset (®s, 0, sizeof (regs));
|
||||
iov.iov_base = ®s;
|
||||
- iov.iov_len = sizeof (regs);
|
||||
count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
|
||||
addr = watchpoint ? state->dr_addr_wp : state->dr_addr_bp;
|
||||
ctrl = watchpoint ? state->dr_ctrl_wp : state->dr_ctrl_bp;
|
||||
+ if (count == 0)
|
||||
+ return;
|
||||
+ iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs[count - 1])
|
||||
+ + sizeof (regs.dbg_regs [count - 1]));
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
|
|
137
gdb.spec
137
gdb.spec
|
@ -11,8 +11,9 @@
|
|||
%global dist .el5
|
||||
%global el5 1
|
||||
%endif
|
||||
# RHEL-5 Brew does not set %{el5}.
|
||||
# RHEL-5 Brew does not set %{el5}, BZ 1002198 tps-srpmtest does not set %{rhel}.
|
||||
%if "%{?dist}" == ".el5"
|
||||
%global rhel 5
|
||||
%global el5 1
|
||||
%endif
|
||||
|
||||
|
@ -32,11 +33,11 @@ Name: %{?scl_prefix}gdb
|
|||
%global snapsrc 20130312
|
||||
# See timestamp of source gnulib installed into gdb/gnulib/ .
|
||||
%global snapgnulib 20121213
|
||||
Version: 7.6
|
||||
Version: 7.6.1
|
||||
|
||||
# The release always contains a leading reserved number, start it at 1.
|
||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||
Release: 32%{?dist}
|
||||
Release: 50%{?dist}
|
||||
|
||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
|
||||
Group: Development/Debuggers
|
||||
|
@ -578,10 +579,26 @@ Patch834: gdb-vdso-gcore.patch
|
|||
#=drop
|
||||
Patch835: gdb-psymtab-expand.patch
|
||||
|
||||
# Fix C++ lookups performance regression (Doug Evans, BZ 972677).
|
||||
# [ppc] Support Power8 CPU (IBM, BZ 731875).
|
||||
#=drop
|
||||
Patch838: gdb-cxx-performance-1of2.patch
|
||||
Patch839: gdb-cxx-performance-2of2.patch
|
||||
Patch840: gdb-power8-1of2.patch
|
||||
Patch841: gdb-power8-2of2.patch
|
||||
|
||||
# Fix crash on 'enable count' (Simon Marchi, BZ 993118).
|
||||
Patch843: gdb-enable-count-crash.patch
|
||||
|
||||
# Fix the case when GDB leaks memory because value_struct_elt
|
||||
# does not call check_typedef. (Doug Evans, BZ 15695, filed as
|
||||
# RH BZ 1013453).
|
||||
Patch844: gdb-rhbz1013453-value-struct-elt-memory-leak.patch
|
||||
|
||||
# Fix explicit Class:: inside class scope (BZ 874817, Keith Seitz).
|
||||
Patch845: gdb-implicit-this.patch
|
||||
|
||||
# Fix crash of -readnow /usr/lib/debug/usr/bin/gnatbind.debug (BZ 1069211).
|
||||
Patch850: gdb-gnat-dwarf-crash-1of3.patch
|
||||
Patch851: gdb-gnat-dwarf-crash-2of3.patch
|
||||
Patch852: gdb-gnat-dwarf-crash-3of3.patch
|
||||
|
||||
%if 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||
# RL_STATE_FEDORA_GDB would not be found for:
|
||||
|
@ -649,7 +666,10 @@ ExclusiveArch: noarch i386 x86_64 ppc ppc64 ia64 s390 s390x
|
|||
|
||||
BuildRequires: sharutils dejagnu
|
||||
# gcc-objc++ is not covered by the GDB testsuite.
|
||||
BuildRequires: gcc gcc-c++ gcc-gfortran gcc-java gcc-objc
|
||||
BuildRequires: gcc gcc-c++ gcc-gfortran gcc-objc
|
||||
%if 0%{!?rhel:1} || 0%{?rhel} < 7
|
||||
BuildRequires: gcc-java libgcj%{bits_local} libgcj%{bits_other}
|
||||
%endif
|
||||
%if 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||
BuildRequires: gcc-go
|
||||
%endif
|
||||
|
@ -680,7 +700,6 @@ BuildRequires: glibc-devel%{bits_local} glibc-devel%{bits_other}
|
|||
BuildRequires: libgcc%{bits_local} libgcc%{bits_other}
|
||||
# libstdc++-devel of matching bits is required only for g++ -static.
|
||||
BuildRequires: libstdc++%{bits_local} libstdc++%{bits_other}
|
||||
BuildRequires: libgcj%{bits_local} libgcj%{bits_other}
|
||||
%if 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||
BuildRequires: libgo-devel%{bits_local} libgo-devel%{bits_other}
|
||||
%endif
|
||||
|
@ -906,8 +925,14 @@ find -name "*.info*"|xargs rm -f
|
|||
%patch832 -p1
|
||||
%patch834 -p1
|
||||
%patch835 -p1
|
||||
%patch838 -p1
|
||||
%patch839 -p1
|
||||
%patch840 -p1
|
||||
%patch841 -p1
|
||||
%patch843 -p1
|
||||
%patch844 -p1
|
||||
%patch845 -p1
|
||||
%patch850 -p1
|
||||
%patch851 -p1
|
||||
%patch852 -p1
|
||||
|
||||
%patch836 -p1
|
||||
%patch837 -p1
|
||||
|
@ -942,9 +967,9 @@ find -name "*.orig" | xargs rm -f
|
|||
# Change the version that gets printed at GDB startup, so it is RH specific.
|
||||
cat > gdb/version.in << _FOO
|
||||
%if 0%{!?rhel:1}
|
||||
Fedora (%{version}-%{release})
|
||||
Fedora %{version}-%{release}
|
||||
%else # !0%{!?rhel:1}
|
||||
Red Hat Enterprise Linux (%{version}-%{release})
|
||||
Red Hat Enterprise Linux %{version}-%{release}
|
||||
%endif # !0%{!?rhel:1}
|
||||
_FOO
|
||||
|
||||
|
@ -1055,6 +1080,7 @@ $(: It breaks RHEL-5 by %{_target_platform} being noarch-redhat-linux-gnu ) \
|
|||
%ifarch noarch
|
||||
$(:)
|
||||
%else
|
||||
--enable-targets=s390-linux-gnu,powerpc-linux-gnu \
|
||||
%{_target_platform}
|
||||
%endif
|
||||
%endif
|
||||
|
@ -1252,8 +1278,8 @@ done
|
|||
%endif # 0%{?_enable_debug_packages:1} && 0%{!?_without_python:1}
|
||||
|
||||
mkdir $RPM_BUILD_ROOT%{_datadir}/gdb/auto-load
|
||||
%if 0%{?rhel:1} && 0%{?rhel} <= 6
|
||||
%if 0%{!?_without_python:1}
|
||||
%if 0%{?rhel:1} && 0%{?rhel} <= 6
|
||||
# Temporarily now:
|
||||
for LIB in lib lib64;do
|
||||
LIBPATH="$RPM_BUILD_ROOT%{_datadir}/gdb/auto-load%{_root_prefix}/$LIB"
|
||||
|
@ -1275,8 +1301,15 @@ for i in `find $RPM_BUILD_ROOT%{_datadir}/gdb/python -name "*.py"` \
|
|||
# Files come from gdb-archer.patch and can be also further patched.
|
||||
touch -r $RPM_BUILD_DIR/%{gdb_src}/gdb/ChangeLog $i
|
||||
done
|
||||
%else # 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||
# BZ 999645: /usr/share/gdb/auto-load/ needs filesystem symlinks
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/gdb/auto-load
|
||||
for i in $(echo bin lib $(basename %{_libdir}) sbin|tr ' ' '\n'|sort -u);do
|
||||
ln -s $(echo %{_root_prefix}|sed 's#^/*##')/$i \
|
||||
$RPM_BUILD_ROOT%{_datadir}/gdb/auto-load/$i
|
||||
done
|
||||
%endif # 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||
%endif # 0%{!?_without_python:1}
|
||||
%endif # 0%{?rhel:1} && 0%{?rhel} <= 6
|
||||
|
||||
# gdb-add-index cannot be run even for SCL package on RHEL<=6.
|
||||
%if 0%{?rhel:1} && 0%{?rhel} <= 6
|
||||
|
@ -1382,6 +1415,18 @@ rm -rf $RPM_BUILD_ROOT
|
|||
%endif # %{have_inproctrace}
|
||||
%endif
|
||||
|
||||
%pre
|
||||
for i in $(echo bin lib $(basename %{_libdir}) sbin|tr ' ' '\n'|sort -u);do
|
||||
src="%{_datadir}/gdb/auto-load/$i"
|
||||
dst="%{_datadir}/gdb/auto-load/%{_root_prefix}/$i"
|
||||
if test -d $src -a ! -L $src;then
|
||||
if ! rmdir 2>/dev/null $src;then
|
||||
mv -n $src/* $dst/
|
||||
rmdir $src
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# It would break RHEL-5 by leaving excessive files for the doc subpackage.
|
||||
%endif # !noarch
|
||||
%if 0%{!?el5:1} || "%{_target_cpu}" == "noarch"
|
||||
|
@ -1417,6 +1462,66 @@ fi
|
|||
%endif # 0%{!?el5:1} || "%{_target_cpu}" == "noarch"
|
||||
|
||||
%changelog
|
||||
* Mon Feb 24 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-50.fc19
|
||||
- Fix crash of -readnow /usr/lib/debug/usr/bin/gnatbind.debug (BZ 1069211).
|
||||
|
||||
* Thu Jan 23 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-49.fc19
|
||||
- [s390*,ppc*] Enable secondary targets s390* and ppc* (BZ 1056259).
|
||||
|
||||
* Wed Dec 25 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-48.fc19
|
||||
- [aarch64] Backport two breakpoint/watchpoint fixes.
|
||||
|
||||
* Mon Nov 18 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-47.fc19
|
||||
- [rhel7] [--with testsuite] Remove gcc-java&co. BuildRequires.
|
||||
|
||||
* Sat Nov 9 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-46.fc19
|
||||
- Fix explicit Class:: inside class scope (BZ 874817, Keith Seitz).
|
||||
|
||||
* Tue Nov 5 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-45.fc19
|
||||
- [aarch64] Backport two fixes (BZ 1026484).
|
||||
|
||||
* Sun Nov 3 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-44.fc19
|
||||
- Fix %{_bindir}gdb-add-index to also use -iex 'set auto-load no'.
|
||||
|
||||
* Wed Oct 30 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-43.fc19
|
||||
- [rhel5] Fix /etc/gdbinit compatibility with python-2.4.
|
||||
|
||||
* Mon Sep 30 2013 Sergio Durigan Junior <sergiodj@redhat.com> - 7.6.1-42.fc19
|
||||
- Fix the case when GDB leaks memory because value_struct_elt does not call
|
||||
check_typedef. (Doug Evans, BZ 15695, filed as RH BZ 1013453).
|
||||
|
||||
* Mon Sep 9 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-41.fc19
|
||||
- Fix the version string to be GNU standards compliant (BZ 1004949).
|
||||
|
||||
* Sat Aug 31 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-40.fc19
|
||||
- Remove --disablerepo='*' from BZ 554152 as it conflicts with BZ 981154.
|
||||
- [ppc] Support Power8 CPU (IBM, BZ 731875).
|
||||
- [rhel5] tps-srpmtest does not set %%{rhel} (BZ 1002198, Miroslav Franc).
|
||||
|
||||
* Fri Aug 30 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-39.fc19
|
||||
- Load /etc/gdbinit.d/*.{gdb,py} files automatically (BZ 981520).
|
||||
|
||||
* Fri Aug 30 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.1-38.fc19
|
||||
- Rebase to FSF GDB 7.6.1.
|
||||
|
||||
* Fri Aug 30 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6-37.fc19
|
||||
- Fix false warnings of new %%pre during future upgrades (BZ 999645).
|
||||
|
||||
* Fri Aug 30 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6-36.fc19
|
||||
- New %%pre to fix failed upgrade of the previous commit (BZ 999645).
|
||||
|
||||
* Wed Aug 28 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6-35.fc19
|
||||
- Fix /usr/share/gdb/auto-load/ need of filesystem symlinks (BZ 999645).
|
||||
It needs: yum remove gdb-heap; yum reinstall gdb; yum install gdb-heap
|
||||
|
||||
* Tue Aug 6 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6-34.fc19
|
||||
- Make the previous commit rpm buildable.
|
||||
|
||||
* Tue Aug 6 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6-33.fc19
|
||||
- Fix yum install command when the binary RPM is missing (BZ 981154).
|
||||
- Fix crash on 'enable count' (Simon Marchi, BZ 993118).
|
||||
- Fix the changlog entry formatting for 6.3.0.0-0.1.
|
||||
|
||||
* Mon Jun 10 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6-32.fc19
|
||||
- [scl] Disable Python frame filters on scl.
|
||||
- Update libraries opening performance fix from upstream.
|
||||
|
@ -3744,8 +3849,8 @@ prelink base addresses. Fixes BZ 175075, BZ 190545.
|
|||
- Enable PPC CFI, remove merged ppc patches.
|
||||
|
||||
* Wed Jan 12 2005 Elena Zannoni <ezannoni@redhat.com> - 6.3.0.0-0.1
|
||||
Andrew Cagney <cagney@redhat.com>
|
||||
Jeff Johnston <jjohnstn@redhat.com>
|
||||
- commit co-authors Andrew Cagney <cagney@redhat.com> and
|
||||
Jeff Johnston <jjohnstn@redhat.com>.
|
||||
- Various fixes to complete the import and merge.
|
||||
|
||||
* Wed Dec 01 2004 Andrew Cagney <cagney@redhat.com> - 6.3.0.0
|
||||
|
|
11
gdbinit
11
gdbinit
|
@ -1,4 +1,9 @@
|
|||
# System-wide GDB initialization file.
|
||||
|
||||
# FIXME: provide a wildcard.
|
||||
source %{_sysconfdir}/gdbinit.d/gdb-heap.py
|
||||
python
|
||||
import glob
|
||||
# glob.iglob is not available in python-2.4 (RHEL-5).
|
||||
for f in glob.glob('%{_sysconfdir}/gdbinit.d/*.gdb'):
|
||||
gdb.execute('source %s' % f)
|
||||
for f in glob.glob('%{_sysconfdir}/gdbinit.d/*.py'):
|
||||
gdb.execute('source %s' % f)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue