Rebase to FSF GDB 8.3.50.20190802 (8.4pre).
This commit is contained in:
parent
f3efb4b040
commit
f7760f831c
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,3 @@
|
|||||||
/gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz
|
/gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz
|
||||||
/v2.0.tar.gz
|
/v2.0.tar.gz
|
||||||
/gdb-8.3.50.20190702.tar.xz
|
/gdb-8.3.50.20190802.tar.xz
|
||||||
|
@ -1 +1 @@
|
|||||||
390b205f456be85e309570f1b6e9b75f27194de7
|
371367a95037cac795af5cdc589a2aa0c7a4dcd3
|
||||||
|
@ -16,7 +16,7 @@ Subject: gdb-6.3-gstack-20050411.patch
|
|||||||
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
||||||
--- a/gdb/Makefile.in
|
--- a/gdb/Makefile.in
|
||||||
+++ b/gdb/Makefile.in
|
+++ b/gdb/Makefile.in
|
||||||
@@ -1742,7 +1742,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
|
@@ -1745,7 +1745,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
|
||||||
install: all
|
install: all
|
||||||
@$(MAKE) $(FLAGS_TO_PASS) install-only
|
@$(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)'; \
|
transformed_name=`t='$(program_transform_name)'; \
|
||||||
echo gdb | sed -e "$$t"` ; \
|
echo gdb | sed -e "$$t"` ; \
|
||||||
if test "x$$transformed_name" = x; then \
|
if test "x$$transformed_name" = x; then \
|
||||||
@@ -1791,7 +1791,25 @@ install-guile:
|
@@ -1794,7 +1794,25 @@ install-guile:
|
||||||
install-python:
|
install-python:
|
||||||
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
|
$(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)'; \
|
transformed_name=`t='$(program_transform_name)'; \
|
||||||
echo gdb | sed -e $$t` ; \
|
echo gdb | sed -e $$t` ; \
|
||||||
if test "x$$transformed_name" = x; then \
|
if test "x$$transformed_name" = x; then \
|
||||||
@@ -1814,6 +1832,18 @@ uninstall: force $(CONFIG_UNINSTALL)
|
@@ -1817,6 +1835,18 @@ uninstall: force $(CONFIG_UNINSTALL)
|
||||||
fi
|
fi
|
||||||
@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
|
@$(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
|
diff --git a/gdb/top.c b/gdb/top.c
|
||||||
--- a/gdb/top.c
|
--- a/gdb/top.c
|
||||||
+++ b/gdb/top.c
|
+++ b/gdb/top.c
|
||||||
@@ -2070,7 +2070,7 @@ init_gdb_version_vars (void)
|
@@ -2068,7 +2068,7 @@ init_gdb_version_vars (void)
|
||||||
struct internalvar *major_version_var = create_internalvar ("_gdb_major");
|
struct internalvar *major_version_var = create_internalvar ("_gdb_major");
|
||||||
struct internalvar *minor_version_var = create_internalvar ("_gdb_minor");
|
struct internalvar *minor_version_var = create_internalvar ("_gdb_minor");
|
||||||
int vmajor = 0, vminor = 0, vrevision = 0;
|
int vmajor = 0, vminor = 0, vrevision = 0;
|
||||||
|
@ -44,7 +44,7 @@ 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
|
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
|
||||||
--- a/gdb/printcmd.c
|
--- a/gdb/printcmd.c
|
||||||
+++ b/gdb/printcmd.c
|
+++ b/gdb/printcmd.c
|
||||||
@@ -1188,6 +1188,10 @@ print_command_1 (const char *args, int voidprint)
|
@@ -1202,6 +1202,10 @@ print_command_1 (const char *args, int voidprint)
|
||||||
|
|
||||||
if (exp != nullptr && *exp)
|
if (exp != nullptr && *exp)
|
||||||
{
|
{
|
||||||
|
@ -169,7 +169,7 @@ diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
|
|||||||
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
|
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
|
||||||
--- a/gdb/i386-tdep.c
|
--- a/gdb/i386-tdep.c
|
||||||
+++ b/gdb/i386-tdep.c
|
+++ b/gdb/i386-tdep.c
|
||||||
@@ -8448,6 +8448,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
@@ -8445,6 +8445,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||||
|
|
||||||
tdep->xsave_xcr0_offset = -1;
|
tdep->xsave_xcr0_offset = -1;
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
|
|||||||
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
|
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
|
||||||
--- a/gdb/i386-tdep.h
|
--- a/gdb/i386-tdep.h
|
||||||
+++ b/gdb/i386-tdep.h
|
+++ b/gdb/i386-tdep.h
|
||||||
@@ -255,6 +255,9 @@ struct gdbarch_tdep
|
@@ -256,6 +256,9 @@ struct gdbarch_tdep
|
||||||
|
|
||||||
/* Regsets. */
|
/* Regsets. */
|
||||||
const struct regset *fpregset;
|
const struct regset *fpregset;
|
||||||
|
@ -11,7 +11,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379
|
|||||||
diff --git a/gdb/symtab.c b/gdb/symtab.c
|
diff --git a/gdb/symtab.c b/gdb/symtab.c
|
||||||
--- a/gdb/symtab.c
|
--- a/gdb/symtab.c
|
||||||
+++ b/gdb/symtab.c
|
+++ b/gdb/symtab.c
|
||||||
@@ -3148,6 +3148,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
|
@@ -3155,6 +3155,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
|
||||||
SYMBOL_LINKAGE_NAME (msymbol)); */
|
SYMBOL_LINKAGE_NAME (msymbol)); */
|
||||||
;
|
;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
@ -61,19 +61,6 @@ Http://sourceware.org/ml/gdb-patches/2010-01/msg00517.html
|
|||||||
* exec.c (exec_file_attach): Print a more useful error message if the
|
* exec.c (exec_file_attach): Print a more useful error message if the
|
||||||
user did "gdb core".
|
user did "gdb core".
|
||||||
|
|
||||||
diff --git a/gdb/common/common-exceptions.h b/gdb/common/common-exceptions.h
|
|
||||||
--- a/gdb/common/common-exceptions.h
|
|
||||||
+++ b/gdb/common/common-exceptions.h
|
|
||||||
@@ -106,6 +106,9 @@ enum errors {
|
|
||||||
"_ERROR" is appended to the name. */
|
|
||||||
MAX_COMPLETIONS_REACHED_ERROR,
|
|
||||||
|
|
||||||
+ /* Attempt to load a core file as executable. */
|
|
||||||
+ IS_CORE_ERROR,
|
|
||||||
+
|
|
||||||
/* Add more errors here. */
|
|
||||||
NR_ERRORS
|
|
||||||
};
|
|
||||||
diff --git a/gdb/exec.c b/gdb/exec.c
|
diff --git a/gdb/exec.c b/gdb/exec.c
|
||||||
--- a/gdb/exec.c
|
--- a/gdb/exec.c
|
||||||
+++ b/gdb/exec.c
|
+++ b/gdb/exec.c
|
||||||
@ -117,6 +104,19 @@ diff --git a/gdb/exec.c b/gdb/exec.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (build_section_table (exec_bfd, §ions, §ions_end))
|
if (build_section_table (exec_bfd, §ions, §ions_end))
|
||||||
|
diff --git a/gdb/gdbsupport/common-exceptions.h b/gdb/gdbsupport/common-exceptions.h
|
||||||
|
--- a/gdb/gdbsupport/common-exceptions.h
|
||||||
|
+++ b/gdb/gdbsupport/common-exceptions.h
|
||||||
|
@@ -106,6 +106,9 @@ enum errors {
|
||||||
|
"_ERROR" is appended to the name. */
|
||||||
|
MAX_COMPLETIONS_REACHED_ERROR,
|
||||||
|
|
||||||
|
+ /* Attempt to load a core file as executable. */
|
||||||
|
+ IS_CORE_ERROR,
|
||||||
|
+
|
||||||
|
/* Add more errors here. */
|
||||||
|
NR_ERRORS
|
||||||
|
};
|
||||||
diff --git a/gdb/main.c b/gdb/main.c
|
diff --git a/gdb/main.c b/gdb/main.c
|
||||||
--- a/gdb/main.c
|
--- a/gdb/main.c
|
||||||
+++ b/gdb/main.c
|
+++ b/gdb/main.c
|
||||||
|
@ -9,7 +9,7 @@ Subject: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
|
|||||||
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
||||||
--- a/gdb/build-id.c
|
--- a/gdb/build-id.c
|
||||||
+++ b/gdb/build-id.c
|
+++ b/gdb/build-id.c
|
||||||
@@ -710,6 +710,19 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
|
@@ -712,6 +712,19 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ https://bugzilla.redhat.com/show_bug.cgi?id=953585
|
|||||||
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
||||||
--- a/gdb/build-id.c
|
--- a/gdb/build-id.c
|
||||||
+++ b/gdb/build-id.c
|
+++ b/gdb/build-id.c
|
||||||
@@ -744,7 +744,11 @@ static int missing_rpm_list_entries;
|
@@ -746,7 +746,11 @@ static int missing_rpm_list_entries;
|
||||||
/* Returns the count of newly added rpms. */
|
/* Returns the count of newly added rpms. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -24,7 +24,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
{
|
{
|
||||||
static int rpm_init_done = 0;
|
static int rpm_init_done = 0;
|
||||||
rpmts ts;
|
rpmts ts;
|
||||||
@@ -851,7 +855,11 @@ missing_rpm_enlist (const char *filename)
|
@@ -853,7 +857,11 @@ missing_rpm_enlist (const char *filename)
|
||||||
mi = rpmtsInitIterator_p (ts, RPMTAG_BASENAMES, filename, 0);
|
mi = rpmtsInitIterator_p (ts, RPMTAG_BASENAMES, filename, 0);
|
||||||
if (mi != NULL)
|
if (mi != NULL)
|
||||||
{
|
{
|
||||||
@ -36,7 +36,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
{
|
{
|
||||||
Header h;
|
Header h;
|
||||||
char *debuginfo, **slot, *s, *s2;
|
char *debuginfo, **slot, *s, *s2;
|
||||||
@@ -969,6 +977,37 @@ missing_rpm_enlist (const char *filename)
|
@@ -971,6 +979,37 @@ missing_rpm_enlist (const char *filename)
|
||||||
xfree (debuginfo);
|
xfree (debuginfo);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
|
|
||||||
rpmdbFreeIterator_p (mi);
|
rpmdbFreeIterator_p (mi);
|
||||||
}
|
}
|
||||||
@@ -978,6 +1017,20 @@ missing_rpm_enlist (const char *filename)
|
@@ -980,6 +1019,20 @@ missing_rpm_enlist (const char *filename)
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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
|
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||||
--- a/gdb/dwarf2read.c
|
--- a/gdb/dwarf2read.c
|
||||||
+++ b/gdb/dwarf2read.c
|
+++ b/gdb/dwarf2read.c
|
||||||
@@ -3456,6 +3456,16 @@ read_gdb_index_from_buffer (struct objfile *objfile,
|
@@ -3462,6 +3462,16 @@ read_gdb_index_from_buffer (struct objfile *objfile,
|
||||||
"set use-deprecated-index-sections on". */
|
"set use-deprecated-index-sections on". */
|
||||||
if (version < 6 && !deprecated_ok)
|
if (version < 6 && !deprecated_ok)
|
||||||
{
|
{
|
||||||
@ -115,7 +115,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
static int warning_printed = 0;
|
static int warning_printed = 0;
|
||||||
if (!warning_printed)
|
if (!warning_printed)
|
||||||
{
|
{
|
||||||
@@ -3467,6 +3477,10 @@ to use the section anyway."),
|
@@ -3473,6 +3483,10 @@ to use the section anyway."),
|
||||||
warning_printed = 1;
|
warning_printed = 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -235,7 +235,7 @@ diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4
|
|||||||
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
||||||
--- a/gdb/build-id.c
|
--- a/gdb/build-id.c
|
||||||
+++ b/gdb/build-id.c
|
+++ b/gdb/build-id.c
|
||||||
@@ -31,6 +31,7 @@
|
@@ -33,6 +33,7 @@
|
||||||
#include "gdb_bfd.h"
|
#include "gdb_bfd.h"
|
||||||
#include "gdbcmd.h"
|
#include "gdbcmd.h"
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
@ -243,7 +243,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
#include "libbfd.h"
|
#include "libbfd.h"
|
||||||
#include "objfiles.h"
|
#include "objfiles.h"
|
||||||
#include "observable.h"
|
#include "observable.h"
|
||||||
@@ -699,8 +700,359 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
|
@@ -701,8 +702,359 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -604,7 +604,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
avoidance. */
|
avoidance. */
|
||||||
|
|
||||||
struct missing_filepair
|
struct missing_filepair
|
||||||
@@ -754,11 +1106,17 @@ missing_filepair_change (void)
|
@@ -756,11 +1108,17 @@ missing_filepair_change (void)
|
||||||
/* All their memory came just from missing_filepair_OBSTACK. */
|
/* All their memory came just from missing_filepair_OBSTACK. */
|
||||||
missing_filepair_hash = NULL;
|
missing_filepair_hash = NULL;
|
||||||
}
|
}
|
||||||
@ -622,7 +622,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
missing_filepair_change ();
|
missing_filepair_change ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -825,14 +1183,39 @@ debug_print_missing (const char *binary, const char *debug)
|
@@ -827,14 +1185,39 @@ debug_print_missing (const char *binary, const char *debug)
|
||||||
|
|
||||||
*slot = missing_filepair;
|
*slot = missing_filepair;
|
||||||
|
|
||||||
@ -1464,7 +1464,7 @@ diff --git a/gdb/event-top.c b/gdb/event-top.c
|
|||||||
--- a/gdb/event-top.c
|
--- a/gdb/event-top.c
|
||||||
+++ b/gdb/event-top.c
|
+++ b/gdb/event-top.c
|
||||||
@@ -40,6 +40,7 @@
|
@@ -40,6 +40,7 @@
|
||||||
#include "common/buffer.h"
|
#include "gdbsupport/buffer.h"
|
||||||
#include "ser-event.h"
|
#include "ser-event.h"
|
||||||
#include "gdb_select.h"
|
#include "gdb_select.h"
|
||||||
+#include "symfile.h"
|
+#include "symfile.h"
|
||||||
@ -1495,7 +1495,7 @@ diff --git a/gdb/event-top.c b/gdb/event-top.c
|
|||||||
diff --git a/gdb/symfile.h b/gdb/symfile.h
|
diff --git a/gdb/symfile.h b/gdb/symfile.h
|
||||||
--- a/gdb/symfile.h
|
--- a/gdb/symfile.h
|
||||||
+++ b/gdb/symfile.h
|
+++ b/gdb/symfile.h
|
||||||
@@ -535,6 +535,8 @@ void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
|
@@ -542,6 +542,8 @@ extern void generic_load (const char *args, int from_tty);
|
||||||
/* build-id support. */
|
/* build-id support. */
|
||||||
extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
|
extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
|
||||||
extern void debug_print_missing (const char *binary, const char *debug);
|
extern void debug_print_missing (const char *binary, const char *debug);
|
||||||
|
@ -9,12 +9,10 @@ Subject: gdb-6.6-buildid-locate.patch
|
|||||||
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
||||||
--- a/gdb/build-id.c
|
--- a/gdb/build-id.c
|
||||||
+++ b/gdb/build-id.c
|
+++ b/gdb/build-id.c
|
||||||
@@ -22,15 +22,71 @@
|
@@ -24,13 +24,71 @@
|
||||||
#include "gdb_bfd.h"
|
#include "gdbsupport/gdb_vecs.h"
|
||||||
#include "build-id.h"
|
#include "symfile.h"
|
||||||
#include "common/gdb_vecs.h"
|
#include "objfiles.h"
|
||||||
-#include "symfile.h"
|
|
||||||
-#include "objfiles.h"
|
|
||||||
+#include <sys/stat.h>
|
+#include <sys/stat.h>
|
||||||
+#include "elf-bfd.h"
|
+#include "elf-bfd.h"
|
||||||
+#include "elf/common.h"
|
+#include "elf/common.h"
|
||||||
@ -84,7 +82,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
{
|
{
|
||||||
if (!bfd_check_format (abfd, bfd_object))
|
if (!bfd_check_format (abfd, bfd_object))
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -42,6 +98,348 @@ build_id_bfd_get (bfd *abfd)
|
@@ -42,6 +100,348 @@ build_id_bfd_get (bfd *abfd)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -433,7 +431,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
/* See build-id.h. */
|
/* See build-id.h. */
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -50,7 +448,7 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
|
@@ -50,7 +450,7 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
|
||||||
const struct bfd_build_id *found;
|
const struct bfd_build_id *found;
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
|
||||||
@ -442,7 +440,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
|
|
||||||
if (found == NULL)
|
if (found == NULL)
|
||||||
warning (_("File \"%s\" has no build-id, file skipped"),
|
warning (_("File \"%s\" has no build-id, file skipped"),
|
||||||
@@ -65,62 +463,173 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
|
@@ -65,62 +465,173 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -532,7 +530,8 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
- printf_unfiltered (_(" no, unable to open.\n"));
|
- printf_unfiltered (_(" no, unable to open.\n"));
|
||||||
+ if (add_debug_suffix)
|
+ if (add_debug_suffix)
|
||||||
+ link += ".debug";
|
+ link += ".debug";
|
||||||
+
|
|
||||||
|
- return {};
|
||||||
+ ret_link = link;
|
+ ret_link = link;
|
||||||
+
|
+
|
||||||
+ struct stat statbuf_trash;
|
+ struct stat statbuf_trash;
|
||||||
@ -560,8 +559,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
+
|
+
|
||||||
+ /* We expect to be silent on the non-existing files. */
|
+ /* We expect to be silent on the non-existing files. */
|
||||||
+ gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename.get (), gnutarget, -1);
|
+ gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename.get (), gnutarget, -1);
|
||||||
|
+
|
||||||
- return {};
|
|
||||||
+ if (debug_bfd == NULL)
|
+ if (debug_bfd == NULL)
|
||||||
+ {
|
+ {
|
||||||
+ if (separate_debug_file_debug)
|
+ if (separate_debug_file_debug)
|
||||||
@ -599,13 +597,13 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
+
|
+
|
||||||
+ if (add_debug_suffix)
|
+ if (add_debug_suffix)
|
||||||
+ link0 += ".debug";
|
+ link0 += ".debug";
|
||||||
|
+
|
||||||
- return {};
|
|
||||||
+ /* If the symlink has target request to install the target.
|
+ /* If the symlink has target request to install the target.
|
||||||
+ BASE-debuginfo.rpm contains the symlink but BASE.rpm may be missing.
|
+ BASE-debuginfo.rpm contains the symlink but BASE.rpm may be missing.
|
||||||
+ https://bugzilla.redhat.com/show_bug.cgi?id=981154 */
|
+ https://bugzilla.redhat.com/show_bug.cgi?id=981154 */
|
||||||
+ std::string link0_resolved (link_resolve (link0.c_str (), 0));
|
+ std::string link0_resolved (link_resolve (link0.c_str (), 0));
|
||||||
+
|
|
||||||
|
- return {};
|
||||||
+ if (link_all.empty ())
|
+ if (link_all.empty ())
|
||||||
+ link_all = link0_resolved;
|
+ link_all = link0_resolved;
|
||||||
+ else
|
+ else
|
||||||
@ -643,7 +641,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
{
|
{
|
||||||
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
|
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
|
||||||
cause "/.build-id/..." lookups. */
|
cause "/.build-id/..." lookups. */
|
||||||
@@ -143,16 +652,16 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
@@ -143,16 +654,16 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
||||||
if (size > 0)
|
if (size > 0)
|
||||||
{
|
{
|
||||||
size--;
|
size--;
|
||||||
@ -665,7 +663,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
if (debug_bfd != NULL)
|
if (debug_bfd != NULL)
|
||||||
return debug_bfd;
|
return debug_bfd;
|
||||||
|
|
||||||
@@ -166,7 +675,8 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
@@ -166,7 +677,8 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
||||||
if (strcmp (gdb_sysroot, TARGET_SYSROOT_PREFIX) != 0)
|
if (strcmp (gdb_sysroot, TARGET_SYSROOT_PREFIX) != 0)
|
||||||
{
|
{
|
||||||
link = gdb_sysroot + link;
|
link = gdb_sysroot + link;
|
||||||
@ -675,7 +673,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
if (debug_bfd != NULL)
|
if (debug_bfd != NULL)
|
||||||
return debug_bfd;
|
return debug_bfd;
|
||||||
}
|
}
|
||||||
@@ -175,22 +685,189 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
@@ -175,22 +687,189 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -868,7 +866,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
|
|||||||
/* Prevent looping on a stripped .debug file. */
|
/* Prevent looping on a stripped .debug file. */
|
||||||
if (abfd != NULL
|
if (abfd != NULL
|
||||||
&& filename_cmp (bfd_get_filename (abfd.get ()),
|
&& filename_cmp (bfd_get_filename (abfd.get ()),
|
||||||
@@ -203,3 +880,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
|
@@ -203,3 +882,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
|
||||||
|
|
||||||
return std::string ();
|
return std::string ();
|
||||||
}
|
}
|
||||||
@ -895,7 +893,7 @@ diff --git a/gdb/build-id.h b/gdb/build-id.h
|
|||||||
+++ b/gdb/build-id.h
|
+++ b/gdb/build-id.h
|
||||||
@@ -23,9 +23,10 @@
|
@@ -23,9 +23,10 @@
|
||||||
#include "gdb_bfd.h"
|
#include "gdb_bfd.h"
|
||||||
#include "common/rsp-low.h"
|
#include "gdbsupport/rsp-low.h"
|
||||||
|
|
||||||
-/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */
|
-/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */
|
||||||
+/* Separate debuginfo files have corrupted PHDR but SHDR is correct there.
|
+/* Separate debuginfo files have corrupted PHDR but SHDR is correct there.
|
||||||
@ -1036,7 +1034,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
|
|||||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||||
--- a/gdb/doc/gdb.texinfo
|
--- a/gdb/doc/gdb.texinfo
|
||||||
+++ b/gdb/doc/gdb.texinfo
|
+++ b/gdb/doc/gdb.texinfo
|
||||||
@@ -20427,6 +20427,27 @@ information files.
|
@@ -20581,6 +20581,27 @@ information files.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@ -1089,7 +1087,7 @@ diff --git a/gdb/dwarf-index-cache.c b/gdb/dwarf-index-cache.c
|
|||||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||||
--- a/gdb/dwarf2read.c
|
--- a/gdb/dwarf2read.c
|
||||||
+++ b/gdb/dwarf2read.c
|
+++ b/gdb/dwarf2read.c
|
||||||
@@ -2677,7 +2677,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
@@ -2683,7 +2683,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dwz_bfd == NULL)
|
if (dwz_bfd == NULL)
|
||||||
@ -1098,7 +1096,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
|
|
||||||
if (dwz_bfd == NULL)
|
if (dwz_bfd == NULL)
|
||||||
error (_("could not find '.gnu_debugaltlink' file for %s"),
|
error (_("could not find '.gnu_debugaltlink' file for %s"),
|
||||||
@@ -6186,7 +6186,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
|
@@ -6192,7 +6192,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
|
||||||
static gdb::array_view<const gdb_byte>
|
static gdb::array_view<const gdb_byte>
|
||||||
get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
||||||
{
|
{
|
||||||
@ -1107,7 +1105,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
if (build_id == nullptr)
|
if (build_id == nullptr)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
@@ -6199,7 +6199,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
@@ -6205,7 +6205,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
|
||||||
static gdb::array_view<const gdb_byte>
|
static gdb::array_view<const gdb_byte>
|
||||||
get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
|
get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
|
||||||
{
|
{
|
||||||
@ -1144,7 +1142,7 @@ diff --git a/gdb/elfread.c b/gdb/elfread.c
|
|||||||
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
|
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
|
||||||
--- a/gdb/objfiles.h
|
--- a/gdb/objfiles.h
|
||||||
+++ b/gdb/objfiles.h
|
+++ b/gdb/objfiles.h
|
||||||
@@ -618,6 +618,10 @@ struct objfile
|
@@ -619,6 +619,10 @@ struct objfile
|
||||||
htab_up static_links;
|
htab_up static_links;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1167,7 +1165,7 @@ diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
|
|||||||
}
|
}
|
||||||
catch (const gdb_exception &except)
|
catch (const gdb_exception &except)
|
||||||
{
|
{
|
||||||
@@ -533,7 +533,7 @@ objfpy_lookup_objfile_by_build_id (const char *build_id)
|
@@ -601,7 +601,7 @@ objfpy_lookup_objfile_by_build_id (const char *build_id)
|
||||||
/* Don't return separate debug files. */
|
/* Don't return separate debug files. */
|
||||||
if (objfile->separate_debug_objfile_backlink != NULL)
|
if (objfile->separate_debug_objfile_backlink != NULL)
|
||||||
continue;
|
continue;
|
||||||
@ -1245,10 +1243,17 @@ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
|
|||||||
diff --git a/gdb/symfile.h b/gdb/symfile.h
|
diff --git a/gdb/symfile.h b/gdb/symfile.h
|
||||||
--- a/gdb/symfile.h
|
--- a/gdb/symfile.h
|
||||||
+++ b/gdb/symfile.h
|
+++ b/gdb/symfile.h
|
||||||
@@ -532,6 +532,10 @@ void expand_symtabs_matching
|
@@ -532,12 +532,17 @@ void expand_symtabs_matching
|
||||||
void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
|
void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
|
||||||
int need_fullname);
|
int need_fullname);
|
||||||
|
|
||||||
|
+
|
||||||
|
/* Target-agnostic function to load the sections of an executable into memory.
|
||||||
|
|
||||||
|
ARGS should be in the form "EXECUTABLE [OFFSET]", where OFFSET is an
|
||||||
|
optional offset to apply to each section. */
|
||||||
|
extern void generic_load (const char *args, int from_tty);
|
||||||
|
|
||||||
+/* build-id support. */
|
+/* build-id support. */
|
||||||
+extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
|
+extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
|
||||||
+extern void debug_print_missing (const char *binary, const char *debug);
|
+extern void debug_print_missing (const char *binary, const char *debug);
|
||||||
@ -1307,7 +1312,7 @@ diff --git a/gdb/testsuite/gdb.base/new-ui-pending-input.exp b/gdb/testsuite/gdb
|
|||||||
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
|
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
|
||||||
--- a/gdb/testsuite/lib/gdb.exp
|
--- a/gdb/testsuite/lib/gdb.exp
|
||||||
+++ b/gdb/testsuite/lib/gdb.exp
|
+++ b/gdb/testsuite/lib/gdb.exp
|
||||||
@@ -1755,6 +1755,17 @@ proc default_gdb_start { } {
|
@@ -1793,6 +1793,17 @@ proc default_gdb_start { } {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ Subject: gdb-6.8-bz436037-reg-no-longer-active.patch
|
|||||||
diff --git a/gdb/valops.c b/gdb/valops.c
|
diff --git a/gdb/valops.c b/gdb/valops.c
|
||||||
--- a/gdb/valops.c
|
--- a/gdb/valops.c
|
||||||
+++ b/gdb/valops.c
|
+++ b/gdb/valops.c
|
||||||
@@ -1092,6 +1092,8 @@ value_assign (struct value *toval, struct value *fromval)
|
@@ -1093,6 +1093,8 @@ value_assign (struct value *toval, struct value *fromval)
|
||||||
struct gdbarch *gdbarch;
|
struct gdbarch *gdbarch;
|
||||||
int value_reg;
|
int value_reg;
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
|||||||
/* Figure out which frame this is in currently.
|
/* Figure out which frame this is in currently.
|
||||||
|
|
||||||
We use VALUE_FRAME_ID for obtaining the value's frame id instead of
|
We use VALUE_FRAME_ID for obtaining the value's frame id instead of
|
||||||
@@ -1101,8 +1103,14 @@ value_assign (struct value *toval, struct value *fromval)
|
@@ -1102,8 +1104,14 @@ value_assign (struct value *toval, struct value *fromval)
|
||||||
frame. */
|
frame. */
|
||||||
frame = frame_find_by_id (VALUE_FRAME_ID (toval));
|
frame = frame_find_by_id (VALUE_FRAME_ID (toval));
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ diff --git a/gdb/extension.c b/gdb/extension.c
|
|||||||
diff --git a/gdb/top.c b/gdb/top.c
|
diff --git a/gdb/top.c b/gdb/top.c
|
||||||
--- a/gdb/top.c
|
--- a/gdb/top.c
|
||||||
+++ b/gdb/top.c
|
+++ b/gdb/top.c
|
||||||
@@ -1677,7 +1677,13 @@ quit_force (int *exit_arg, int from_tty)
|
@@ -1675,7 +1675,13 @@ quit_force (int *exit_arg, int from_tty)
|
||||||
|
|
||||||
qt.from_tty = from_tty;
|
qt.from_tty = from_tty;
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ diff --git a/gdb/top.c b/gdb/top.c
|
|||||||
diff --git a/gdb/utils.c b/gdb/utils.c
|
diff --git a/gdb/utils.c b/gdb/utils.c
|
||||||
--- a/gdb/utils.c
|
--- a/gdb/utils.c
|
||||||
+++ b/gdb/utils.c
|
+++ b/gdb/utils.c
|
||||||
@@ -100,6 +100,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
|
@@ -101,6 +101,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
|
||||||
|
|
||||||
static int debug_timestamp = 0;
|
static int debug_timestamp = 0;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Subject: gdb-archer-pie-addons-keep-disabled.patch
|
|||||||
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||||
--- a/gdb/breakpoint.c
|
--- a/gdb/breakpoint.c
|
||||||
+++ b/gdb/breakpoint.c
|
+++ b/gdb/breakpoint.c
|
||||||
@@ -15416,6 +15416,50 @@ static struct cmd_list_element *enablebreaklist = NULL;
|
@@ -15386,6 +15386,50 @@ static struct cmd_list_element *enablebreaklist = NULL;
|
||||||
|
|
||||||
cmd_list_element *commands_cmd_element = nullptr;
|
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
|
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
|
||||||
--- a/gdb/breakpoint.h
|
--- a/gdb/breakpoint.h
|
||||||
+++ b/gdb/breakpoint.h
|
+++ b/gdb/breakpoint.h
|
||||||
@@ -1674,6 +1674,9 @@ extern const char *ep_parse_optional_if_clause (const char **arg);
|
@@ -1690,6 +1690,9 @@ extern const char *ep_parse_optional_if_clause (const char **arg);
|
||||||
UIOUT iff debugging multiple threads. */
|
UIOUT iff debugging multiple threads. */
|
||||||
extern void maybe_print_thread_hit_breakpoint (struct ui_out *uiout);
|
extern void maybe_print_thread_hit_breakpoint (struct ui_out *uiout);
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Subject: gdb-archer-pie-addons.patch
|
|||||||
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
||||||
--- a/gdb/gdbtypes.h
|
--- a/gdb/gdbtypes.h
|
||||||
+++ b/gdb/gdbtypes.h
|
+++ b/gdb/gdbtypes.h
|
||||||
@@ -511,6 +511,7 @@ enum field_loc_kind
|
@@ -510,6 +510,7 @@ enum field_loc_kind
|
||||||
{
|
{
|
||||||
FIELD_LOC_KIND_BITPOS, /**< bitpos */
|
FIELD_LOC_KIND_BITPOS, /**< bitpos */
|
||||||
FIELD_LOC_KIND_ENUMVAL, /**< enumval */
|
FIELD_LOC_KIND_ENUMVAL, /**< enumval */
|
||||||
@ -16,7 +16,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
FIELD_LOC_KIND_PHYSADDR, /**< physaddr */
|
FIELD_LOC_KIND_PHYSADDR, /**< physaddr */
|
||||||
FIELD_LOC_KIND_PHYSNAME, /**< physname */
|
FIELD_LOC_KIND_PHYSNAME, /**< physname */
|
||||||
FIELD_LOC_KIND_DWARF_BLOCK /**< dwarf_block */
|
FIELD_LOC_KIND_DWARF_BLOCK /**< dwarf_block */
|
||||||
@@ -562,6 +563,7 @@ union field_location
|
@@ -561,6 +562,7 @@ union field_location
|
||||||
field. Otherwise, physname is the mangled label of the
|
field. Otherwise, physname is the mangled label of the
|
||||||
static field. */
|
static field. */
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
CORE_ADDR physaddr;
|
CORE_ADDR physaddr;
|
||||||
const char *physname;
|
const char *physname;
|
||||||
|
|
||||||
@@ -1451,6 +1453,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
|
@@ -1450,6 +1452,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
|
||||||
#define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval)
|
#define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval)
|
||||||
#define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0)
|
#define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0)
|
||||||
#define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
|
#define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
|
||||||
@ -32,7 +32,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
#define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
|
#define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
|
||||||
#define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
|
#define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
|
||||||
#define SET_FIELD_BITPOS(thisfld, bitpos) \
|
#define SET_FIELD_BITPOS(thisfld, bitpos) \
|
||||||
@@ -1462,6 +1465,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
|
@@ -1461,6 +1464,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
|
||||||
#define SET_FIELD_PHYSNAME(thisfld, name) \
|
#define SET_FIELD_PHYSNAME(thisfld, name) \
|
||||||
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \
|
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \
|
||||||
FIELD_STATIC_PHYSNAME (thisfld) = (name))
|
FIELD_STATIC_PHYSNAME (thisfld) = (name))
|
||||||
@ -40,7 +40,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
#define SET_FIELD_PHYSADDR(thisfld, addr) \
|
#define SET_FIELD_PHYSADDR(thisfld, addr) \
|
||||||
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \
|
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \
|
||||||
FIELD_STATIC_PHYSADDR (thisfld) = (addr))
|
FIELD_STATIC_PHYSADDR (thisfld) = (addr))
|
||||||
@@ -1478,6 +1482,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
|
@@ -1477,6 +1481,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
|
||||||
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
|
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
|
||||||
#define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
|
#define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
|
||||||
#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
|
#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
|
||||||
|
@ -53,18 +53,6 @@ diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
|||||||
@c resolve the situation of these eventually
|
@c resolve the situation of these eventually
|
||||||
@item -tui
|
@item -tui
|
||||||
@cindex @code{--tui}
|
@cindex @code{--tui}
|
||||||
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
|
|
||||||
--- a/gdb/doc/python.texi
|
|
||||||
+++ b/gdb/doc/python.texi
|
|
||||||
@@ -90,8 +90,6 @@ containing @code{end}. For example:
|
|
||||||
|
|
||||||
@smallexample
|
|
||||||
(@value{GDBP}) python
|
|
||||||
-Type python script
|
|
||||||
-End with a line saying just "end".
|
|
||||||
>print 23
|
|
||||||
>end
|
|
||||||
23
|
|
||||||
diff --git a/gdb/gdb-gdb.gdb.in b/gdb/gdb-gdb.gdb.in
|
diff --git a/gdb/gdb-gdb.gdb.in b/gdb/gdb-gdb.gdb.in
|
||||||
--- a/gdb/gdb-gdb.gdb.in
|
--- a/gdb/gdb-gdb.gdb.in
|
||||||
+++ b/gdb/gdb-gdb.gdb.in
|
+++ b/gdb/gdb-gdb.gdb.in
|
||||||
@ -348,7 +336,7 @@ diff --git a/gdb/python/python.c b/gdb/python/python.c
|
|||||||
@@ -94,6 +94,8 @@ const struct extension_language_defn extension_language_python =
|
@@ -94,6 +94,8 @@ const struct extension_language_defn extension_language_python =
|
||||||
#include "linespec.h"
|
#include "linespec.h"
|
||||||
#include "source.h"
|
#include "source.h"
|
||||||
#include "common/version.h"
|
#include "gdbsupport/version.h"
|
||||||
+#include "inferior.h"
|
+#include "inferior.h"
|
||||||
+#include "gdbthread.h"
|
+#include "gdbthread.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
@ -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
|
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
|
||||||
--- a/gdb/python/py-framefilter.c
|
--- a/gdb/python/py-framefilter.c
|
||||||
+++ b/gdb/python/py-framefilter.c
|
+++ b/gdb/python/py-framefilter.c
|
||||||
@@ -1139,6 +1139,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
@@ -1204,6 +1204,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||||
htab_eq_pointer,
|
htab_eq_pointer,
|
||||||
NULL));
|
NULL));
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
|
|||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
gdbpy_ref<> item (PyIter_Next (iterable.get ()));
|
gdbpy_ref<> item (PyIter_Next (iterable.get ()));
|
||||||
@@ -1147,8 +1148,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
@@ -1212,8 +1213,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||||
{
|
{
|
||||||
if (PyErr_Occurred ())
|
if (PyErr_Occurred ())
|
||||||
{
|
{
|
||||||
@ -33,7 +33,7 @@ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1180,7 +1181,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
@@ -1245,7 +1246,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
|
||||||
/* Do not exit on error printing a single frame. Print the
|
/* Do not exit on error printing a single frame. Print the
|
||||||
error and continue with other frames. */
|
error and continue with other frames. */
|
||||||
if (success == EXT_LANG_BT_ERROR)
|
if (success == EXT_LANG_BT_ERROR)
|
||||||
|
@ -30,7 +30,7 @@ debugging problem of GOMP outside of the scope of this Bug.
|
|||||||
diff --git a/gdb/infrun.c b/gdb/infrun.c
|
diff --git a/gdb/infrun.c b/gdb/infrun.c
|
||||||
--- a/gdb/infrun.c
|
--- a/gdb/infrun.c
|
||||||
+++ b/gdb/infrun.c
|
+++ b/gdb/infrun.c
|
||||||
@@ -6445,6 +6445,16 @@ process_event_stop_test (struct execution_control_state *ecs)
|
@@ -6462,6 +6462,16 @@ process_event_stop_test (struct execution_control_state *ecs)
|
||||||
|
|
||||||
if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
|
if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@ diff --git a/gdb/infrun.c b/gdb/infrun.c
|
|||||||
/* We're doing a "next".
|
/* We're doing a "next".
|
||||||
|
|
||||||
Normal (forward) execution: set a breakpoint at the
|
Normal (forward) execution: set a breakpoint at the
|
||||||
@@ -6478,6 +6488,7 @@ process_event_stop_test (struct execution_control_state *ecs)
|
@@ -6495,6 +6505,7 @@ process_event_stop_test (struct execution_control_state *ecs)
|
||||||
|
|
||||||
keep_going (ecs);
|
keep_going (ecs);
|
||||||
return;
|
return;
|
||||||
|
@ -42,7 +42,7 @@ gdb/
|
|||||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||||
--- a/gdb/dwarf2read.c
|
--- a/gdb/dwarf2read.c
|
||||||
+++ b/gdb/dwarf2read.c
|
+++ b/gdb/dwarf2read.c
|
||||||
@@ -10540,6 +10540,13 @@ private:
|
@@ -10546,6 +10546,13 @@ private:
|
||||||
static void
|
static void
|
||||||
process_die (struct die_info *die, struct dwarf2_cu *cu)
|
process_die (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
@ -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
|
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||||
--- a/gdb/breakpoint.c
|
--- a/gdb/breakpoint.c
|
||||||
+++ b/gdb/breakpoint.c
|
+++ b/gdb/breakpoint.c
|
||||||
@@ -11911,6 +11911,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
|
@@ -11881,6 +11881,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
|
||||||
traps we can no longer explain. */
|
traps we can no longer explain. */
|
||||||
|
|
||||||
old_loc->events_till_retirement = 3 * (thread_count () + 1);
|
old_loc->events_till_retirement = 3 * (thread_count () + 1);
|
||||||
|
@ -34,116 +34,10 @@ dbfd7140bf4c0500d1f5d192be781f83f78f7922
|
|||||||
gdb/value.h | 2 +
|
gdb/value.h | 2 +
|
||||||
23 files changed, 1242 insertions(+), 183 deletions(-)
|
23 files changed, 1242 insertions(+), 183 deletions(-)
|
||||||
|
|
||||||
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
|
|
||||||
--- a/gdb/dwarf2loc.c
|
|
||||||
+++ b/gdb/dwarf2loc.c
|
|
||||||
@@ -2426,11 +2426,14 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
|
|
||||||
/* See dwarf2loc.h. */
|
|
||||||
|
|
||||||
int
|
|
||||||
-dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
+dwarf2_evaluate_property_signed (const struct dynamic_prop *prop,
|
|
||||||
struct frame_info *frame,
|
|
||||||
struct property_addr_info *addr_stack,
|
|
||||||
- CORE_ADDR *value)
|
|
||||||
+ CORE_ADDR *value,
|
|
||||||
+ int is_signed)
|
|
||||||
{
|
|
||||||
+ int rc = 0;
|
|
||||||
+
|
|
||||||
if (prop == NULL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
@@ -2454,7 +2457,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
|
|
||||||
*value = value_as_address (val);
|
|
||||||
}
|
|
||||||
- return 1;
|
|
||||||
+ rc = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
@@ -2476,7 +2479,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
if (!value_optimized_out (val))
|
|
||||||
{
|
|
||||||
*value = value_as_address (val);
|
|
||||||
- return 1;
|
|
||||||
+ rc = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2484,8 +2487,8 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
|
|
||||||
case PROP_CONST:
|
|
||||||
*value = prop->data.const_val;
|
|
||||||
- return 1;
|
|
||||||
-
|
|
||||||
+ rc = 1;
|
|
||||||
+ break;
|
|
||||||
case PROP_ADDR_OFFSET:
|
|
||||||
{
|
|
||||||
struct dwarf2_property_baton *baton
|
|
||||||
@@ -2510,11 +2513,38 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
val = value_at (baton->offset_info.type,
|
|
||||||
pinfo->addr + baton->offset_info.offset);
|
|
||||||
*value = value_as_address (val);
|
|
||||||
- return 1;
|
|
||||||
+ rc = 1;
|
|
||||||
}
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
|
|
||||||
- return 0;
|
|
||||||
+ if (rc == 1 && is_signed == 1)
|
|
||||||
+ {
|
|
||||||
+ /* If we have a valid return candidate and it's value is signed,
|
|
||||||
+ we have to sign-extend the value because CORE_ADDR on 64bit machine has
|
|
||||||
+ 8 bytes but address size of an 32bit application is 4 bytes. */
|
|
||||||
+ struct gdbarch * gdbarch = target_gdbarch ();
|
|
||||||
+ const int addr_bit = gdbarch_addr_bit (gdbarch);
|
|
||||||
+ const CORE_ADDR neg_mask = ((~0) << (addr_bit - 1));
|
|
||||||
+
|
|
||||||
+ /* Check if signed bit is set and sign-extend values. */
|
|
||||||
+ if (*value & (neg_mask))
|
|
||||||
+ *value |= (neg_mask );
|
|
||||||
+ }
|
|
||||||
+ return rc;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
+ struct frame_info *frame,
|
|
||||||
+ struct property_addr_info *addr_stack,
|
|
||||||
+ CORE_ADDR *value)
|
|
||||||
+{
|
|
||||||
+ return dwarf2_evaluate_property_signed (prop,
|
|
||||||
+ frame,
|
|
||||||
+ addr_stack,
|
|
||||||
+ value,
|
|
||||||
+ 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* See dwarf2loc.h. */
|
|
||||||
diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
|
|
||||||
--- a/gdb/dwarf2loc.h
|
|
||||||
+++ b/gdb/dwarf2loc.h
|
|
||||||
@@ -143,6 +143,12 @@ int dwarf2_evaluate_property (const struct dynamic_prop *prop,
|
|
||||||
struct property_addr_info *addr_stack,
|
|
||||||
CORE_ADDR *value);
|
|
||||||
|
|
||||||
+int dwarf2_evaluate_property_signed (const struct dynamic_prop *prop,
|
|
||||||
+ struct frame_info *frame,
|
|
||||||
+ struct property_addr_info *addr_stack,
|
|
||||||
+ CORE_ADDR *value,
|
|
||||||
+ int is_signed);
|
|
||||||
+
|
|
||||||
/* A helper for the compiler interface that compiles a single dynamic
|
|
||||||
property to C code.
|
|
||||||
|
|
||||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||||
--- a/gdb/dwarf2read.c
|
--- a/gdb/dwarf2read.c
|
||||||
+++ b/gdb/dwarf2read.c
|
+++ b/gdb/dwarf2read.c
|
||||||
@@ -17760,7 +17760,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17831,7 +17831,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
struct type *base_type, *orig_base_type;
|
struct type *base_type, *orig_base_type;
|
||||||
struct type *range_type;
|
struct type *range_type;
|
||||||
struct attribute *attr;
|
struct attribute *attr;
|
||||||
@ -152,7 +46,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
int low_default_is_valid;
|
int low_default_is_valid;
|
||||||
int high_bound_is_count = 0;
|
int high_bound_is_count = 0;
|
||||||
const char *name;
|
const char *name;
|
||||||
@@ -17780,7 +17780,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17852,7 +17852,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
low.kind = PROP_CONST;
|
low.kind = PROP_CONST;
|
||||||
high.kind = PROP_CONST;
|
high.kind = PROP_CONST;
|
||||||
@ -162,13 +56,13 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
|
|
||||||
/* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
|
/* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
|
||||||
omitting DW_AT_lower_bound. */
|
omitting DW_AT_lower_bound. */
|
||||||
@@ -17813,6 +17815,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17885,6 +17887,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
|
+ attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
|
||||||
+ if (attr)
|
+ if (attr)
|
||||||
+ if (!attr_to_dynamic_prop (attr, die, cu, &stride))
|
+ if (!attr_to_dynamic_prop (attr, die, cu, &stride, base_type))
|
||||||
+ complaint (_("Missing DW_AT_byte_stride "
|
+ complaint (_("Missing DW_AT_byte_stride "
|
||||||
+ "- DIE at 0x%s [in module %s]"),
|
+ "- DIE at 0x%s [in module %s]"),
|
||||||
+ sect_offset_str (die->sect_off),
|
+ sect_offset_str (die->sect_off),
|
||||||
@ -176,8 +70,8 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
+
|
+
|
||||||
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
|
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
|
||||||
if (attr)
|
if (attr)
|
||||||
attr_to_dynamic_prop (attr, die, cu, &low);
|
attr_to_dynamic_prop (attr, die, cu, &low, base_type);
|
||||||
@@ -17905,7 +17915,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17938,7 +17948,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
&& !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
|
&& !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
|
||||||
high.data.const_val |= negative_mask;
|
high.data.const_val |= negative_mask;
|
||||||
|
|
||||||
@ -723,7 +617,7 @@ diff --git a/gdb/expprint.c b/gdb/expprint.c
|
|||||||
diff --git a/gdb/expression.h b/gdb/expression.h
|
diff --git a/gdb/expression.h b/gdb/expression.h
|
||||||
--- a/gdb/expression.h
|
--- a/gdb/expression.h
|
||||||
+++ b/gdb/expression.h
|
+++ b/gdb/expression.h
|
||||||
@@ -165,28 +165,27 @@ extern void dump_raw_expression (struct expression *,
|
@@ -167,28 +167,27 @@ extern void dump_raw_expression (struct expression *,
|
||||||
struct ui_file *, const char *);
|
struct ui_file *, const char *);
|
||||||
extern void dump_prefix_expression (struct expression *, struct ui_file *);
|
extern void dump_prefix_expression (struct expression *, struct ui_file *);
|
||||||
|
|
||||||
@ -874,9 +768,9 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
+ const struct dynamic_prop *high_bound,
|
+ const struct dynamic_prop *high_bound,
|
||||||
+ const struct dynamic_prop *stride)
|
+ const struct dynamic_prop *stride)
|
||||||
{
|
{
|
||||||
if (result_type == NULL)
|
/* The INDEX_TYPE should be a type capable of holding the upper and lower
|
||||||
result_type = alloc_type_copy (index_type);
|
bounds, as such a zero sized, or void type makes no sense. */
|
||||||
@@ -927,6 +928,7 @@ create_range_type (struct type *result_type, struct type *index_type,
|
@@ -932,6 +933,7 @@ create_range_type (struct type *result_type, struct type *index_type,
|
||||||
TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
|
TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
|
||||||
TYPE_RANGE_DATA (result_type)->low = *low_bound;
|
TYPE_RANGE_DATA (result_type)->low = *low_bound;
|
||||||
TYPE_RANGE_DATA (result_type)->high = *high_bound;
|
TYPE_RANGE_DATA (result_type)->high = *high_bound;
|
||||||
@ -884,7 +778,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
|
|
||||||
if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
|
if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
|
||||||
TYPE_UNSIGNED (result_type) = 1;
|
TYPE_UNSIGNED (result_type) = 1;
|
||||||
@@ -955,7 +957,7 @@ struct type *
|
@@ -960,7 +962,7 @@ struct type *
|
||||||
create_static_range_type (struct type *result_type, struct type *index_type,
|
create_static_range_type (struct type *result_type, struct type *index_type,
|
||||||
LONGEST low_bound, LONGEST high_bound)
|
LONGEST low_bound, LONGEST high_bound)
|
||||||
{
|
{
|
||||||
@ -893,7 +787,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
|
|
||||||
low.kind = PROP_CONST;
|
low.kind = PROP_CONST;
|
||||||
low.data.const_val = low_bound;
|
low.data.const_val = low_bound;
|
||||||
@@ -963,7 +965,11 @@ create_static_range_type (struct type *result_type, struct type *index_type,
|
@@ -968,7 +970,11 @@ create_static_range_type (struct type *result_type, struct type *index_type,
|
||||||
high.kind = PROP_CONST;
|
high.kind = PROP_CONST;
|
||||||
high.data.const_val = high_bound;
|
high.data.const_val = high_bound;
|
||||||
|
|
||||||
@ -906,7 +800,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
|
|
||||||
return result_type;
|
return result_type;
|
||||||
}
|
}
|
||||||
@@ -1181,16 +1187,20 @@ create_array_type_with_stride (struct type *result_type,
|
@@ -1186,16 +1192,20 @@ create_array_type_with_stride (struct type *result_type,
|
||||||
&& (!type_not_associated (result_type)
|
&& (!type_not_associated (result_type)
|
||||||
&& !type_not_allocated (result_type)))
|
&& !type_not_allocated (result_type)))
|
||||||
{
|
{
|
||||||
@ -928,7 +822,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
else if (bit_stride > 0)
|
else if (bit_stride > 0)
|
||||||
TYPE_LENGTH (result_type) =
|
TYPE_LENGTH (result_type) =
|
||||||
(bit_stride * (high_bound - low_bound + 1) + 7) / 8;
|
(bit_stride * (high_bound - low_bound + 1) + 7) / 8;
|
||||||
@@ -1975,12 +1985,12 @@ resolve_dynamic_range (struct type *dyn_range_type,
|
@@ -1980,7 +1990,7 @@ resolve_dynamic_range (struct type *dyn_range_type,
|
||||||
CORE_ADDR value;
|
CORE_ADDR value;
|
||||||
struct type *static_range_type, *static_target_type;
|
struct type *static_range_type, *static_target_type;
|
||||||
const struct dynamic_prop *prop;
|
const struct dynamic_prop *prop;
|
||||||
@ -937,27 +831,12 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
|
|
||||||
gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE);
|
gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE);
|
||||||
|
|
||||||
prop = &TYPE_RANGE_DATA (dyn_range_type)->low;
|
@@ -2012,12 +2022,20 @@ resolve_dynamic_range (struct type *dyn_range_type,
|
||||||
- if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
|
|
||||||
+ if (dwarf2_evaluate_property_signed (prop, NULL, addr_stack, &value, 1))
|
|
||||||
{
|
|
||||||
low_bound.kind = PROP_CONST;
|
|
||||||
low_bound.data.const_val = value;
|
|
||||||
@@ -1992,7 +2002,7 @@ resolve_dynamic_range (struct type *dyn_range_type,
|
|
||||||
}
|
|
||||||
|
|
||||||
prop = &TYPE_RANGE_DATA (dyn_range_type)->high;
|
|
||||||
- if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
|
|
||||||
+ if (dwarf2_evaluate_property_signed (prop, NULL, addr_stack, &value, 1))
|
|
||||||
{
|
|
||||||
high_bound.kind = PROP_CONST;
|
|
||||||
high_bound.data.const_val = value;
|
|
||||||
@@ -2007,12 +2017,20 @@ resolve_dynamic_range (struct type *dyn_range_type,
|
|
||||||
high_bound.data.const_val = 0;
|
high_bound.data.const_val = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ prop = &TYPE_RANGE_DATA (dyn_range_type)->stride;
|
+ prop = &TYPE_RANGE_DATA (dyn_range_type)->stride;
|
||||||
+ if (dwarf2_evaluate_property_signed (prop, NULL, addr_stack, &value, 1))
|
+ if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
|
||||||
+ {
|
+ {
|
||||||
+ stride.kind = PROP_CONST;
|
+ stride.kind = PROP_CONST;
|
||||||
+ stride.data.const_val = value;
|
+ stride.data.const_val = value;
|
||||||
@ -977,7 +856,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
||||||
--- a/gdb/gdbtypes.h
|
--- a/gdb/gdbtypes.h
|
||||||
+++ b/gdb/gdbtypes.h
|
+++ b/gdb/gdbtypes.h
|
||||||
@@ -618,6 +618,10 @@ struct range_bounds
|
@@ -617,6 +617,10 @@ struct range_bounds
|
||||||
|
|
||||||
struct dynamic_prop high;
|
struct dynamic_prop high;
|
||||||
|
|
||||||
@ -988,7 +867,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
/* True if HIGH range bound contains the number of elements in the
|
/* True if HIGH range bound contains the number of elements in the
|
||||||
subrange. This affects how the final high bound is computed. */
|
subrange. This affects how the final high bound is computed. */
|
||||||
|
|
||||||
@@ -782,7 +786,6 @@ struct main_type
|
@@ -781,7 +785,6 @@ struct main_type
|
||||||
/* * Union member used for range types. */
|
/* * Union member used for range types. */
|
||||||
|
|
||||||
struct range_bounds *bounds;
|
struct range_bounds *bounds;
|
||||||
@ -996,7 +875,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
} flds_bnds;
|
} flds_bnds;
|
||||||
|
|
||||||
/* * Slot to point to additional language-specific fields of this
|
/* * Slot to point to additional language-specific fields of this
|
||||||
@@ -1341,6 +1344,15 @@ extern bool set_type_align (struct type *, ULONGEST);
|
@@ -1340,6 +1343,15 @@ extern bool set_type_align (struct type *, ULONGEST);
|
||||||
TYPE_RANGE_DATA(range_type)->high.kind
|
TYPE_RANGE_DATA(range_type)->high.kind
|
||||||
#define TYPE_LOW_BOUND_KIND(range_type) \
|
#define TYPE_LOW_BOUND_KIND(range_type) \
|
||||||
TYPE_RANGE_DATA(range_type)->low.kind
|
TYPE_RANGE_DATA(range_type)->low.kind
|
||||||
@ -1012,7 +891,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
|
|
||||||
/* Property accessors for the type data location. */
|
/* Property accessors for the type data location. */
|
||||||
#define TYPE_DATA_LOCATION(thistype) \
|
#define TYPE_DATA_LOCATION(thistype) \
|
||||||
@@ -1376,6 +1388,9 @@ extern bool set_type_align (struct type *, ULONGEST);
|
@@ -1375,6 +1387,9 @@ extern bool set_type_align (struct type *, ULONGEST);
|
||||||
TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
|
TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
|
||||||
#define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
|
#define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
|
||||||
TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
|
TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
|
||||||
@ -1022,7 +901,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
|
|||||||
|
|
||||||
#define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
|
#define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
|
||||||
(TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
|
(TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
|
||||||
@@ -1951,6 +1966,7 @@ extern struct type *create_array_type_with_stride
|
@@ -1950,6 +1965,7 @@ extern struct type *create_array_type_with_stride
|
||||||
struct dynamic_prop *, unsigned int);
|
struct dynamic_prop *, unsigned int);
|
||||||
|
|
||||||
extern struct type *create_range_type (struct type *, struct type *,
|
extern struct type *create_range_type (struct type *, struct type *,
|
||||||
@ -1072,7 +951,7 @@ diff --git a/gdb/parse.c b/gdb/parse.c
|
|||||||
diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
|
diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
|
||||||
--- a/gdb/rust-exp.y
|
--- a/gdb/rust-exp.y
|
||||||
+++ b/gdb/rust-exp.y
|
+++ b/gdb/rust-exp.y
|
||||||
@@ -2492,24 +2492,28 @@ rust_parser::convert_ast_to_expression (const struct rust_op *operation,
|
@@ -2493,24 +2493,28 @@ rust_parser::convert_ast_to_expression (const struct rust_op *operation,
|
||||||
|
|
||||||
case OP_RANGE:
|
case OP_RANGE:
|
||||||
{
|
{
|
||||||
@ -1669,17 +1548,6 @@ new file mode 100644
|
|||||||
+program testprog
|
+program testprog
|
||||||
+ call sub
|
+ call sub
|
||||||
+end
|
+end
|
||||||
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 = $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"
|
|
||||||
+
|
|
||||||
+gdb_breakpoint [gdb_get_line_number "vla1-neg-bounds"]
|
|
||||||
+gdb_continue_to_breakpoint "vla1-neg-bounds"
|
|
||||||
+gdb_test "ptype vla1" "type = $real \\(-2:1,-5:4,-3:-1\\)" "ptype vla1 negative bounds"
|
|
||||||
diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortran/vla-sizeof.exp
|
diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortran/vla-sizeof.exp
|
||||||
--- a/gdb/testsuite/gdb.fortran/vla-sizeof.exp
|
--- a/gdb/testsuite/gdb.fortran/vla-sizeof.exp
|
||||||
+++ b/gdb/testsuite/gdb.fortran/vla-sizeof.exp
|
+++ b/gdb/testsuite/gdb.fortran/vla-sizeof.exp
|
||||||
@ -1712,16 +1580,16 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortra
|
|||||||
"print sizeof non-associated sliced pvla"
|
"print sizeof non-associated sliced pvla"
|
||||||
|
|
||||||
# Try to access values in pointer to VLA and compare them
|
# Try to access values in pointer to VLA and compare them
|
||||||
@@ -58,4 +60,8 @@ gdb_continue_to_breakpoint "pvla-associated"
|
@@ -58,7 +60,8 @@ gdb_continue_to_breakpoint "pvla-associated"
|
||||||
gdb_test "print sizeof(pvla)" " = 4000" "print sizeof associated pvla"
|
gdb_test "print sizeof(pvla)" " = 4000" "print sizeof associated pvla"
|
||||||
gdb_test "print sizeof(pvla(3,2,1))" "4" \
|
gdb_test "print sizeof(pvla(3,2,1))" "4" \
|
||||||
"print sizeof element from associated pvla"
|
"print sizeof element from associated pvla"
|
||||||
-gdb_test "print sizeof(pvla(3:4,2,1))" "800" "print sizeof sliced pvla"
|
-gdb_test "print sizeof(pvla(3:4,2,1))" "800" "print sizeof sliced pvla"
|
||||||
+gdb_test "print sizeof(pvla(3:4,2,1))" "8" "print sizeof sliced pvla"
|
|
||||||
+
|
+
|
||||||
+gdb_breakpoint [gdb_get_line_number "vla1-neg-bounds"]
|
+gdb_test "print sizeof(pvla(3:4,2,1))" "8" "print sizeof sliced pvla"
|
||||||
+gdb_continue_to_breakpoint "vla1-neg-bounds"
|
|
||||||
+gdb_test "print sizeof(vla1)" " = 480" "print sizeof vla1 negative bounds"
|
gdb_breakpoint [gdb_get_line_number "vla1-neg-bounds-v1"]
|
||||||
|
gdb_continue_to_breakpoint "vla1-neg-bounds-v1"
|
||||||
diff --git a/gdb/testsuite/gdb.fortran/vla-stride.exp b/gdb/testsuite/gdb.fortran/vla-stride.exp
|
diff --git a/gdb/testsuite/gdb.fortran/vla-stride.exp b/gdb/testsuite/gdb.fortran/vla-stride.exp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@ -1805,28 +1673,10 @@ new file mode 100644
|
|||||||
+
|
+
|
||||||
+ pvla => null() ! single-element
|
+ pvla => null() ! single-element
|
||||||
+end program vla_stride
|
+end program vla_stride
|
||||||
diff --git a/gdb/testsuite/gdb.fortran/vla.f90 b/gdb/testsuite/gdb.fortran/vla.f90
|
|
||||||
--- a/gdb/testsuite/gdb.fortran/vla.f90
|
|
||||||
+++ b/gdb/testsuite/gdb.fortran/vla.f90
|
|
||||||
@@ -54,4 +54,14 @@ program vla
|
|
||||||
|
|
||||||
allocate (vla3 (2,2)) ! vla2-deallocated
|
|
||||||
vla3(:,:) = 13
|
|
||||||
+
|
|
||||||
+ allocate (vla1 (-2:1, -5:4, -3:-1))
|
|
||||||
+ l = allocated(vla1)
|
|
||||||
+
|
|
||||||
+ vla1(:, :, :) = 1
|
|
||||||
+ vla1(-2, -3, -1) = -231
|
|
||||||
+
|
|
||||||
+ deallocate (vla1) ! vla1-neg-bounds
|
|
||||||
+ l = allocated(vla1)
|
|
||||||
+
|
|
||||||
end program vla
|
|
||||||
diff --git a/gdb/valarith.c b/gdb/valarith.c
|
diff --git a/gdb/valarith.c b/gdb/valarith.c
|
||||||
--- a/gdb/valarith.c
|
--- a/gdb/valarith.c
|
||||||
+++ b/gdb/valarith.c
|
+++ b/gdb/valarith.c
|
||||||
@@ -187,11 +187,17 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
|
@@ -188,11 +188,17 @@ value_subscripted_rvalue (struct value *array, LONGEST index, LONGEST lowerbound
|
||||||
struct type *array_type = check_typedef (value_type (array));
|
struct type *array_type = check_typedef (value_type (array));
|
||||||
struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
|
struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
|
||||||
ULONGEST elt_size = type_length_units (elt_type);
|
ULONGEST elt_size = type_length_units (elt_type);
|
||||||
@ -2081,7 +1931,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
|||||||
diff --git a/gdb/value.h b/gdb/value.h
|
diff --git a/gdb/value.h b/gdb/value.h
|
||||||
--- a/gdb/value.h
|
--- a/gdb/value.h
|
||||||
+++ b/gdb/value.h
|
+++ b/gdb/value.h
|
||||||
@@ -1140,6 +1140,8 @@ extern struct value *varying_to_slice (struct value *);
|
@@ -1143,6 +1143,8 @@ extern struct value *varying_to_slice (struct value *);
|
||||||
|
|
||||||
extern struct value *value_slice (struct value *, int, int);
|
extern struct value *value_slice (struct value *, int, int);
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ git diff --stat -p gdb/master...gdb/users/bheckel/fortran-vla-strings
|
|||||||
diff --git a/gdb/NEWS b/gdb/NEWS
|
diff --git a/gdb/NEWS b/gdb/NEWS
|
||||||
--- a/gdb/NEWS
|
--- a/gdb/NEWS
|
||||||
+++ b/gdb/NEWS
|
+++ b/gdb/NEWS
|
||||||
@@ -573,6 +573,8 @@ SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
|
@@ -634,6 +634,8 @@ SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
|
||||||
|
|
||||||
*** Changes in GDB 8.1
|
*** Changes in GDB 8.1
|
||||||
|
|
||||||
@ -77,36 +77,37 @@ diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
|
|||||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||||
--- a/gdb/dwarf2read.c
|
--- a/gdb/dwarf2read.c
|
||||||
+++ b/gdb/dwarf2read.c
|
+++ b/gdb/dwarf2read.c
|
||||||
@@ -1810,7 +1810,8 @@ static void read_signatured_type (struct signatured_type *);
|
@@ -1810,7 +1810,10 @@ static void read_signatured_type (struct signatured_type *);
|
||||||
|
|
||||||
static int attr_to_dynamic_prop (const struct attribute *attr,
|
static int attr_to_dynamic_prop (const struct attribute *attr,
|
||||||
struct die_info *die, struct dwarf2_cu *cu,
|
struct die_info *die, struct dwarf2_cu *cu,
|
||||||
- struct dynamic_prop *prop);
|
- struct dynamic_prop *prop, struct type *type);
|
||||||
+ struct dynamic_prop *prop, const gdb_byte *additional_data,
|
+ struct dynamic_prop *prop,
|
||||||
|
+ struct type *default_type,
|
||||||
|
+ const gdb_byte *additional_data,
|
||||||
+ int additional_data_size);
|
+ int additional_data_size);
|
||||||
|
|
||||||
/* memory allocation interface */
|
/* memory allocation interface */
|
||||||
|
|
||||||
@@ -13683,7 +13684,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -13688,7 +13691,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
{
|
|
||||||
newobj->static_link
|
newobj->static_link
|
||||||
= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
|
= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
|
||||||
- attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
|
attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
|
||||||
+ attr_to_dynamic_prop (attr, die, cu, newobj->static_link, NULL, 0);
|
- dwarf2_per_cu_addr_type (cu->per_cu));
|
||||||
|
+ dwarf2_per_cu_addr_type (cu->per_cu), NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
|
cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
|
||||||
@@ -16442,7 +16443,8 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -16450,7 +16453,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
byte_stride_prop
|
byte_stride_prop
|
||||||
= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
|
= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
|
||||||
- stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
|
stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
|
||||||
+ stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
|
- prop_type);
|
||||||
+ NULL, 0);
|
+ prop_type, NULL, 0);
|
||||||
if (!stride_ok)
|
if (!stride_ok)
|
||||||
{
|
{
|
||||||
complaint (_("unable to read array DW_AT_byte_stride "
|
complaint (_("unable to read array DW_AT_byte_stride "
|
||||||
@@ -17200,29 +17202,90 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17208,29 +17211,90 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
||||||
struct type *type, *range_type, *index_type, *char_type;
|
struct type *type, *range_type, *index_type, *char_type;
|
||||||
struct attribute *attr;
|
struct attribute *attr;
|
||||||
@ -152,8 +153,8 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
+ /* Operand for DW_OP_deref_size. */
|
+ /* Operand for DW_OP_deref_size. */
|
||||||
+ (gdb_byte) DW_UNSND(byte_size) };
|
+ (gdb_byte) DW_UNSND(byte_size) };
|
||||||
+
|
+
|
||||||
+ if (!attr_to_dynamic_prop (attr, die, cu, &high, append_ops,
|
+ if (!attr_to_dynamic_prop (attr, die, cu, &high, index_type,
|
||||||
+ ARRAY_SIZE(append_ops)))
|
+ append_ops, ARRAY_SIZE(append_ops)))
|
||||||
+ complaint (_("Could not parse DW_AT_byte_size"));
|
+ complaint (_("Could not parse DW_AT_byte_size"));
|
||||||
+ }
|
+ }
|
||||||
+ else if (bit_size != NULL)
|
+ else if (bit_size != NULL)
|
||||||
@ -166,8 +167,8 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
+ const gdb_byte append_ops[] =
|
+ const gdb_byte append_ops[] =
|
||||||
+ { DW_OP_deref };
|
+ { DW_OP_deref };
|
||||||
+
|
+
|
||||||
+ if (!attr_to_dynamic_prop (attr, die, cu, &high, append_ops,
|
+ if (!attr_to_dynamic_prop (attr, die, cu, &high, index_type,
|
||||||
+ ARRAY_SIZE(append_ops)))
|
+ append_ops, ARRAY_SIZE(append_ops)))
|
||||||
+ complaint (_("Could not parse DW_AT_string_length"));
|
+ complaint (_("Could not parse DW_AT_string_length"));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -208,26 +209,20 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
char_type = language_string_char_type (cu->language_defn, gdbarch);
|
char_type = language_string_char_type (cu->language_defn, gdbarch);
|
||||||
type = create_string_type (NULL, char_type, range_type);
|
type = create_string_type (NULL, char_type, range_type);
|
||||||
|
|
||||||
@@ -17654,7 +17717,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17663,7 +17727,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
static int
|
static int
|
||||||
attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||||
- struct dwarf2_cu *cu, struct dynamic_prop *prop)
|
struct dwarf2_cu *cu, struct dynamic_prop *prop,
|
||||||
+ struct dwarf2_cu *cu, struct dynamic_prop *prop,
|
- struct type *default_type)
|
||||||
|
+ struct type *default_type,
|
||||||
+ const gdb_byte *additional_data, int additional_data_size)
|
+ const gdb_byte *additional_data, int additional_data_size)
|
||||||
{
|
{
|
||||||
struct dwarf2_property_baton *baton;
|
struct dwarf2_property_baton *baton;
|
||||||
struct obstack *obstack
|
struct obstack *obstack
|
||||||
@@ -17665,14 +17729,33 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
@@ -17682,9 +17747,30 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||||
|
baton->locexpr.size = DW_BLOCK (attr)->size;
|
||||||
if (attr_form_is_block (attr))
|
baton->locexpr.data = DW_BLOCK (attr)->data;
|
||||||
{
|
baton->locexpr.is_reference = false;
|
||||||
- baton = XOBNEW (obstack, struct dwarf2_property_baton);
|
|
||||||
+ baton = XOBNEW(obstack, struct dwarf2_property_baton);
|
|
||||||
baton->referenced_type = NULL;
|
|
||||||
baton->locexpr.per_cu = cu->per_cu;
|
|
||||||
- baton->locexpr.size = DW_BLOCK (attr)->size;
|
|
||||||
- baton->locexpr.data = DW_BLOCK (attr)->data;
|
|
||||||
+
|
+
|
||||||
+ if (additional_data != NULL && additional_data_size > 0)
|
+ if (additional_data != NULL && additional_data_size > 0)
|
||||||
+ {
|
+ {
|
||||||
@ -256,12 +251,13 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
}
|
}
|
||||||
else if (attr_form_is_ref (attr))
|
else if (attr_form_is_ref (attr))
|
||||||
{
|
{
|
||||||
@@ -17705,8 +17788,28 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
@@ -17717,9 +17803,29 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
|
||||||
baton = XOBNEW (obstack, struct dwarf2_property_baton);
|
baton = XOBNEW (obstack, struct dwarf2_property_baton);
|
||||||
baton->referenced_type = die_type (target_die, target_cu);
|
baton->property_type = die_type (target_die, target_cu);
|
||||||
baton->locexpr.per_cu = cu->per_cu;
|
baton->locexpr.per_cu = cu->per_cu;
|
||||||
- baton->locexpr.size = DW_BLOCK (target_attr)->size;
|
- baton->locexpr.size = DW_BLOCK (target_attr)->size;
|
||||||
- baton->locexpr.data = DW_BLOCK (target_attr)->data;
|
- baton->locexpr.data = DW_BLOCK (target_attr)->data;
|
||||||
|
baton->locexpr.is_reference = true;
|
||||||
+
|
+
|
||||||
+ if (additional_data != NULL && additional_data_size > 0)
|
+ if (additional_data != NULL && additional_data_size > 0)
|
||||||
+ {
|
+ {
|
||||||
@ -287,61 +283,62 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
|||||||
prop->data.baton = baton;
|
prop->data.baton = baton;
|
||||||
prop->kind = PROP_LOCEXPR;
|
prop->kind = PROP_LOCEXPR;
|
||||||
gdb_assert (prop->data.baton != NULL);
|
gdb_assert (prop->data.baton != NULL);
|
||||||
@@ -17817,7 +17920,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17889,7 +17995,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
|
attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
|
||||||
if (attr)
|
if (attr)
|
||||||
- if (!attr_to_dynamic_prop (attr, die, cu, &stride))
|
- if (!attr_to_dynamic_prop (attr, die, cu, &stride, base_type))
|
||||||
+ if (!attr_to_dynamic_prop (attr, die, cu, &stride, NULL, 0))
|
+ if (!attr_to_dynamic_prop (attr, die, cu, &stride, base_type,
|
||||||
|
+ NULL, 0))
|
||||||
complaint (_("Missing DW_AT_byte_stride "
|
complaint (_("Missing DW_AT_byte_stride "
|
||||||
"- DIE at 0x%s [in module %s]"),
|
"- DIE at 0x%s [in module %s]"),
|
||||||
sect_offset_str (die->sect_off),
|
sect_offset_str (die->sect_off),
|
||||||
@@ -17825,7 +17928,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17897,7 +18004,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
|
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
|
||||||
if (attr)
|
if (attr)
|
||||||
- attr_to_dynamic_prop (attr, die, cu, &low);
|
- attr_to_dynamic_prop (attr, die, cu, &low, base_type);
|
||||||
+ attr_to_dynamic_prop (attr, die, cu, &low, NULL, 0);
|
+ attr_to_dynamic_prop (attr, die, cu, &low, base_type, NULL, 0);
|
||||||
else if (!low_default_is_valid)
|
else if (!low_default_is_valid)
|
||||||
complaint (_("Missing DW_AT_lower_bound "
|
complaint (_("Missing DW_AT_lower_bound "
|
||||||
"- DIE at %s [in module %s]"),
|
"- DIE at %s [in module %s]"),
|
||||||
@@ -17834,10 +17937,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
@@ -17906,10 +18013,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
struct attribute *attr_ub, *attr_count;
|
struct attribute *attr_ub, *attr_count;
|
||||||
attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
|
attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
|
||||||
- if (!attr_to_dynamic_prop (attr, die, cu, &high))
|
- if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
|
||||||
+ if (!attr_to_dynamic_prop (attr, die, cu, &high, NULL, 0))
|
+ if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type, NULL, 0))
|
||||||
{
|
{
|
||||||
attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
|
attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
|
||||||
- if (attr_to_dynamic_prop (attr, die, cu, &high))
|
- if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
|
||||||
+ if (attr_to_dynamic_prop (attr, die, cu, &high, NULL, 0))
|
+ if (attr_to_dynamic_prop (attr, die, cu, &high, base_type, NULL, 0))
|
||||||
{
|
{
|
||||||
/* If bounds are constant do the final calculation here. */
|
/* If bounds are constant do the final calculation here. */
|
||||||
if (low.kind == PROP_CONST && high.kind == PROP_CONST)
|
if (low.kind == PROP_CONST && high.kind == PROP_CONST)
|
||||||
@@ -25505,7 +25608,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
@@ -25558,7 +25665,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))
|
|
||||||
{
|
{
|
||||||
- if (attr_to_dynamic_prop (attr, die, cu, &prop))
|
struct type *prop_type
|
||||||
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0))
|
= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
|
||||||
|
- if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
|
||||||
|
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type, NULL, 0))
|
||||||
add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
|
add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
|
||||||
}
|
}
|
||||||
else if (attr != NULL)
|
else if (attr != NULL)
|
||||||
@@ -25519,7 +25622,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
@@ -25574,7 +25681,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))
|
|
||||||
{
|
{
|
||||||
- if (attr_to_dynamic_prop (attr, die, cu, &prop))
|
struct type *prop_type
|
||||||
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0))
|
= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
|
||||||
|
- if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
|
||||||
|
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type, NULL, 0))
|
||||||
add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
|
add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
|
||||||
}
|
}
|
||||||
else if (attr != NULL)
|
else if (attr != NULL)
|
||||||
@@ -25531,7 +25634,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
@@ -25587,7 +25694,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||||
|
|
||||||
/* Read DW_AT_data_location and set in type. */
|
/* Read DW_AT_data_location and set in type. */
|
||||||
attr = dwarf2_attr (die, DW_AT_data_location, cu);
|
attr = dwarf2_attr (die, DW_AT_data_location, cu);
|
||||||
- if (attr_to_dynamic_prop (attr, die, cu, &prop))
|
if (attr_to_dynamic_prop (attr, die, cu, &prop,
|
||||||
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0))
|
- dwarf2_per_cu_addr_type (cu->per_cu)))
|
||||||
|
+ dwarf2_per_cu_addr_type (cu->per_cu), NULL, 0))
|
||||||
add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
|
add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
|
||||||
|
|
||||||
if (dwarf2_per_objfile->die_type_hash == NULL)
|
if (dwarf2_per_objfile->die_type_hash == NULL)
|
||||||
@ -404,7 +401,7 @@ diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
|
|||||||
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
||||||
--- a/gdb/gdbtypes.c
|
--- a/gdb/gdbtypes.c
|
||||||
+++ b/gdb/gdbtypes.c
|
+++ b/gdb/gdbtypes.c
|
||||||
@@ -1898,7 +1898,8 @@ is_dynamic_type_internal (struct type *type, int top_level)
|
@@ -1903,7 +1903,8 @@ is_dynamic_type_internal (struct type *type, int top_level)
|
||||||
type = check_typedef (type);
|
type = check_typedef (type);
|
||||||
|
|
||||||
/* We only want to recognize references at the outermost level. */
|
/* We only want to recognize references at the outermost level. */
|
||||||
@ -414,7 +411,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
type = check_typedef (TYPE_TARGET_TYPE (type));
|
type = check_typedef (TYPE_TARGET_TYPE (type));
|
||||||
|
|
||||||
/* Types that have a dynamic TYPE_DATA_LOCATION are considered
|
/* Types that have a dynamic TYPE_DATA_LOCATION are considered
|
||||||
@@ -1932,6 +1933,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
|
@@ -1937,6 +1938,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TYPE_CODE_ARRAY:
|
case TYPE_CODE_ARRAY:
|
||||||
@ -422,7 +419,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
{
|
{
|
||||||
gdb_assert (TYPE_NFIELDS (type) == 1);
|
gdb_assert (TYPE_NFIELDS (type) == 1);
|
||||||
|
|
||||||
@@ -2050,7 +2052,8 @@ resolve_dynamic_array (struct type *type,
|
@@ -2055,7 +2057,8 @@ resolve_dynamic_array (struct type *type,
|
||||||
struct dynamic_prop *prop;
|
struct dynamic_prop *prop;
|
||||||
unsigned int bit_stride = 0;
|
unsigned int bit_stride = 0;
|
||||||
|
|
||||||
@ -432,7 +429,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
|
|
||||||
type = copy_type (type);
|
type = copy_type (type);
|
||||||
|
|
||||||
@@ -2075,11 +2078,15 @@ resolve_dynamic_array (struct type *type,
|
@@ -2080,11 +2083,15 @@ resolve_dynamic_array (struct type *type,
|
||||||
|
|
||||||
ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
|
ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
|
||||||
|
|
||||||
@ -449,7 +446,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
|
prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
|
||||||
if (prop != NULL)
|
if (prop != NULL)
|
||||||
{
|
{
|
||||||
@@ -2234,6 +2241,28 @@ resolve_dynamic_struct (struct type *type,
|
@@ -2236,6 +2243,28 @@ resolve_dynamic_struct (struct type *type,
|
||||||
return resolved_type;
|
return resolved_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,7 +475,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
|||||||
/* Worker for resolved_dynamic_type. */
|
/* Worker for resolved_dynamic_type. */
|
||||||
|
|
||||||
static struct type *
|
static struct type *
|
||||||
@@ -2282,7 +2311,12 @@ resolve_dynamic_type_internal (struct type *type,
|
@@ -2284,7 +2313,12 @@ resolve_dynamic_type_internal (struct type *type,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -828,15 +825,6 @@ diff --git a/gdb/testsuite/gdb.fortran/print_type.exp b/gdb/testsuite/gdb.fortra
|
|||||||
}
|
}
|
||||||
-gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)"
|
-gdb_test "ptype realp" "type = PTR TO -> \\( $real \\)"
|
||||||
+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
|
|
||||||
@@ -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"
|
|
||||||
-gdb_test "ptype vla1" "type = $real \\(-2:1,-5:4,-3:-1\\)" "ptype vla1 negative bounds"
|
|
||||||
+gdb_test "ptype vla1" "type = $real, allocatable \\(-2:1,-5:4,-3:-1\\)" "ptype vla1 negative bounds"
|
|
||||||
diff --git a/gdb/testsuite/gdb.fortran/vla-strings.exp b/gdb/testsuite/gdb.fortran/vla-strings.exp
|
diff --git a/gdb/testsuite/gdb.fortran/vla-strings.exp b/gdb/testsuite/gdb.fortran/vla-strings.exp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@ -1093,7 +1081,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
|
|||||||
diff --git a/gdb/valprint.c b/gdb/valprint.c
|
diff --git a/gdb/valprint.c b/gdb/valprint.c
|
||||||
--- a/gdb/valprint.c
|
--- a/gdb/valprint.c
|
||||||
+++ b/gdb/valprint.c
|
+++ b/gdb/valprint.c
|
||||||
@@ -1143,12 +1143,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
|
@@ -1144,12 +1144,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
gdb.spec
7
gdb.spec
@ -27,7 +27,7 @@
|
|||||||
Name: %{?scl_prefix}gdb
|
Name: %{?scl_prefix}gdb
|
||||||
|
|
||||||
# Freeze it when GDB gets branched
|
# Freeze it when GDB gets branched
|
||||||
%global snapsrc 20190702
|
%global snapsrc 20190802
|
||||||
# See timestamp of source gnulib installed into gdb/gnulib/ .
|
# See timestamp of source gnulib installed into gdb/gnulib/ .
|
||||||
%global snapgnulib 20161115
|
%global snapgnulib 20161115
|
||||||
%global tarname gdb-%{version}
|
%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.
|
# 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.
|
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||||
Release: 20%{?dist}
|
Release: 21%{?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
|
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.
|
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
||||||
@ -1141,6 +1141,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Aug 2 2019 Sergio Durigan Junior <sergiodj@redhat.com> - 8.3.50.20190802-21
|
||||||
|
- Rebase to FSF GDB 8.3.50.20190802 (8.4pre).
|
||||||
|
|
||||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org>
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org>
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1,3 +1,3 @@
|
|||||||
SHA512 (gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz) = a8b1c54dd348cfeb37da73f968742896be3dd13a4215f8d8519870c2abea915f5176c3fa6989ddd10f20020a16f0fab20cbae68ee8d58a82234d8778023520f8
|
SHA512 (gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz) = a8b1c54dd348cfeb37da73f968742896be3dd13a4215f8d8519870c2abea915f5176c3fa6989ddd10f20020a16f0fab20cbae68ee8d58a82234d8778023520f8
|
||||||
SHA512 (v2.0.tar.gz) = ec63151e842c81cc73ea11ba560b63e005cefbe19d98de24ae5c8caa4de7c9c1d71d1ec5b6214a347592eac675b75a3d2b26d4691ca86f91020ebfea8e912939
|
SHA512 (v2.0.tar.gz) = ec63151e842c81cc73ea11ba560b63e005cefbe19d98de24ae5c8caa4de7c9c1d71d1ec5b6214a347592eac675b75a3d2b26d4691ca86f91020ebfea8e912939
|
||||||
SHA512 (gdb-8.3.50.20190702.tar.xz) = e36682601f5dc9ac1cd2bbdbfed45888046cf6df43231dc604271e63ca3609e9aabcca24b50c72146d7160855093497b1e217db34e0878a74c313524eb371d6f
|
SHA512 (gdb-8.3.50.20190802.tar.xz) = 464c06de734d7ea724e7a09b35044681872bc05162fc852c47c7eede51930ede655306a80f8518fc8e0845eee13525a48f033a3623f16b6b400eaf49b90b3ac7
|
||||||
|
Loading…
Reference in New Issue
Block a user