Rebase to FSF GDB 8.3.50.20190625 (8.4pre).
This commit is contained in:
parent
2ff911f2f5
commit
292cb418af
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,3 @@
|
||||
/gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz
|
||||
/v2.0.tar.gz
|
||||
/gdb-8.3.50.20190610.tar.xz
|
||||
/gdb-8.3.50.20190625.tar.xz
|
||||
|
@ -1 +1 @@
|
||||
a72f8c4ce397a0bbe98281d4151982330ad16f15
|
||||
2e7c439dec066ac8a597d0b85193b8d3ec8e09eb
|
||||
|
@ -16,7 +16,7 @@ Subject: gdb-6.3-gstack-20050411.patch
|
||||
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
||||
--- a/gdb/Makefile.in
|
||||
+++ b/gdb/Makefile.in
|
||||
@@ -1751,7 +1751,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
|
||||
@@ -1742,7 +1742,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
|
||||
install: all
|
||||
@$(MAKE) $(FLAGS_TO_PASS) install-only
|
||||
|
||||
@ -25,7 +25,7 @@ diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
||||
transformed_name=`t='$(program_transform_name)'; \
|
||||
echo gdb | sed -e "$$t"` ; \
|
||||
if test "x$$transformed_name" = x; then \
|
||||
@@ -1800,7 +1800,25 @@ install-guile:
|
||||
@@ -1791,7 +1791,25 @@ install-guile:
|
||||
install-python:
|
||||
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
|
||||
|
||||
@ -52,7 +52,7 @@ diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
||||
transformed_name=`t='$(program_transform_name)'; \
|
||||
echo gdb | sed -e $$t` ; \
|
||||
if test "x$$transformed_name" = x; then \
|
||||
@@ -1823,6 +1841,18 @@ uninstall: force $(CONFIG_UNINSTALL)
|
||||
@@ -1814,6 +1832,18 @@ uninstall: force $(CONFIG_UNINSTALL)
|
||||
fi
|
||||
@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
|
||||
|
||||
|
@ -27,7 +27,7 @@ diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest
|
||||
diff --git a/gdb/top.c b/gdb/top.c
|
||||
--- a/gdb/top.c
|
||||
+++ b/gdb/top.c
|
||||
@@ -2079,7 +2079,7 @@ init_gdb_version_vars (void)
|
||||
@@ -2070,7 +2070,7 @@ init_gdb_version_vars (void)
|
||||
struct internalvar *major_version_var = create_internalvar ("_gdb_major");
|
||||
struct internalvar *minor_version_var = create_internalvar ("_gdb_minor");
|
||||
int vmajor = 0, vminor = 0, vrevision = 0;
|
||||
|
@ -44,9 +44,9 @@ glibc-debuginfo-2.7-2.x86_64: /usr/lib/debug/lib64/libc.so.6.debug:
|
||||
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
|
||||
--- a/gdb/printcmd.c
|
||||
+++ b/gdb/printcmd.c
|
||||
@@ -1182,6 +1182,10 @@ print_command_1 (const char *exp, int voidprint)
|
||||
@@ -1188,6 +1188,10 @@ print_command_1 (const char *args, int voidprint)
|
||||
|
||||
if (exp && *exp)
|
||||
if (exp != nullptr && *exp)
|
||||
{
|
||||
+ /* '*((int *(*) (void)) __errno_location) ()' is incompatible with
|
||||
+ function descriptors. */
|
||||
|
@ -11,7 +11,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379
|
||||
diff --git a/gdb/symtab.c b/gdb/symtab.c
|
||||
--- a/gdb/symtab.c
|
||||
+++ b/gdb/symtab.c
|
||||
@@ -3145,6 +3145,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
|
||||
@@ -3148,6 +3148,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
|
||||
SYMBOL_LINKAGE_NAME (msymbol)); */
|
||||
;
|
||||
/* fall through */
|
||||
|
@ -98,7 +98,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -3496,6 +3496,16 @@ read_gdb_index_from_buffer (struct objfile *objfile,
|
||||
@@ -3456,6 +3456,16 @@ read_gdb_index_from_buffer (struct objfile *objfile,
|
||||
"set use-deprecated-index-sections on". */
|
||||
if (version < 6 && !deprecated_ok)
|
||||
{
|
||||
@ -115,7 +115,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
static int warning_printed = 0;
|
||||
if (!warning_printed)
|
||||
{
|
||||
@@ -3507,6 +3517,10 @@ to use the section anyway."),
|
||||
@@ -3467,6 +3477,10 @@ to use the section anyway."),
|
||||
warning_printed = 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -707,7 +707,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
GDB_DATADIR
|
||||
DEBUGDIR
|
||||
MAKEINFO_EXTRA_FLAGS
|
||||
@@ -855,6 +860,7 @@ with_gdb_datadir
|
||||
@@ -854,6 +859,7 @@ with_gdb_datadir
|
||||
with_relocated_sources
|
||||
with_auto_load_dir
|
||||
with_auto_load_safe_path
|
||||
@ -715,7 +715,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
enable_targets
|
||||
enable_64_bit_bfd
|
||||
enable_gdbmi
|
||||
@@ -915,6 +921,11 @@ CCC
|
||||
@@ -914,6 +920,11 @@ CCC
|
||||
CPP
|
||||
MAKEINFO
|
||||
MAKEINFOFLAGS
|
||||
@ -727,7 +727,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
YACC
|
||||
YFLAGS
|
||||
XMKMF'
|
||||
@@ -1588,6 +1599,8 @@ Optional Packages:
|
||||
@@ -1587,6 +1598,8 @@ Optional Packages:
|
||||
[--with-auto-load-dir]
|
||||
--without-auto-load-safe-path
|
||||
do not restrict auto-loaded files locations
|
||||
@ -736,7 +736,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
--with-libunwind-ia64 use libunwind frame unwinding for ia64 targets
|
||||
--with-curses use the curses library instead of the termcap
|
||||
library
|
||||
@@ -1645,6 +1658,13 @@ Some influential environment variables:
|
||||
@@ -1644,6 +1657,13 @@ Some influential environment variables:
|
||||
MAKEINFO Parent configure detects if it is of sufficient version.
|
||||
MAKEINFOFLAGS
|
||||
Parameters for MAKEINFO.
|
||||
@ -750,7 +750,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
YACC The `Yet Another Compiler Compiler' implementation to use.
|
||||
Defaults to the first program found out of: `bison -y', `byacc',
|
||||
`yacc'.
|
||||
@@ -6626,6 +6646,494 @@ _ACEOF
|
||||
@@ -6503,6 +6523,494 @@ _ACEOF
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
|
||||
$as_echo "$with_auto_load_safe_path" >&6; }
|
||||
|
||||
@ -1248,7 +1248,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
diff --git a/gdb/configure.ac b/gdb/configure.ac
|
||||
--- a/gdb/configure.ac
|
||||
+++ b/gdb/configure.ac
|
||||
@@ -166,6 +166,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
|
||||
@@ -144,6 +144,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
|
||||
[Directories safe to hold auto-loaded files.])
|
||||
AC_MSG_RESULT([$with_auto_load_safe_path])
|
||||
|
||||
|
@ -932,7 +932,7 @@ diff --git a/gdb/build-id.h b/gdb/build-id.h
|
||||
diff --git a/gdb/coffread.c b/gdb/coffread.c
|
||||
--- a/gdb/coffread.c
|
||||
+++ b/gdb/coffread.c
|
||||
@@ -717,7 +717,8 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
@@ -710,7 +710,8 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
/* Try to add separate debug file if no symbols table found. */
|
||||
if (!objfile_has_partial_symbols (objfile))
|
||||
{
|
||||
@ -1036,7 +1036,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
|
||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||
--- a/gdb/doc/gdb.texinfo
|
||||
+++ b/gdb/doc/gdb.texinfo
|
||||
@@ -20183,6 +20183,27 @@ information files.
|
||||
@@ -20427,6 +20427,27 @@ information files.
|
||||
|
||||
@end table
|
||||
|
||||
@ -1067,19 +1067,29 @@ diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||
diff --git a/gdb/dwarf-index-cache.c b/gdb/dwarf-index-cache.c
|
||||
--- a/gdb/dwarf-index-cache.c
|
||||
+++ b/gdb/dwarf-index-cache.c
|
||||
@@ -93,7 +93,7 @@ index_cache::store (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
||||
if (!enabled ())
|
||||
@@ -94,7 +94,7 @@ index_cache::store (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
||||
return;
|
||||
|
||||
/* Get build id of objfile. */
|
||||
- const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
|
||||
+ const bfd_build_id *build_id = build_id_bfd_shdr_get (obj->obfd);
|
||||
if (build_id == nullptr)
|
||||
{
|
||||
if (debug_index_cache)
|
||||
@@ -112,7 +112,8 @@ index_cache::store (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
||||
|
||||
if (dwz != nullptr)
|
||||
{
|
||||
- const bfd_build_id *dwz_build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
|
||||
+ const bfd_build_id *dwz_build_id
|
||||
+ = build_id_bfd_shdr_get (dwz->dwz_bfd.get ());
|
||||
|
||||
if (dwz_build_id == nullptr)
|
||||
{
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -2722,7 +2722,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
||||
@@ -2677,7 +2677,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
||||
}
|
||||
|
||||
if (dwz_bfd == NULL)
|
||||
@ -1088,7 +1098,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
|
||||
if (dwz_bfd == NULL)
|
||||
error (_("could not find '.gnu_debugaltlink' file for %s"),
|
||||
@@ -6232,7 +6232,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
|
||||
@@ -6189,7 +6189,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
|
||||
static gdb::array_view<const gdb_byte>
|
||||
get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
||||
{
|
||||
@ -1097,7 +1107,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
if (build_id == nullptr)
|
||||
return {};
|
||||
|
||||
@@ -6245,7 +6245,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
||||
@@ -6202,7 +6202,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
||||
static gdb::array_view<const gdb_byte>
|
||||
get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
|
||||
{
|
||||
@ -1109,7 +1119,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
diff --git a/gdb/elfread.c b/gdb/elfread.c
|
||||
--- a/gdb/elfread.c
|
||||
+++ b/gdb/elfread.c
|
||||
@@ -1290,7 +1290,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
@@ -1284,7 +1284,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
&& objfile->separate_debug_objfile == NULL
|
||||
&& objfile->separate_debug_objfile_backlink == NULL)
|
||||
{
|
||||
@ -1120,7 +1130,7 @@ diff --git a/gdb/elfread.c b/gdb/elfread.c
|
||||
|
||||
if (debugfile.empty ())
|
||||
debugfile = find_separate_debug_file_by_debuglink (objfile);
|
||||
@@ -1302,6 +1304,10 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
@@ -1296,6 +1298,10 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
|
||||
symbol_file_add_separate (debug_bfd.get (), debugfile.c_str (),
|
||||
symfile_flags, objfile);
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ diff --git a/gdb/extension.c b/gdb/extension.c
|
||||
diff --git a/gdb/top.c b/gdb/top.c
|
||||
--- a/gdb/top.c
|
||||
+++ b/gdb/top.c
|
||||
@@ -1686,7 +1686,13 @@ quit_force (int *exit_arg, int from_tty)
|
||||
@@ -1677,7 +1677,13 @@ quit_force (int *exit_arg, int from_tty)
|
||||
|
||||
qt.from_tty = from_tty;
|
||||
|
||||
|
@ -8,7 +8,7 @@ Subject: gdb-archer-pie-addons-keep-disabled.patch
|
||||
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||
--- a/gdb/breakpoint.c
|
||||
+++ b/gdb/breakpoint.c
|
||||
@@ -15428,6 +15428,50 @@ static struct cmd_list_element *enablebreaklist = NULL;
|
||||
@@ -15416,6 +15416,50 @@ static struct cmd_list_element *enablebreaklist = NULL;
|
||||
|
||||
cmd_list_element *commands_cmd_element = nullptr;
|
||||
|
||||
@ -62,7 +62,7 @@ diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
|
||||
--- a/gdb/breakpoint.h
|
||||
+++ b/gdb/breakpoint.h
|
||||
@@ -1664,6 +1664,9 @@ extern const char *ep_parse_optional_if_clause (const char **arg);
|
||||
@@ -1674,6 +1674,9 @@ extern const char *ep_parse_optional_if_clause (const char **arg);
|
||||
UIOUT iff debugging multiple threads. */
|
||||
extern void maybe_print_thread_hit_breakpoint (struct ui_out *uiout);
|
||||
|
||||
|
@ -14,22 +14,6 @@ commit 718a1618b2f691a7f407213bb50f100ac59f91c3
|
||||
|
||||
tromey/python
|
||||
|
||||
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
||||
--- a/gdb/Makefile.in
|
||||
+++ b/gdb/Makefile.in
|
||||
@@ -2084,6 +2084,12 @@ stamp-h: $(srcdir)/config.in config.status
|
||||
CONFIG_LINKS= \
|
||||
$(SHELL) config.status
|
||||
|
||||
+.gdbinit: $(srcdir)/gdbinit.in config.status
|
||||
+ CONFIG_FILES=".gdbinit:gdbinit.in" \
|
||||
+ CONFIG_COMMANDS= \
|
||||
+ CONFIG_HEADERS= \
|
||||
+ $(SHELL) config.status
|
||||
+
|
||||
config.status: $(srcdir)/configure configure.nat configure.tgt configure.host ../bfd/development.sh
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
|
||||
--- a/gdb/data-directory/Makefile.in
|
||||
+++ b/gdb/data-directory/Makefile.in
|
||||
@ -41,11 +25,10 @@ diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
|
||||
gdb/command/explore.py \
|
||||
gdb/command/backtrace.py \
|
||||
gdb/command/frame_filters.py \
|
||||
@@ -92,6 +93,8 @@ PYTHON_FILE_LIST = \
|
||||
@@ -92,6 +93,7 @@ PYTHON_FILE_LIST = \
|
||||
gdb/function/as_string.py \
|
||||
gdb/function/caller_is.py \
|
||||
gdb/function/strfns.py \
|
||||
+ gdb/function/caller_is.py \
|
||||
+ gdb/function/in_scope.py \
|
||||
gdb/printer/__init__.py \
|
||||
gdb/printer/bound_registers.py
|
||||
@ -53,7 +36,7 @@ diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
|
||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||
--- a/gdb/doc/gdb.texinfo
|
||||
+++ b/gdb/doc/gdb.texinfo
|
||||
@@ -1251,6 +1251,16 @@ for remote debugging.
|
||||
@@ -1252,6 +1252,16 @@ for remote debugging.
|
||||
Run using @var{device} for your program's standard input and output.
|
||||
@c FIXME: kingdon thinks there is more to -tty. Investigate.
|
||||
|
||||
@ -466,7 +449,7 @@ diff --git a/gdb/python/python.c b/gdb/python/python.c
|
||||
/* Return a sequence holding all the Progspaces. */
|
||||
|
||||
static PyObject *
|
||||
@@ -1928,6 +2018,8 @@ PyMethodDef python_GdbMethods[] =
|
||||
@@ -1927,6 +2017,8 @@ PyMethodDef python_GdbMethods[] =
|
||||
Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
|
||||
a Python String containing the output of the command if to_string is\n\
|
||||
set to True." },
|
||||
@ -478,11 +461,7 @@ diff --git a/gdb/python/python.c b/gdb/python/python.c
|
||||
diff --git a/gdb/python/python.h b/gdb/python/python.h
|
||||
--- a/gdb/python/python.h
|
||||
+++ b/gdb/python/python.h
|
||||
@@ -25,7 +25,10 @@
|
||||
/* This is all that python exports to gdb. */
|
||||
extern const struct extension_language_defn extension_language_python;
|
||||
|
||||
+
|
||||
@@ -28,4 +28,6 @@ extern const struct extension_language_defn extension_language_python;
|
||||
/* Command element for the 'python' command. */
|
||||
extern cmd_list_element *python_cmd_element;
|
||||
|
||||
@ -528,14 +507,3 @@ diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py
|
||||
|
||||
# Test either C or C++ values.
|
||||
|
||||
diff --git a/gdb/varobj.c b/gdb/varobj.c
|
||||
--- a/gdb/varobj.c
|
||||
+++ b/gdb/varobj.c
|
||||
@@ -217,7 +217,6 @@ is_root_p (const struct varobj *var)
|
||||
}
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
-
|
||||
/* See python-internal.h. */
|
||||
gdbpy_enter_varobj::gdbpy_enter_varobj (const struct varobj *var)
|
||||
: gdbpy_enter (var->root->exp->gdbarch, var->root->exp->language_defn)
|
||||
|
@ -68,7 +68,7 @@ diff --git a/gdb/config.in b/gdb/config.in
|
||||
diff --git a/gdb/configure b/gdb/configure
|
||||
--- a/gdb/configure
|
||||
+++ b/gdb/configure
|
||||
@@ -15814,6 +15814,64 @@ cat >>confdefs.h <<_ACEOF
|
||||
@@ -15691,6 +15691,64 @@ cat >>confdefs.h <<_ACEOF
|
||||
_ACEOF
|
||||
|
||||
|
||||
@ -136,7 +136,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
diff --git a/gdb/configure.ac b/gdb/configure.ac
|
||||
--- a/gdb/configure.ac
|
||||
+++ b/gdb/configure.ac
|
||||
@@ -2039,6 +2039,10 @@ case $host_os in
|
||||
@@ -2017,6 +2017,10 @@ case $host_os in
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
|
||||
|
||||
@ -276,7 +276,7 @@ diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
|
||||
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
|
||||
--- a/gdb/linux-nat.c
|
||||
+++ b/gdb/linux-nat.c
|
||||
@@ -1098,7 +1098,16 @@ linux_nat_target::create_inferior (const char *exec_file,
|
||||
@@ -1095,7 +1095,16 @@ linux_nat_target::create_inferior (const char *exec_file,
|
||||
/* Make sure we report all signals during startup. */
|
||||
pass_signals ({});
|
||||
|
||||
|
@ -14,7 +14,7 @@ printed, but a default backtrace will occur in this case.
|
||||
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
|
||||
--- a/gdb/python/py-framefilter.c
|
||||
+++ b/gdb/python/py-framefilter.c
|
||||
@@ -1138,6 +1138,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||
@@ -1139,6 +1139,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||
htab_eq_pointer,
|
||||
NULL));
|
||||
|
||||
@ -22,7 +22,7 @@ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
|
||||
while (true)
|
||||
{
|
||||
gdbpy_ref<> item (PyIter_Next (iterable.get ()));
|
||||
@@ -1146,8 +1147,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||
@@ -1147,8 +1148,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||
{
|
||||
if (PyErr_Occurred ())
|
||||
{
|
||||
@ -33,7 +33,7 @@ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1179,7 +1180,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||
@@ -1180,7 +1181,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||
/* Do not exit on error printing a single frame. Print the
|
||||
error and continue with other frames. */
|
||||
if (success == EXT_LANG_BT_ERROR)
|
||||
|
@ -53,7 +53,7 @@ gdb/
|
||||
diff --git a/gdb/utils.c b/gdb/utils.c
|
||||
--- a/gdb/utils.c
|
||||
+++ b/gdb/utils.c
|
||||
@@ -692,13 +692,11 @@ malloc_failure (long size)
|
||||
@@ -689,13 +689,11 @@ malloc_failure (long size)
|
||||
{
|
||||
if (size > 0)
|
||||
{
|
||||
|
@ -12,7 +12,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1270534
|
||||
diff --git a/gdb/configure b/gdb/configure
|
||||
--- a/gdb/configure
|
||||
+++ b/gdb/configure
|
||||
@@ -9418,6 +9418,7 @@ if test x"$prefer_curses" = xyes; then
|
||||
@@ -9295,6 +9295,7 @@ if test x"$prefer_curses" = xyes; then
|
||||
# search /usr/local/include, if ncurses is installed in /usr/local. A
|
||||
# default installation of ncurses on alpha*-dec-osf* will lead to such
|
||||
# a situation.
|
||||
@ -20,7 +20,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing waddstr" >&5
|
||||
$as_echo_n "checking for library containing waddstr... " >&6; }
|
||||
if ${ac_cv_search_waddstr+:} false; then :
|
||||
@@ -9442,7 +9443,7 @@ return waddstr ();
|
||||
@@ -9319,7 +9320,7 @@ return waddstr ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
@ -29,7 +29,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
else
|
||||
@@ -9516,6 +9517,7 @@ case $host_os in
|
||||
@@ -9393,6 +9394,7 @@ case $host_os in
|
||||
esac
|
||||
|
||||
# These are the libraries checked by Readline.
|
||||
@ -37,7 +37,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5
|
||||
$as_echo_n "checking for library containing tgetent... " >&6; }
|
||||
if ${ac_cv_search_tgetent+:} false; then :
|
||||
@@ -9540,7 +9542,7 @@ return tgetent ();
|
||||
@@ -9417,7 +9419,7 @@ return tgetent ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
@ -49,7 +49,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
diff --git a/gdb/configure.ac b/gdb/configure.ac
|
||||
--- a/gdb/configure.ac
|
||||
+++ b/gdb/configure.ac
|
||||
@@ -743,7 +743,8 @@ if test x"$prefer_curses" = xyes; then
|
||||
@@ -721,7 +721,8 @@ if test x"$prefer_curses" = xyes; then
|
||||
# search /usr/local/include, if ncurses is installed in /usr/local. A
|
||||
# default installation of ncurses on alpha*-dec-osf* will lead to such
|
||||
# a situation.
|
||||
@ -59,7 +59,7 @@ diff --git a/gdb/configure.ac b/gdb/configure.ac
|
||||
|
||||
if test "$ac_cv_search_waddstr" != no; then
|
||||
curses_found=yes
|
||||
@@ -785,7 +786,8 @@ case $host_os in
|
||||
@@ -763,7 +764,8 @@ case $host_os in
|
||||
esac
|
||||
|
||||
# These are the libraries checked by Readline.
|
||||
|
@ -42,7 +42,7 @@ gdb/
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -10590,6 +10590,13 @@ private:
|
||||
@@ -10543,6 +10543,13 @@ private:
|
||||
static void
|
||||
process_die (struct die_info *die, struct dwarf2_cu *cu)
|
||||
{
|
||||
@ -89,7 +89,7 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
|
||||
static unsigned int debug_linux_nat;
|
||||
static void
|
||||
show_debug_linux_nat (struct ui_file *file, int from_tty,
|
||||
@@ -1036,6 +1042,9 @@ linux_nat_post_attach_wait (ptid_t ptid, int *signalled)
|
||||
@@ -1033,6 +1039,9 @@ linux_nat_post_attach_wait (ptid_t ptid, int *signalled)
|
||||
if (debug_linux_nat)
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"LNPAW: Attaching to a stopped process\n");
|
||||
@ -99,7 +99,7 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
|
||||
|
||||
/* The process is definitely stopped. It is in a job control
|
||||
stop, unless the kernel predates the TASK_STOPPED /
|
||||
@@ -1367,6 +1376,25 @@ get_detach_signal (struct lwp_info *lp)
|
||||
@@ -1364,6 +1373,25 @@ get_detach_signal (struct lwp_info *lp)
|
||||
return gdb_signal_to_host (signo);
|
||||
}
|
||||
|
||||
@ -125,7 +125,7 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1515,6 +1543,10 @@ linux_nat_target::detach (inferior *inf, int from_tty)
|
||||
@@ -1512,6 +1540,10 @@ linux_nat_target::detach (inferior *inf, int from_tty)
|
||||
detach_one_lwp (main_lwp, &signo);
|
||||
|
||||
detach_success (inf);
|
||||
@ -136,7 +136,7 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1772,6 +1804,16 @@ linux_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
|
||||
@@ -1769,6 +1801,16 @@ linux_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
|
||||
return;
|
||||
}
|
||||
|
||||
@ -153,7 +153,7 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
|
||||
if (resume_many)
|
||||
iterate_over_lwps (ptid, [=] (struct lwp_info *info)
|
||||
{
|
||||
@@ -3773,6 +3815,10 @@ linux_nat_target::mourn_inferior ()
|
||||
@@ -3770,6 +3812,10 @@ linux_nat_target::mourn_inferior ()
|
||||
|
||||
/* Let the arch-specific native code know this process is gone. */
|
||||
linux_target->low_forget_process (pid);
|
||||
|
@ -9,7 +9,7 @@ Subject: gdb-jit-reader-multilib.patch
|
||||
diff --git a/gdb/configure b/gdb/configure
|
||||
--- a/gdb/configure
|
||||
+++ b/gdb/configure
|
||||
@@ -9705,10 +9705,12 @@ _ACEOF
|
||||
@@ -9582,10 +9582,12 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
diff --git a/gdb/configure.ac b/gdb/configure.ac
|
||||
--- a/gdb/configure.ac
|
||||
+++ b/gdb/configure.ac
|
||||
@@ -820,10 +820,12 @@ AC_CHECK_SIZEOF(unsigned long long)
|
||||
@@ -798,10 +798,12 @@ AC_CHECK_SIZEOF(unsigned long long)
|
||||
AC_CHECK_SIZEOF(unsigned long)
|
||||
AC_CHECK_SIZEOF(unsigned __int128)
|
||||
|
||||
|
@ -14,9 +14,9 @@ Subject: gdb-libexec-add-index.patch
|
||||
diff --git a/gdb/contrib/gdb-add-index.sh b/gdb/contrib/gdb-add-index.sh
|
||||
--- a/gdb/contrib/gdb-add-index.sh
|
||||
+++ b/gdb/contrib/gdb-add-index.sh
|
||||
@@ -21,6 +21,20 @@
|
||||
GDB=${GDB:=gdb}
|
||||
@@ -22,6 +22,20 @@ GDB=${GDB:=gdb}
|
||||
OBJCOPY=${OBJCOPY:=objcopy}
|
||||
READELF=${READELF:=readelf}
|
||||
|
||||
+GDB2=/usr/libexec/gdb
|
||||
+if test -x $GDB2 && ! which $GDB &>/dev/null; then
|
||||
|
@ -9,7 +9,7 @@ Subject: gdb-linux_perf-bundle.patch
|
||||
diff --git a/gdb/configure b/gdb/configure
|
||||
--- a/gdb/configure
|
||||
+++ b/gdb/configure
|
||||
@@ -12053,7 +12053,7 @@ else
|
||||
@@ -11930,7 +11930,7 @@ else
|
||||
|
||||
#include <linux/perf_event.h>
|
||||
#ifndef PERF_ATTR_SIZE_VER5
|
||||
@ -21,7 +21,7 @@ diff --git a/gdb/configure b/gdb/configure
|
||||
diff --git a/gdb/configure.ac b/gdb/configure.ac
|
||||
--- a/gdb/configure.ac
|
||||
+++ b/gdb/configure.ac
|
||||
@@ -1488,7 +1488,7 @@ else
|
||||
@@ -1466,7 +1466,7 @@ else
|
||||
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <linux/perf_event.h>
|
||||
#ifndef PERF_ATTR_SIZE_VER5
|
||||
|
@ -14,7 +14,7 @@ Bug in FSF GDB exploited by the ptrace-on-utrace interaction.
|
||||
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||
--- a/gdb/breakpoint.c
|
||||
+++ b/gdb/breakpoint.c
|
||||
@@ -11922,6 +11922,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
|
||||
@@ -11911,6 +11911,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
|
||||
traps we can no longer explain. */
|
||||
|
||||
old_loc->events_till_retirement = 3 * (thread_count () + 1);
|
||||
|
@ -143,7 +143,7 @@ diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -17839,7 +17839,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17763,7 +17763,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
struct type *base_type, *orig_base_type;
|
||||
struct type *range_type;
|
||||
struct attribute *attr;
|
||||
@ -152,7 +152,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
int low_default_is_valid;
|
||||
int high_bound_is_count = 0;
|
||||
const char *name;
|
||||
@@ -17859,7 +17859,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17783,7 +17783,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
low.kind = PROP_CONST;
|
||||
high.kind = PROP_CONST;
|
||||
@ -162,7 +162,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
|
||||
/* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
|
||||
omitting DW_AT_lower_bound. */
|
||||
@@ -17892,6 +17894,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17816,6 +17818,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
break;
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
|
||||
if (attr)
|
||||
attr_to_dynamic_prop (attr, die, cu, &low);
|
||||
@@ -17984,7 +17994,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17908,7 +17918,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
&& !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
|
||||
high.data.const_val |= negative_mask;
|
||||
|
||||
@ -1672,7 +1672,7 @@ new file mode 100644
|
||||
diff --git a/gdb/testsuite/gdb.fortran/vla-ptype.exp b/gdb/testsuite/gdb.fortran/vla-ptype.exp
|
||||
--- a/gdb/testsuite/gdb.fortran/vla-ptype.exp
|
||||
+++ b/gdb/testsuite/gdb.fortran/vla-ptype.exp
|
||||
@@ -98,3 +98,7 @@ gdb_test "ptype vla2" "type = <not allocated>" "ptype vla2 not allocated"
|
||||
@@ -98,3 +98,7 @@ gdb_test "ptype vla2" "type = $real, allocatable \\(:,:,:\\)" "ptype vla2 not al
|
||||
gdb_test "ptype vla2(5, 45, 20)" \
|
||||
"no such vector element \\\(vector not allocated\\\)" \
|
||||
"ptype vla2(5, 45, 20) not allocated"
|
||||
@ -1687,7 +1687,7 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortra
|
||||
gdb_test "print sizeof(vla1(3,2,1))" \
|
||||
"no such vector element \\(vector not allocated\\)" \
|
||||
"print sizeof non-allocated indexed vla1"
|
||||
-gdb_test "print sizeof(vla1(3:4,2,1))" "slice out of range" \
|
||||
-gdb_test "print sizeof(vla1(3:4,2,1))" "array not allocated" \
|
||||
+gdb_test "print sizeof(vla1(3:4,2,1))" \
|
||||
+ "provided bound\\(s\\) outside array bound\\(s\\)" \
|
||||
"print sizeof non-allocated sliced vla1"
|
||||
@ -1706,7 +1706,7 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortra
|
||||
gdb_test "print sizeof(pvla(3,2,1))" \
|
||||
"no such vector element \\(vector not associated\\)" \
|
||||
"print sizeof non-associated indexed pvla"
|
||||
-gdb_test "print sizeof(pvla(3:4,2,1))" "slice out of range" \
|
||||
-gdb_test "print sizeof(pvla(3:4,2,1))" "array not associated" \
|
||||
+gdb_test "print sizeof(pvla(3:4,2,1))" \
|
||||
+ "provided bound\\(s\\) outside array bound\\(s\\)" \
|
||||
"print sizeof non-associated sliced pvla"
|
||||
@ -1849,7 +1849,7 @@ diff --git a/gdb/valarith.c b/gdb/valarith.c
|
||||
diff --git a/gdb/valops.c b/gdb/valops.c
|
||||
--- a/gdb/valops.c
|
||||
+++ b/gdb/valops.c
|
||||
@@ -3790,56 +3790,195 @@ value_of_this_silent (const struct language_defn *lang)
|
||||
@@ -3790,13 +3790,42 @@ value_of_this_silent (const struct language_defn *lang)
|
||||
|
||||
struct value *
|
||||
value_slice (struct value *array, int lowbound, int length)
|
||||
@ -1896,6 +1896,9 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
||||
if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
|
||||
&& TYPE_CODE (array_type) != TYPE_CODE_STRING)
|
||||
error (_("cannot take slice of non-array"));
|
||||
@@ -3806,45 +3835,155 @@ value_slice (struct value *array, int lowbound, int length)
|
||||
if (type_not_associated (array_type))
|
||||
error (_("array not associated"));
|
||||
|
||||
- range_type = TYPE_INDEX_TYPE (array_type);
|
||||
- if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
|
||||
@ -1963,7 +1966,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
||||
|
||||
/* FIXME-type-allocation: need a way to free this type when we are
|
||||
- done with it. */
|
||||
- slice_range_type = create_static_range_type ((struct type *) NULL,
|
||||
- slice_range_type = create_static_range_type (NULL,
|
||||
- TYPE_TARGET_TYPE (range_type),
|
||||
- lowbound,
|
||||
- lowbound + length - 1);
|
||||
@ -1985,7 +1988,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
||||
+
|
||||
+ slice_type = create_array_type (NULL, element_type, slice_range_type);
|
||||
|
||||
- slice_type = create_array_type ((struct type *) NULL,
|
||||
- slice_type = create_array_type (NULL,
|
||||
- element_type,
|
||||
- slice_range_type);
|
||||
- TYPE_CODE (slice_type) = TYPE_CODE (array_type);
|
||||
|
@ -33,7 +33,7 @@ git diff --stat -p gdb/master...gdb/users/bheckel/fortran-vla-strings
|
||||
diff --git a/gdb/NEWS b/gdb/NEWS
|
||||
--- a/gdb/NEWS
|
||||
+++ b/gdb/NEWS
|
||||
@@ -467,6 +467,8 @@ SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
|
||||
@@ -573,6 +573,8 @@ SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
|
||||
|
||||
*** Changes in GDB 8.1
|
||||
|
||||
@ -77,7 +77,7 @@ diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -1833,7 +1833,8 @@ static void read_signatured_type (struct signatured_type *);
|
||||
@@ -1810,7 +1810,8 @@ static void read_signatured_type (struct signatured_type *);
|
||||
|
||||
static int attr_to_dynamic_prop (const struct attribute *attr,
|
||||
struct die_info *die, struct dwarf2_cu *cu,
|
||||
@ -87,7 +87,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
|
||||
/* memory allocation interface */
|
||||
|
||||
@@ -13759,7 +13760,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -13686,7 +13687,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||
{
|
||||
newobj->static_link
|
||||
= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
|
||||
@ -96,7 +96,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
}
|
||||
|
||||
cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
|
||||
@@ -16518,7 +16519,8 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -16445,7 +16446,8 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
byte_stride_prop
|
||||
= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
|
||||
@ -106,7 +106,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
if (!stride_ok)
|
||||
{
|
||||
complaint (_("unable to read array DW_AT_byte_stride "
|
||||
@@ -17279,29 +17281,90 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17203,29 +17205,90 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
||||
struct type *type, *range_type, *index_type, *char_type;
|
||||
struct attribute *attr;
|
||||
@ -208,7 +208,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
char_type = language_string_char_type (cu->language_defn, gdbarch);
|
||||
type = create_string_type (NULL, char_type, range_type);
|
||||
|
||||
@@ -17733,7 +17796,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17657,7 +17720,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
static int
|
||||
attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||
@ -218,7 +218,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
{
|
||||
struct dwarf2_property_baton *baton;
|
||||
struct obstack *obstack
|
||||
@@ -17744,14 +17808,33 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||
@@ -17668,14 +17732,33 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||
|
||||
if (attr_form_is_block (attr))
|
||||
{
|
||||
@ -256,7 +256,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
}
|
||||
else if (attr_form_is_ref (attr))
|
||||
{
|
||||
@@ -17784,8 +17867,28 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||
@@ -17708,8 +17791,28 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||
baton = XOBNEW (obstack, struct dwarf2_property_baton);
|
||||
baton->referenced_type = die_type (target_die, target_cu);
|
||||
baton->locexpr.per_cu = cu->per_cu;
|
||||
@ -287,7 +287,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
prop->data.baton = baton;
|
||||
prop->kind = PROP_LOCEXPR;
|
||||
gdb_assert (prop->data.baton != NULL);
|
||||
@@ -17896,7 +17999,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17820,7 +17923,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
|
||||
if (attr)
|
||||
@ -296,7 +296,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
complaint (_("Missing DW_AT_byte_stride "
|
||||
"- DIE at 0x%s [in module %s]"),
|
||||
sect_offset_str (die->sect_off),
|
||||
@@ -17904,7 +18007,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17828,7 +17931,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
|
||||
if (attr)
|
||||
@ -305,7 +305,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
else if (!low_default_is_valid)
|
||||
complaint (_("Missing DW_AT_lower_bound "
|
||||
"- DIE at %s [in module %s]"),
|
||||
@@ -17913,10 +18016,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -17837,10 +17940,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
struct attribute *attr_ub, *attr_count;
|
||||
attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
|
||||
@ -318,7 +318,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
{
|
||||
/* If bounds are constant do the final calculation here. */
|
||||
if (low.kind == PROP_CONST && high.kind == PROP_CONST)
|
||||
@@ -25574,7 +25677,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
@@ -25502,7 +25605,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
attr = dwarf2_attr (die, DW_AT_allocated, cu);
|
||||
if (attr_form_is_block (attr))
|
||||
{
|
||||
@ -327,7 +327,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
|
||||
}
|
||||
else if (attr != NULL)
|
||||
@@ -25588,7 +25691,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
@@ -25516,7 +25619,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
attr = dwarf2_attr (die, DW_AT_associated, cu);
|
||||
if (attr_form_is_block (attr))
|
||||
{
|
||||
@ -336,7 +336,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
|
||||
}
|
||||
else if (attr != NULL)
|
||||
@@ -25600,7 +25703,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
@@ -25528,7 +25631,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
|
||||
/* Read DW_AT_data_location and set in type. */
|
||||
attr = dwarf2_attr (die, DW_AT_data_location, cu);
|
||||
@ -348,63 +348,19 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
|
||||
--- a/gdb/f-typeprint.c
|
||||
+++ b/gdb/f-typeprint.c
|
||||
@@ -37,7 +37,7 @@ static void f_type_print_args (struct type *, struct ui_file *);
|
||||
#endif
|
||||
|
||||
static void f_type_print_varspec_suffix (struct type *, struct ui_file *, int,
|
||||
- int, int, int);
|
||||
+ int, int, int, int);
|
||||
|
||||
void f_type_print_varspec_prefix (struct type *, struct ui_file *,
|
||||
int, int);
|
||||
@@ -53,18 +53,6 @@ f_print_type (struct type *type, const char *varstring, struct ui_file *stream,
|
||||
{
|
||||
enum type_code code;
|
||||
|
||||
- if (type_not_associated (type))
|
||||
- {
|
||||
- val_print_not_associated (stream);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- if (type_not_allocated (type))
|
||||
- {
|
||||
- val_print_not_allocated (stream);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
f_type_print_base (type, stream, show, level);
|
||||
code = TYPE_CODE (type);
|
||||
if ((varstring != NULL && *varstring != '\0')
|
||||
@@ -96,7 +84,7 @@ f_print_type (struct type *type, const char *varstring, struct ui_file *stream,
|
||||
|
||||
demangled_args = (*varstring != '\0'
|
||||
&& varstring[strlen (varstring) - 1] == ')');
|
||||
- f_type_print_varspec_suffix (type, stream, show, 0, demangled_args, 0);
|
||||
+ f_type_print_varspec_suffix (type, stream, show, 0, demangled_args, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +154,7 @@ f_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
|
||||
static void
|
||||
f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
int show, int passed_a_ptr, int demangled_args,
|
||||
- int arrayprint_recurse_level)
|
||||
+ int arrayprint_recurse_level, int print_rank_only)
|
||||
{
|
||||
/* No static variables are permitted as an error call may occur during
|
||||
execution of this function. */
|
||||
@@ -188,36 +176,52 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
fprintf_filtered (stream, "(");
|
||||
|
||||
if (type_not_associated (type))
|
||||
- val_print_not_associated (stream);
|
||||
+ print_rank_only = 1;
|
||||
else if (type_not_allocated (type))
|
||||
- val_print_not_allocated (stream);
|
||||
+ print_rank_only = 1;
|
||||
+ else if ((TYPE_ASSOCIATED_PROP (type)
|
||||
+ && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ASSOCIATED_PROP (type)))
|
||||
@@ -186,15 +186,14 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
print_rank_only = true;
|
||||
else if ((TYPE_ASSOCIATED_PROP (type)
|
||||
&& PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ASSOCIATED_PROP (type)))
|
||||
- || (TYPE_ALLOCATED_PROP (type)
|
||||
- && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ALLOCATED_PROP (type)))
|
||||
- || (TYPE_DATA_LOCATION (type)
|
||||
- && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_DATA_LOCATION (type))))
|
||||
- {
|
||||
- /* This case exist when we ptype a typename which has the dynamic
|
||||
- properties but cannot be resolved as there is no object. */
|
||||
- print_rank_only = true;
|
||||
- }
|
||||
+ || (TYPE_ALLOCATED_PROP (type)
|
||||
+ && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ALLOCATED_PROP (type)))
|
||||
+ || (TYPE_DATA_LOCATION (type)
|
||||
@ -412,93 +368,39 @@ diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
|
||||
+ /* This case exist when we ptype a typename which has the
|
||||
+ dynamic properties but cannot be resolved as there is
|
||||
+ no object. */
|
||||
+ print_rank_only = 1;
|
||||
+
|
||||
+ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
|
||||
+ f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
|
||||
+ 0, 0, arrayprint_recurse_level,
|
||||
+ print_rank_only);
|
||||
+
|
||||
+ if (print_rank_only == 1)
|
||||
+ fprintf_filtered (stream, ":");
|
||||
else
|
||||
- {
|
||||
- if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
|
||||
- f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
|
||||
- 0, 0, arrayprint_recurse_level);
|
||||
+ {
|
||||
+ LONGEST lower_bound = f77_get_lowerbound (type);
|
||||
+ print_rank_only = true;
|
||||
|
||||
- LONGEST lower_bound = f77_get_lowerbound (type);
|
||||
+ if (lower_bound != 1) /* Not the default. */
|
||||
if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
|
||||
f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
|
||||
@@ -206,8 +205,9 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
else
|
||||
{
|
||||
LONGEST lower_bound = f77_get_lowerbound (type);
|
||||
+
|
||||
if (lower_bound != 1) /* Not the default. */
|
||||
- fprintf_filtered (stream, "%s:", plongest (lower_bound));
|
||||
+ fprintf_filtered (stream, "%s:", plongest (lower_bound));
|
||||
|
||||
- if (lower_bound != 1) /* Not the default. */
|
||||
- fprintf_filtered (stream, "%s:", plongest (lower_bound));
|
||||
+ /* Make sure that, if we have an assumed size array, we
|
||||
+ print out a warning and print the upperbound as '*'. */
|
||||
|
||||
- /* Make sure that, if we have an assumed size array, we
|
||||
- print out a warning and print the upperbound as '*'. */
|
||||
+ if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
|
||||
+ fprintf_filtered (stream, "*");
|
||||
+ else
|
||||
+ {
|
||||
+ LONGEST upper_bound = f77_get_upperbound (type);
|
||||
|
||||
- if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
|
||||
- fprintf_filtered (stream, "*");
|
||||
- else
|
||||
- {
|
||||
- LONGEST upper_bound = f77_get_upperbound (type);
|
||||
+ fprintf_filtered (stream, "%s", plongest (upper_bound));
|
||||
+ }
|
||||
+ }
|
||||
/* Make sure that, if we have an assumed size array, we
|
||||
print out a warning and print the upperbound as '*'. */
|
||||
@@ -218,7 +218,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
{
|
||||
LONGEST upper_bound = f77_get_upperbound (type);
|
||||
|
||||
- fputs_filtered (plongest (upper_bound), stream);
|
||||
- }
|
||||
+ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY)
|
||||
+ f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
|
||||
+ 0, 0, arrayprint_recurse_level,
|
||||
+ print_rank_only);
|
||||
+ fprintf_filtered (stream, "%s", plongest (upper_bound));
|
||||
}
|
||||
}
|
||||
|
||||
- if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY)
|
||||
- f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
|
||||
- 0, 0, arrayprint_recurse_level);
|
||||
- }
|
||||
if (arrayprint_recurse_level == 1)
|
||||
fprintf_filtered (stream, ")");
|
||||
else
|
||||
@@ -228,8 +232,8 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
case TYPE_CODE_PTR:
|
||||
@@ -238,7 +238,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
case TYPE_CODE_REF:
|
||||
f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0,
|
||||
- arrayprint_recurse_level);
|
||||
arrayprint_recurse_level, false);
|
||||
- fprintf_filtered (stream, " )");
|
||||
+ arrayprint_recurse_level, 0);
|
||||
+ fprintf_filtered (stream, ")");
|
||||
break;
|
||||
|
||||
case TYPE_CODE_FUNC:
|
||||
@@ -237,7 +241,8 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
|
||||
int i, nfields = TYPE_NFIELDS (type);
|
||||
|
||||
f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
|
||||
- passed_a_ptr, 0, arrayprint_recurse_level);
|
||||
+ passed_a_ptr, 0, arrayprint_recurse_level,
|
||||
+ 0);
|
||||
if (passed_a_ptr)
|
||||
fprintf_filtered (stream, ") ");
|
||||
fprintf_filtered (stream, "(");
|
||||
@@ -416,7 +421,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
|
||||
fputs_filtered (" :: ", stream);
|
||||
fputs_filtered (TYPE_FIELD_NAME (type, index), stream);
|
||||
f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index),
|
||||
- stream, show - 1, 0, 0, 0);
|
||||
+ stream, show - 1, 0, 0, 0, 0);
|
||||
fputs_filtered ("\n", stream);
|
||||
}
|
||||
fprintfi_filtered (level, stream, "End Type ");
|
||||
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
||||
--- a/gdb/gdbtypes.c
|
||||
+++ b/gdb/gdbtypes.c
|
||||
@ -792,32 +694,12 @@ new file mode 100644
|
||||
+gdb_test "print *((integer*) &intvla + 3)" "= 4" "print temporary pointer, allocated vla"
|
||||
+gdb_test "print \$pc" "= \\(PTR TO -> \\( void \\(\\) \\(\\)\\)\\) $hex <pointers\\+\\d+>" "Print program counter"
|
||||
diff --git a/gdb/testsuite/gdb.fortran/pointers.f90 b/gdb/testsuite/gdb.fortran/pointers.f90
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
--- a/gdb/testsuite/gdb.fortran/pointers.f90
|
||||
+++ b/gdb/testsuite/gdb.fortran/pointers.f90
|
||||
@@ -0,0 +1,109 @@
|
||||
+! Copyright 2016 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/>.
|
||||
+
|
||||
+program pointers
|
||||
+
|
||||
+ type :: two
|
||||
+ integer, allocatable :: ivla1 (:)
|
||||
+ integer, allocatable :: ivla2 (:, :)
|
||||
+ end type two
|
||||
+
|
||||
@@ -20,21 +20,34 @@ program pointers
|
||||
integer, allocatable :: ivla2 (:, :)
|
||||
end type two
|
||||
|
||||
+ type :: typeWithPointer
|
||||
+ integer i
|
||||
+ type(typeWithPointer), pointer:: p
|
||||
@ -827,229 +709,129 @@ new file mode 100644
|
||||
+ type (two), pointer :: p
|
||||
+ end type twoPtr
|
||||
+
|
||||
+ logical, target :: logv
|
||||
+ complex, target :: comv
|
||||
+ character, target :: charv
|
||||
+ character (len=3), target :: chara
|
||||
+ integer, target :: intv
|
||||
+ integer, target, dimension (10,2) :: inta
|
||||
logical, target :: logv
|
||||
complex, target :: comv
|
||||
character, target :: charv
|
||||
character (len=3), target :: chara
|
||||
integer, target :: intv
|
||||
integer, target, dimension (10,2) :: inta
|
||||
- real, target :: realv
|
||||
- type(two), target :: twov
|
||||
+ integer, target, allocatable, dimension (:) :: intvla
|
||||
+ real, target :: realv
|
||||
+ type(two), target :: twov
|
||||
+ type(twoPtr) :: arrayOfPtr (3)
|
||||
+ type(typeWithPointer), target:: cyclicp1,cyclicp2
|
||||
+
|
||||
+ logical, pointer :: logp
|
||||
+ complex, pointer :: comp
|
||||
|
||||
logical, pointer :: logp
|
||||
complex, pointer :: comp
|
||||
- character, pointer :: charp
|
||||
- character (len=3), pointer :: charap
|
||||
+ character, pointer:: charp
|
||||
+ character (len=3), pointer:: charap
|
||||
+ integer, pointer :: intp
|
||||
+ integer, pointer, dimension (:,:) :: intap
|
||||
integer, pointer :: intp
|
||||
integer, pointer, dimension (:,:) :: intap
|
||||
+ integer, pointer, dimension (:) :: intvlap
|
||||
+ real, pointer :: realp
|
||||
+ type(two), pointer :: twop
|
||||
+
|
||||
+ nullify (logp)
|
||||
+ nullify (comp)
|
||||
+ nullify (charp)
|
||||
+ nullify (charap)
|
||||
+ nullify (intp)
|
||||
+ nullify (intap)
|
||||
real, pointer :: realp
|
||||
type(two), pointer :: twop
|
||||
|
||||
@@ -44,8 +57,14 @@ program pointers
|
||||
nullify (charap)
|
||||
nullify (intp)
|
||||
nullify (intap)
|
||||
+ nullify (intvlap)
|
||||
+ nullify (realp)
|
||||
+ nullify (twop)
|
||||
nullify (realp)
|
||||
nullify (twop)
|
||||
+ nullify (arrayOfPtr(1)%p)
|
||||
+ nullify (arrayOfPtr(2)%p)
|
||||
+ nullify (arrayOfPtr(3)%p)
|
||||
+ nullify (cyclicp1%p)
|
||||
+ nullify (cyclicp2%p)
|
||||
+
|
||||
+ logp => logv ! Before pointer assignment
|
||||
+ comp => comv
|
||||
+ charp => charv
|
||||
+ charap => chara
|
||||
+ intp => intv
|
||||
+ intap => inta
|
||||
|
||||
logp => logv ! Before pointer assignment
|
||||
comp => comv
|
||||
@@ -53,8 +72,14 @@ program pointers
|
||||
charap => chara
|
||||
intp => intv
|
||||
intap => inta
|
||||
+ intvlap => intvla
|
||||
+ realp => realv
|
||||
+ twop => twov
|
||||
realp => realv
|
||||
twop => twov
|
||||
+ arrayOfPtr(2)%p => twov
|
||||
+ cyclicp1%i = 1
|
||||
+ cyclicp1%p => cyclicp2
|
||||
+ cyclicp2%i = 2
|
||||
+ cyclicp2%p => cyclicp1
|
||||
+
|
||||
+ logv = associated(logp) ! Before value assignment
|
||||
+ comv = cmplx(1,2)
|
||||
+ charv = "a"
|
||||
+ chara = "abc"
|
||||
+ intv = 10
|
||||
+ inta(:,:) = 1
|
||||
+ inta(3,1) = 3
|
||||
|
||||
logv = associated(logp) ! Before value assignment
|
||||
comv = cmplx(1,2)
|
||||
@@ -63,6 +88,10 @@ program pointers
|
||||
intv = 10
|
||||
inta(:,:) = 1
|
||||
inta(3,1) = 3
|
||||
+ allocate (intvla(10))
|
||||
+ intvla(:) = 2
|
||||
+ intvla(4) = 4
|
||||
+ intvlap => intvla
|
||||
+ realv = 3.14
|
||||
+
|
||||
+ allocate (twov%ivla1(3))
|
||||
+ allocate (twov%ivla2(2,2))
|
||||
+ twov%ivla1(1) = 11
|
||||
+ twov%ivla1(2) = 12
|
||||
+ twov%ivla1(3) = 13
|
||||
+ twov%ivla2(1,1) = 211
|
||||
+ twov%ivla2(2,1) = 221
|
||||
+ twov%ivla2(1,2) = 212
|
||||
+ twov%ivla2(2,2) = 222
|
||||
+
|
||||
+ intv = intv + 1 ! After value assignment
|
||||
+
|
||||
+end program pointers
|
||||
realv = 3.14
|
||||
|
||||
allocate (twov%ivla1(3))
|
||||
diff --git a/gdb/testsuite/gdb.fortran/print_type.exp b/gdb/testsuite/gdb.fortran/print_type.exp
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
--- a/gdb/testsuite/gdb.fortran/print_type.exp
|
||||
+++ b/gdb/testsuite/gdb.fortran/print_type.exp
|
||||
@@ -0,0 +1,100 @@
|
||||
+# Copyright 2016 Free Software Foundation, Inc.
|
||||
@@ -1,5 +1,6 @@
|
||||
# Copyright 2019 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/>.
|
||||
+
|
||||
+standard_testfile "pointers.f90"
|
||||
+load_lib fortran.exp
|
||||
+
|
||||
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
|
||||
+ {debug f90 quiet}] } {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+
|
||||
+if ![runto_main] {
|
||||
+ untested "could not run to main"
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+# Depending on the compiler being used, the type names can be printed differently.
|
||||
+set logical [fortran_logical4]
|
||||
+set real [fortran_real4]
|
||||
+set int [fortran_int4]
|
||||
+set complex [fortran_complex4]
|
||||
+
|
||||
+gdb_breakpoint [gdb_get_line_number "Before pointer assignment"]
|
||||
+gdb_continue_to_breakpoint "Before pointer assignment"
|
||||
+gdb_test "ptype logp" "type = PTR TO -> \\( $logical\\)" "ptype logp, not associated"
|
||||
+gdb_test "ptype comp" "type = PTR TO -> \\( $complex\\)" "ptype comp, not associated"
|
||||
+gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1\\)" "ptype charp, not associated"
|
||||
+gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3\\)" "ptype charap, not associated"
|
||||
+gdb_test "ptype intp" "type = PTR TO -> \\( $int\\)" "ptype intp, not associated"
|
||||
+set test "ptype intap, not associated"
|
||||
+gdb_test_multiple "ptype intap" $test {
|
||||
+ -re "type = PTR TO -> \\( $int \\(:,:\\)\\)\r\n$gdb_prompt $" {
|
||||
+ pass $test
|
||||
+ }
|
||||
+ -re "type = $int \\(:,:\\)\r\n$gdb_prompt $" {
|
||||
+ pass $test
|
||||
+ }
|
||||
+}
|
||||
+gdb_test "ptype realp" "type = PTR TO -> \\( $real\\)" "ptype realp, not associated"
|
||||
+gdb_test "ptype twop" \
|
||||
+ [multi_line "type = PTR TO -> \\( Type two" \
|
||||
+ " $int, allocatable :: ivla1\\(:\\)" \
|
||||
+ " $int, allocatable :: ivla2\\(:,:\\)" \
|
||||
+ "End Type two\\)"] \
|
||||
+ "ptype twop, not associated"
|
||||
+gdb_test "ptype two" \
|
||||
+ [multi_line "type = Type two" \
|
||||
+ " $int, allocatable :: ivla1\\(:\\)" \
|
||||
+ " $int, allocatable :: ivla2\\(:,:\\)" \
|
||||
+ "End Type two"]
|
||||
+
|
||||
+
|
||||
+gdb_breakpoint [gdb_get_line_number "Before value assignment"]
|
||||
+gdb_continue_to_breakpoint "Before value assignment"
|
||||
+gdb_test "ptype twop" \
|
||||
+ [multi_line "type = PTR TO -> \\( Type two" \
|
||||
+ " $int, allocatable :: ivla1\\(:\\)" \
|
||||
+ " $int, allocatable :: ivla2\\(:,:\\)" \
|
||||
# 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
|
||||
@@ -40,7 +41,7 @@ set complex [fortran_complex4]
|
||||
# matches the string TYPE.
|
||||
proc check_pointer_type { var_name type } {
|
||||
gdb_test "ptype ${var_name}" \
|
||||
- "type = PTR TO -> \\( ${type} \\)"
|
||||
+ "type = PTR TO -> \\( ${type}\\)"
|
||||
}
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "Before pointer assignment"]
|
||||
@@ -85,7 +86,8 @@ gdb_test "ptype twop" \
|
||||
[multi_line "type = PTR TO -> \\( Type two" \
|
||||
" $int, allocatable :: ivla1\\(:\\)" \
|
||||
" $int, allocatable :: ivla2\\(:,:\\)" \
|
||||
- "End Type two \\)"]
|
||||
+ "End Type two\\)"]
|
||||
+
|
||||
+
|
||||
+gdb_breakpoint [gdb_get_line_number "After value assignment"]
|
||||
+gdb_continue_to_breakpoint "After value assignment"
|
||||
+gdb_test "ptype logv" "type = $logical"
|
||||
+gdb_test "ptype comv" "type = $complex"
|
||||
+gdb_test "ptype charv" "type = character\\*1"
|
||||
+gdb_test "ptype chara" "type = character\\*3"
|
||||
+gdb_test "ptype intv" "type = $int"
|
||||
+gdb_test "ptype inta" "type = $int \\(10,2\\)"
|
||||
+gdb_test "ptype realv" "type = $real"
|
||||
+
|
||||
+
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "After value assignment"]
|
||||
gdb_continue_to_breakpoint "After value assignment"
|
||||
@@ -97,11 +99,11 @@ gdb_test "ptype intv" "type = $int"
|
||||
gdb_test "ptype inta" "type = $int \\(10,2\\)"
|
||||
gdb_test "ptype realv" "type = $real"
|
||||
|
||||
-gdb_test "ptype logp" "type = PTR TO -> \\( $logical \\)"
|
||||
-gdb_test "ptype comp" "type = PTR TO -> \\( $complex \\)"
|
||||
-gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1 \\)"
|
||||
-gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3 \\)"
|
||||
-gdb_test "ptype intp" "type = PTR TO -> \\( $int \\)"
|
||||
+gdb_test "ptype logp" "type = PTR TO -> \\( $logical\\)"
|
||||
+gdb_test "ptype comp" "type = PTR TO -> \\( $complex\\)"
|
||||
+gdb_test "ptype charp" "type = PTR TO -> \\( character\\*1\\)"
|
||||
+gdb_test "ptype charap" "type = PTR TO -> \\( character\\*3\\)"
|
||||
+gdb_test "ptype intp" "type = PTR TO -> \\( $int\\)"
|
||||
+set test "ptype intap"
|
||||
+gdb_test_multiple $test $test {
|
||||
+ -re "type = $int \\(10,2\\)\r\n$gdb_prompt $" {
|
||||
+ pass $test
|
||||
+ }
|
||||
+ -re "type = PTR TO -> \\( $int \\(10,2\\)\\)\r\n$gdb_prompt $" {
|
||||
+ pass $test
|
||||
+ }
|
||||
+}
|
||||
set test "ptype intap"
|
||||
gdb_test_multiple $test $test {
|
||||
-re "type = $int \\(10,2\\)\r\n$gdb_prompt $" {
|
||||
@@ -111,4 +113,4 @@ gdb_test_multiple $test $test {
|
||||
pass $test
|
||||
}
|
||||
}
|
||||
-gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)"
|
||||
+gdb_test "ptype realp" "type = PTR TO -> \\( $real\\)"
|
||||
diff --git a/gdb/testsuite/gdb.fortran/vla-ptype.exp b/gdb/testsuite/gdb.fortran/vla-ptype.exp
|
||||
--- a/gdb/testsuite/gdb.fortran/vla-ptype.exp
|
||||
+++ b/gdb/testsuite/gdb.fortran/vla-ptype.exp
|
||||
@@ -32,9 +32,9 @@ set real [fortran_real4]
|
||||
# Check the ptype of various VLA states and pointer to VLA's.
|
||||
gdb_breakpoint [gdb_get_line_number "vla1-init"]
|
||||
gdb_continue_to_breakpoint "vla1-init"
|
||||
-gdb_test "ptype vla1" "type = <not allocated>" "ptype vla1 not initialized"
|
||||
-gdb_test "ptype vla2" "type = <not allocated>" "ptype vla2 not initialized"
|
||||
-gdb_test "ptype pvla" "type = <not associated>" "ptype pvla not initialized"
|
||||
+gdb_test "ptype vla1" "type = $real, allocatable \\(:,:,:\\)" "ptype vla1 not initialized"
|
||||
+gdb_test "ptype vla2" "type = $real, allocatable \\(:,:,:\\)" "ptype vla2 not initialized"
|
||||
+gdb_test "ptype pvla" "type = $real \\(:,:,:\\)" "ptype pvla not initialized"
|
||||
gdb_test "ptype vla1(3, 6, 9)" "no such vector element \\\(vector not allocated\\\)" \
|
||||
"ptype vla1(3, 6, 9) not initialized"
|
||||
gdb_test "ptype vla2(5, 45, 20)" \
|
||||
@@ -81,24 +81,24 @@ gdb_test "ptype vla2(5, 45, 20)" "type = $real" \
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "pvla-deassociated"]
|
||||
gdb_continue_to_breakpoint "pvla-deassociated"
|
||||
-gdb_test "ptype pvla" "type = <not associated>" "ptype pvla deassociated"
|
||||
+gdb_test "ptype pvla" "type = $real \\(:,:,:\\)" "ptype pvla deassociated"
|
||||
gdb_test "ptype pvla(5, 45, 20)" \
|
||||
"no such vector element \\\(vector not associated\\\)" \
|
||||
"ptype pvla(5, 45, 20) not associated"
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "vla1-deallocated"]
|
||||
gdb_continue_to_breakpoint "vla1-deallocated"
|
||||
-gdb_test "ptype vla1" "type = <not allocated>" "ptype vla1 not allocated"
|
||||
+gdb_test "ptype vla1" "type = $real, allocatable \\(:,:,:\\)" "ptype vla1 not allocated"
|
||||
gdb_test "ptype vla1(3, 6, 9)" "no such vector element \\\(vector not allocated\\\)" \
|
||||
"ptype vla1(3, 6, 9) not allocated"
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "vla2-deallocated"]
|
||||
gdb_continue_to_breakpoint "vla2-deallocated"
|
||||
-gdb_test "ptype vla2" "type = <not allocated>" "ptype vla2 not allocated"
|
||||
+gdb_test "ptype vla2" "type = $real, allocatable \\(:,:,:\\)" "ptype vla2 not allocated"
|
||||
gdb_test "ptype vla2(5, 45, 20)" \
|
||||
"no such vector element \\\(vector not allocated\\\)" \
|
||||
"ptype vla2(5, 45, 20) not allocated"
|
||||
@@ -101,4 +101,4 @@ gdb_test "ptype vla2(5, 45, 20)" \
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "vla1-neg-bounds"]
|
||||
gdb_continue_to_breakpoint "vla1-neg-bounds"
|
||||
@ -1207,30 +989,6 @@ new file mode 100644
|
||||
+ var_char_p => null()
|
||||
+ l = associated(var_char_p) ! var_char_p-not-associated
|
||||
+end program vla_strings
|
||||
diff --git a/gdb/testsuite/gdb.fortran/vla-type.exp b/gdb/testsuite/gdb.fortran/vla-type.exp
|
||||
--- a/gdb/testsuite/gdb.fortran/vla-type.exp
|
||||
+++ b/gdb/testsuite/gdb.fortran/vla-type.exp
|
||||
@@ -132,7 +132,10 @@ gdb_test "ptype fivearr(2)%tone" \
|
||||
"End Type one" ]
|
||||
|
||||
# Check allocation status of dynamic array and it's dynamic members
|
||||
-gdb_test "ptype fivedynarr" "type = <not allocated>"
|
||||
+gdb_test "ptype fivedynarr" \
|
||||
+ [multi_line "type = Type five" \
|
||||
+ " Type one :: tone" \
|
||||
+ "End Type five, allocatable \\(:\\)" ]
|
||||
gdb_test "next" ""
|
||||
gdb_test "ptype fivedynarr(2)" \
|
||||
[multi_line "type = Type five" \
|
||||
@@ -141,7 +144,7 @@ gdb_test "ptype fivedynarr(2)" \
|
||||
"ptype fivedynarr(2), tone is not allocated"
|
||||
gdb_test "ptype fivedynarr(2)%tone" \
|
||||
[multi_line "type = Type one" \
|
||||
- " $int, allocatable :: ivla\\(<not allocated>\\)" \
|
||||
+ " $int, allocatable :: ivla\\(:,:,:\\)" \
|
||||
"End Type one" ] \
|
||||
"ptype fivedynarr(2)%tone, not allocated"
|
||||
|
||||
diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran/vla-value.exp
|
||||
--- a/gdb/testsuite/gdb.fortran/vla-value.exp
|
||||
+++ b/gdb/testsuite/gdb.fortran/vla-value.exp
|
||||
@ -1238,7 +996,7 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran
|
||||
gdb_continue_to_breakpoint "vla1-init"
|
||||
gdb_test "print vla1" " = <not allocated>" "print non-allocated vla1"
|
||||
gdb_test "print &vla1" \
|
||||
- " = \\\(PTR TO -> \\\( $real, allocatable \\\(<not allocated>\\\) \\\)\\\) $hex" \
|
||||
- " = \\\(PTR TO -> \\\( $real, allocatable \\\(:,:,:\\\) \\\)\\\) $hex" \
|
||||
+ " = \\\(PTR TO -> \\\( $real, allocatable \\\(:,:,:\\\)\\\)\\\) $hex" \
|
||||
"print non-allocated &vla1"
|
||||
gdb_test "print vla1(1,1,1)" "no such vector element \\\(vector not allocated\\\)" \
|
||||
@ -1256,7 +1014,7 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran
|
||||
# Try to access values in undefined pointer to VLA (dangling)
|
||||
gdb_test "print pvla" " = <not associated>" "print undefined pvla"
|
||||
gdb_test "print &pvla" \
|
||||
- " = \\\(PTR TO -> \\\( $real \\\(<not associated>\\\) \\\)\\\) $hex" \
|
||||
- " = \\\(PTR TO -> \\\( $real \\\(:,:,:\\\) \\\)\\\) $hex" \
|
||||
+ " = \\\(PTR TO -> \\\( $real \\\(:,:,:\\\)\\\)\\\) $hex" \
|
||||
"print non-associated &pvla"
|
||||
gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated\\\)" \
|
||||
@ -1270,35 +1028,6 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran
|
||||
"print associated &pvla"
|
||||
gdb_test "print pvla(3, 6, 9)" " = 42" "print associated pvla(3,6,9)"
|
||||
gdb_test "print pvla(1, 3, 8)" " = 1001" "print associated pvla(1,3,8)"
|
||||
diff --git a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
|
||||
--- a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
|
||||
+++ b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
|
||||
@@ -51,10 +51,10 @@ mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
||||
mi_gdb_test "500-data-evaluate-expression vla1" \
|
||||
"500\\^done,value=\"<not allocated>\"" "evaluate not allocated vla, before allocation"
|
||||
|
||||
-mi_create_varobj_checked vla1_not_allocated vla1 "<not allocated>" \
|
||||
+mi_create_varobj_checked vla1_not_allocated vla1 "$real, allocatable \\(:\\)" \
|
||||
"create local variable vla1_not_allocated"
|
||||
mi_gdb_test "501-var-info-type vla1_not_allocated" \
|
||||
- "501\\^done,type=\"<not allocated>\"" \
|
||||
+ "501\\^done,type=\"$real, allocatable \\(:\\)\"" \
|
||||
"info type variable vla1_not_allocated"
|
||||
mi_gdb_test "502-var-show-format vla1_not_allocated" \
|
||||
"502\\^done,format=\"natural\"" \
|
||||
@@ -146,10 +146,10 @@ gdb_expect {
|
||||
-re "580\\^done,value=\"<not associated>\".*${mi_gdb_prompt}$" {
|
||||
pass $test
|
||||
|
||||
- mi_create_varobj_checked pvla2_not_associated pvla2 "<not associated>" \
|
||||
+ mi_create_varobj_checked pvla2_not_associated pvla2 "$real \\(:,:\\)" \
|
||||
"create local variable pvla2_not_associated"
|
||||
mi_gdb_test "581-var-info-type pvla2_not_associated" \
|
||||
- "581\\^done,type=\"<not associated>\"" \
|
||||
+ "581\\^done,type=\"$real \\(:,:\\)\"" \
|
||||
"info type variable pvla2_not_associated"
|
||||
mi_gdb_test "582-var-show-format pvla2_not_associated" \
|
||||
"582\\^done,format=\"natural\"" \
|
||||
diff --git a/gdb/typeprint.c b/gdb/typeprint.c
|
||||
--- a/gdb/typeprint.c
|
||||
+++ b/gdb/typeprint.c
|
||||
@ -1364,7 +1093,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
||||
diff --git a/gdb/valprint.c b/gdb/valprint.c
|
||||
--- a/gdb/valprint.c
|
||||
+++ b/gdb/valprint.c
|
||||
@@ -1142,12 +1142,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
|
||||
@@ -1143,12 +1143,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
7
gdb.spec
7
gdb.spec
@ -27,7 +27,7 @@
|
||||
Name: %{?scl_prefix}gdb
|
||||
|
||||
# Freeze it when GDB gets branched
|
||||
%global snapsrc 20190610
|
||||
%global snapsrc 20190625
|
||||
# See timestamp of source gnulib installed into gdb/gnulib/ .
|
||||
%global snapgnulib 20161115
|
||||
%global tarname gdb-%{version}
|
||||
@ -35,7 +35,7 @@ Version: 8.3.50.%{snapsrc}
|
||||
|
||||
# The release always contains a leading reserved number, start it at 1.
|
||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||
Release: 17%{?dist}
|
||||
Release: 18%{?dist}
|
||||
|
||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
|
||||
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
||||
@ -1141,6 +1141,9 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Jun 25 2019 Sergio Durigan Junior <sergiodj@redhat.com> - 8.3.50.20190625-18
|
||||
- Rebase to FSF GDB 8.3.50.20190625 (8.4pre).
|
||||
|
||||
* Fri Jun 21 2019 Sergio Durigan Junior <sergiodj@redhat.com> - 8.3.50.20190610-17
|
||||
- Rebuild for librpm9 (RH BZ 1720305).
|
||||
|
||||
|
2
sources
2
sources
@ -1,3 +1,3 @@
|
||||
SHA512 (gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz) = a8b1c54dd348cfeb37da73f968742896be3dd13a4215f8d8519870c2abea915f5176c3fa6989ddd10f20020a16f0fab20cbae68ee8d58a82234d8778023520f8
|
||||
SHA512 (v2.0.tar.gz) = ec63151e842c81cc73ea11ba560b63e005cefbe19d98de24ae5c8caa4de7c9c1d71d1ec5b6214a347592eac675b75a3d2b26d4691ca86f91020ebfea8e912939
|
||||
SHA512 (gdb-8.3.50.20190610.tar.xz) = f9abdd8d6af6cc2d3aebf882f12b9e65cea5dfa772d0b98b55c1b7d6cb9510a347b5ef80cdd743764393f9475333e56c3839b8254205d4cff770664f81eda6ab
|
||||
SHA512 (gdb-8.3.50.20190625.tar.xz) = e374fc5ec3c27d40802c7f915bca2a5d98804a45d47e41723805f53610307a10926f1074cda8daaefd9eea1910a523b431b380cbd173e8174d331f1dbd726031
|
||||
|
Loading…
Reference in New Issue
Block a user