Hello community,
here is the log from the commit of package gdb for openSUSE:Factory checked in at 2019-10-05 16:18:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gdb (Old)
and /work/SRC/openSUSE:Factory/.gdb.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gdb"
Sat Oct 5 16:18:05 2019 rev:131 rq:734351 version:8.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/gdb/gdb.changes 2019-09-19 15:51:14.735288380 +0200
+++ /work/SRC/openSUSE:Factory/.gdb.new.2352/gdb.changes 2019-10-05 16:19:07.341622030 +0200
@@ -1,0 +2,51 @@
+Mon Sep 30 10:34:54 UTC 2019 - Tom de Vries
+
+- Add gdb-testsuite-8.3-kfail-xfail-unsupported.patch
+
+-------------------------------------------------------------------
+Thu Sep 26 16:51:17 UTC 2019 - Tom de Vries
+
+- Drop ChangeLog part of patch:
+ * gdb-rhbz1708192-parse_macro_definition-crash.patch
+ * gdb-rhbz1704406-disable-style-log-output-1of3.patch
+ * gdb-rhbz1704406-disable-style-log-output-2of3.patch
+ * gdb-rhbz1704406-disable-style-log-output-3of3.patch
+ * gdb-rhbz1723564-gdb-crash-PYTHONMALLOC-debug.patch
+ * gdb-rhbz1553086-binutils-warning-loadable-section-outside-elf.patch
+- Update to gdb-8.3.1.
+ * Drop "Testsuite: Ensure pie is disabled on some tests" part of
+ gdb-testsuite-pie-no-pie.patch
+ * Drop patches included upstream:
+ - gdb-7.10-swo18929.patch
+ - gdb-handle-vfork-in-thread-with-follow-fork-mode-child.patch
+ - gdb-x86_64-i386-syscall-restart-master.patch
+ - gdb-suppress-sigttou-when-handling-errors.patch
+ - gdb-fix-breakpoints-on-file-reloads-for-pie-binaries.patch
+ - gdb-symtab-fix-symbol-loading-performance-regression.patch
+- Fix macro in comment warning
+
+-------------------------------------------------------------------
+Wed Sep 25 14:41:32 UTC 2019 - Tom de Vries
+
+- Upgrade libipt from v2.0 to v2.0.1.
+ * Use -DBUILD_SHARED_LIBS=OFF to build libipt.a, and drop part
+ of v1.5-libipt-static.patch that consequentially has become
+ unnecessary.
+
+-------------------------------------------------------------------
+Tue Sep 24 08:31:04 UTC 2019 - Tom de Vries
+
+- Sync with f30, merging 1e222a3..8bf40c6.
+ * gdb-rhbz1708192-parse_macro_definition-crash.patch
+ * gdb-rhbz1704406-disable-style-log-output-1of3.patch
+ * gdb-rhbz1704406-disable-style-log-output-2of3.patch
+ * gdb-rhbz1704406-disable-style-log-output-3of3.patch
+ * gdb-rhbz1723564-gdb-crash-PYTHONMALLOC-debug.patch
+ * gdb-rhbz1553086-binutils-warning-loadable-section-outside-elf.patch
+
+-------------------------------------------------------------------
+Sun Sep 22 05:54:09 UTC 2019 - Tom de Vries
+
+- Use ldd /usr/bin/rpm instead of ls /usr/%{_lib}/ to find librpm
+
+-------------------------------------------------------------------
Old:
----
gdb-7.10-swo18929.patch
gdb-8.3.tar.bz2
gdb-fix-breakpoints-on-file-reloads-for-pie-binaries.patch
gdb-handle-vfork-in-thread-with-follow-fork-mode-child.patch
gdb-suppress-sigttou-when-handling-errors.patch
gdb-symtab-fix-symbol-loading-performance-regression.patch
gdb-x86_64-i386-syscall-restart-master.patch
v2.0.tar.gz
New:
----
gdb-8.3.1.tar.bz2
gdb-rhbz1553086-binutils-warning-loadable-section-outside-elf.patch
gdb-rhbz1704406-disable-style-log-output-1of3.patch
gdb-rhbz1704406-disable-style-log-output-2of3.patch
gdb-rhbz1704406-disable-style-log-output-3of3.patch
gdb-rhbz1708192-parse_macro_definition-crash.patch
gdb-rhbz1723564-gdb-crash-PYTHONMALLOC-debug.patch
gdb-testsuite-8.3-kfail-xfail-unsupported.patch
v2.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gdb.spec ++++++
--- /var/tmp/diff_new_pack.jrrQZq/_old 2019-10-05 16:19:12.313609084 +0200
+++ /var/tmp/diff_new_pack.jrrQZq/_new 2019-10-05 16:19:12.321609063 +0200
@@ -13,7 +13,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
@@ -28,7 +28,7 @@
Group: Development/Tools/Debuggers
Name: gdb
-Version: 8.3
+Version: 8.3.1
Release: 0
# The release always contains a leading reserved number, start it at 1.
@@ -87,7 +87,7 @@
Source5: gdbinit.without-python
# libipt: Intel Processor Trace Decoder Library
-%global libipt_version 2.0
+%global libipt_version 2.0.1
Source7: v%{libipt_version}.tar.gz
# Infrastructure to sync patches from the Fedora rpm
@@ -211,6 +211,12 @@
Patch113: gdb-rhbz1553104-s390x-arch12-test.patch
Patch114: gdb-rhbz795424-bitpos-arrayview.patch
Patch115: gdb-rhbz1371380-gcore-elf-headers.patch
+Patch116: gdb-rhbz1708192-parse_macro_definition-crash.patch
+Patch117: gdb-rhbz1704406-disable-style-log-output-1of3.patch
+Patch118: gdb-rhbz1704406-disable-style-log-output-2of3.patch
+Patch119: gdb-rhbz1704406-disable-style-log-output-3of3.patch
+Patch120: gdb-rhbz1723564-gdb-crash-PYTHONMALLOC-debug.patch
+Patch121: gdb-rhbz1553086-binutils-warning-loadable-section-outside-elf.patch
#Fedora Packages end
#Fedora patches fixup
@@ -226,30 +232,21 @@
# Patches to upstream
-# Fixed upstream Wed, 29 May 2019, 4330d61dfb "Fix crash in
-# cp_print_value_fields". We should be able to drop this in 8.4.
-Patch1005: gdb-7.10-swo18929.patch
-
# Fixed upstream Sat, Jun 22 2019, 47e3f47487 "[gdb] Fix s390x -m31 build".
# We should be able to drop this in 8.4.
Patch1007: gdb-fix-s390-build.diff
# Backports from master
-Patch2000: gdb-handle-vfork-in-thread-with-follow-fork-mode-child.patch
Patch2001: gdb-fix-riscv-tdep.patch
-Patch2002: gdb-x86_64-i386-syscall-restart-master.patch
-Patch2003: gdb-suppress-sigttou-when-handling-errors.patch
Patch2004: gdb-testsuite-add-missing-initial-prompt-read-in-multidictionary.exp.patch
Patch2005: gdb-testsuite-pie-no-pie.patch
-Patch2006: gdb-fix-breakpoints-on-file-reloads-for-pie-binaries.patch
Patch2007: gdb-testsuite-read1-fixes.patch
Patch2008: gdb-testsuite-i386-pkru-exp.patch
-
-# Submitted for master
-
Patch2500: gdb-fix-heap-use-after-free-in-typename-concat.patch
-Patch2501: gdb-symtab-fix-symbol-loading-performance-regression.patch
+
+# Testsuite patches
+Patch2600: gdb-testsuite-8.3-kfail-xfail-unsupported.patch
# libipt support
Patch3000: v1.5-libipt-static.patch
@@ -566,6 +563,12 @@
%patch113 -p1
%patch114 -p1
%patch115 -p1
+%patch116 -p1
+%patch117 -p1
+%patch118 -p1
+%patch119 -p1
+%patch120 -p1
+%patch121 -p1
#Fedora patching end
%patch500 -p1
@@ -575,21 +578,17 @@
%patch1002 -p1
%patch1003 -p1
-%patch1005 -p1
%patch1007 -p1
-%patch2000 -p1
%patch2001 -p1
-%patch2002 -p1
-%patch2003 -p1
%patch2004 -p1
%patch2005 -p1
-%patch2006 -p1
%patch2007 -p1
%patch2008 -p1
%patch2500 -p1
-%patch2501 -p1
+
+%patch2600 -p1
#unpack libipt
%if 0%{have_libipt}
@@ -655,6 +654,7 @@
cd processor-trace-%{libipt_version}-build
# -DPTUNIT:BOOL=ON has no effect on ctest.
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DBUILD_SHARED_LIBS=OFF \
-DPTUNIT:BOOL=OFF \
-DDEVBUILD:BOOL=ON \
../../processor-trace-%{libipt_version}
@@ -669,12 +669,10 @@
export CXXFLAGS="$CFLAGS"
-export LIBRPM=$(ls -1 /usr/%{_lib}/ \
- | grep '^librpm.so.[0-9][0-9]*$' \
- | sort -V -r \
- | head -n 1)
+export LIBRPM=$(ldd /bin/rpm \
+ | grep librpm.so \
+ | awk '{print $3}')
if [ "$LIBRPM" != "" ]; then
- export LIBRPM="/usr/%{_lib}/$LIBRPM"
[ -f "$LIBRPM" ]
else
export LIBRPM=no
@@ -821,7 +819,7 @@
fi
# This is a build-time test, but still a test. So, skip if we don't do tests.
-# This is relevant for %qemu_user_space_build == 1 builds, which atm is
+# This is relevant for %%qemu_user_space_build == 1 builds, which atm is
# the case for riscv64.
%if %{with testsuite}
if [ "$LIBRPM" != "no" ]; then
++++++ gdb-8.3.tar.bz2 -> gdb-8.3.1.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/gdb/gdb-8.3.tar.bz2 /work/SRC/openSUSE:Factory/.gdb.new.2352/gdb-8.3.1.tar.bz2 differ: char 11, line 1
++++++ gdb-rhbz1553086-binutils-warning-loadable-section-outside-elf.patch ++++++
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Nick Clifton
Date: Tue, 2 Jul 2019 15:58:29 +0100
Subject: gdb-rhbz1553086-binutils-warning-loadable-section-outside-elf.patch
;; Fix 'gdb: warning: Loadable section ".note.gnu.property" outside of
;; ELF segments' (Nick Clifton, RH BZ 1553086).
;; This is a binutils patch.
Stop the BFD library from issuing a warning message when processing allocated sections in debuginfo files that lie outside of any loadable segment.
PR 24717
* elf.c (is_debuginfo_file): New function.
(assign_file_positions_for_non_load_sections): Do not warn about
allocated sections outside of loadable segments if they are found
in a debuginfo file.
* elf-bfd.h (is_debuginfo_file): Prototype.
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2751,6 +2751,8 @@ extern bfd_vma elf64_r_sym (bfd_vma);
extern bfd_vma elf32_r_info (bfd_vma, bfd_vma);
extern bfd_vma elf32_r_sym (bfd_vma);
+extern bfd_boolean is_debuginfo_file (bfd *);
+
/* Large common section. */
extern asection _bfd_elf_large_com_section;
diff --git a/bfd/elf.c b/bfd/elf.c
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -5800,6 +5800,35 @@ assign_file_positions_for_load_sections (bfd *abfd,
return TRUE;
}
+/* Determine if a bfd is a debuginfo file. Unfortunately there
+ is no defined method for detecting such files, so we have to
+ use heuristics instead. */
+
+bfd_boolean
+is_debuginfo_file (bfd *abfd)
+{
+ if (abfd == NULL || bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+ return FALSE;
+
+ Elf_Internal_Shdr **start_headers = elf_elfsections (abfd);
+ Elf_Internal_Shdr **end_headers = start_headers + elf_numsections (abfd);
+ Elf_Internal_Shdr **headerp;
+
+ for (headerp = start_headers; headerp < end_headers; headerp ++)
+ {
+ Elf_Internal_Shdr *header = * headerp;
+
+ /* Debuginfo files do not have any allocated SHT_PROGBITS sections.
+ The only allocated sections are SHT_NOBITS or SHT_NOTES. */
+ if ((header->sh_flags & SHF_ALLOC) == SHF_ALLOC
+ && header->sh_type != SHT_NOBITS
+ && header->sh_type != SHT_NOTE)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
/* Assign file positions for the other sections. */
static bfd_boolean
@@ -5833,7 +5862,13 @@ assign_file_positions_for_non_load_sections (bfd *abfd,
BFD_ASSERT (hdr->sh_offset == hdr->bfd_section->filepos);
else if ((hdr->sh_flags & SHF_ALLOC) != 0)
{
- if (hdr->sh_size != 0)
+ if (hdr->sh_size != 0
+ /* PR 24717 - debuginfo files are known to be not strictly
+ compliant with the ELF standard. In particular they often
+ have .note.gnu.property sections that are outside of any
+ loadable segment. This is not a problem for such files,
+ so do not warn about them. */
+ && ! is_debuginfo_file (abfd))
_bfd_error_handler
/* xgettext:c-format */
(_("%pB: warning: allocated section `%s' not in segment"),
++++++ gdb-rhbz1704406-disable-style-log-output-1of3.patch ++++++
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Tom Tromey
Date: Tue, 14 May 2019 08:04:22 -0600
Subject: gdb-rhbz1704406-disable-style-log-output-1of3.patch
;; Fix 'Color control codes should not appear in logging output'
;; Tom Tromey, RH BZ 1704406
Add "style" proc to the test suite
This adds a "style" helper proc to the test suite, and updates
existing style tests to use it. Thanks to Sergio for the idea.
Tested on x86-64 Fedora 29.
gdb/testsuite/ChangeLog
2019-05-22 Tom Tromey
* gdb.base/info-shared.exp (check_info_shared): Use "style".
* gdb.base/style.exp: Use "style".
* lib/gdb-utils.exp (style): New proc.
diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp
--- a/gdb/testsuite/gdb.base/style.exp
+++ b/gdb/testsuite/gdb.base/style.exp
@@ -41,10 +41,10 @@ save_vars { env(TERM) } {
gdb_test_no_output "set style enabled on"
- set main_expr "\033\\\[33mmain\033\\\[m"
- set base_file_expr "\033\\\[32m.*style\\.c\033\\\[m"
+ set main_expr [style main function]
+ set base_file_expr [style ".*style\\.c" file]
set file_expr "$base_file_expr:\[0-9\]"
- set arg_expr "\033\\\[36marg.\033\\\[m"
+ set arg_expr [style "arg." variable]
gdb_test "frame" \
"$main_expr.*$arg_expr.*$arg_expr.*$file_expr.*"
@@ -58,7 +58,7 @@ save_vars { env(TERM) } {
gdb_test "break main" "file $base_file_expr.*"
- gdb_test "print &main" " = .* \033\\\[34m$hex\033\\\[m <$main_expr>"
+ gdb_test "print &main" " = .* [style $hex address] <$main_expr>"
# Regression test for a bug where line-wrapping would occur at the
# wrong spot with styling. There were different bugs at different
@@ -86,11 +86,12 @@ save_vars { env(TERM) } {
gdb_exit
gdb_spawn
- gdb_test "" "\033\\\[35;1mGNU gdb.*\033\\\[m.*" \
+ set vers [style "GNU gdb.*" "35;1"]
+ gdb_test "" "${vers}.*" \
"version is styled"
set quoted [string_to_regexp $binfile]
gdb_test "file $binfile" \
- "Reading symbols from \033\\\[32m${quoted}\033\\\[m..." \
+ "Reading symbols from [style $quoted file]..." \
"filename is styled when loading symbol file"
}
diff --git a/gdb/testsuite/lib/gdb-utils.exp b/gdb/testsuite/lib/gdb-utils.exp
--- a/gdb/testsuite/lib/gdb-utils.exp
+++ b/gdb/testsuite/lib/gdb-utils.exp
@@ -37,3 +37,21 @@ proc string_to_regexp {str} {
regsub -all {[]*+.|(){}^$\[\\]} $str {\\&} result
return $result
}
+
+# Wrap STR in an ANSI terminal escape sequences -- one to set the
+# style to STYLE, and one to reset the style to the default. The
+# return value is suitable for use as a regular expression.
+
+# STYLE can either be the payload part of an ANSI terminal sequence,
+# or a shorthand for one of the gdb standard styles: "file",
+# "function", "variable", or "address".
+
+proc style {str style} {
+ switch -exact -- $style {
+ file { set style 32 }
+ function { set style 33 }
+ variable { set style 36 }
+ address { set style 34 }
+ }
+ return "\033\\\[${style}m${str}\033\\\[m"
+}
++++++ gdb-rhbz1704406-disable-style-log-output-2of3.patch ++++++
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Tom Tromey
Date: Tue, 30 Apr 2019 11:17:15 -0600
Subject: gdb-rhbz1704406-disable-style-log-output-2of3.patch
;; Fix 'Color control codes should not appear in logging output'
;; Tom Tromey, RH BZ 1704406
Do not emit style escape sequences to log file
PR gdb/24502 requests that the "set logging" log file not contain
style escape sequences emitted by gdb.
This seemed like a reasonable request to me, so this patch implements
filtering for the log file.
This also updates a comment in ui-style.h that I noticed while writing
the patch.
Tested on x86-64 Fedora 29.
gdb/ChangeLog
2019-06-14 Tom Tromey
PR gdb/24502:
* ui-style.h (skip_ansi_escape): Update comment.
* ui-file.h (class no_terminal_escape_file): New class.
* ui-file.c (no_terminal_escape_file::write)
(no_terminal_escape_file::puts): New methods.
* cli/cli-logging.c (handle_redirections): Use
no_terminal_escape_file.
gdb/testsuite/ChangeLog
2019-06-14 Tom Tromey
PR gdb/24502:
* gdb.base/style-logging.exp: New file.
diff --git a/gdb/cli/cli-logging.c b/gdb/cli/cli-logging.c
--- a/gdb/cli/cli-logging.c
+++ b/gdb/cli/cli-logging.c
@@ -117,7 +117,7 @@ handle_redirections (int from_tty)
return;
}
- stdio_file_up log (new stdio_file ());
+ stdio_file_up log (new no_terminal_escape_file ());
if (!log->open (logging_filename, logging_overwrite ? "w" : "a"))
perror_with_name (_("set logging"));
diff --git a/gdb/testsuite/gdb.base/style-logging.exp b/gdb/testsuite/gdb.base/style-logging.exp
new file mode 100644
--- /dev/null
+++ b/gdb/testsuite/gdb.base/style-logging.exp
@@ -0,0 +1,64 @@
+# 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/.
+
+# Test that logging does not style.
+
+if {[is_remote host]} {
+ untested "does not work on remote host"
+ return 0
+}
+
+standard_testfile style.c
+
+save_vars { env(TERM) } {
+ # We need an ANSI-capable terminal to get the output.
+ setenv TERM ansi
+
+ if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+ return -1
+ }
+
+ if {![runto_main]} {
+ fail "style tests failed"
+ return
+ }
+
+ gdb_test_no_output "set style enabled on"
+
+ set log_name [standard_output_file log.txt]
+ gdb_test_no_output "set logging file $log_name"
+ gdb_test_no_output "set logging overwrite on"
+ gdb_test "set logging on" "Copying output to .*"
+
+ set main_expr [style main function]
+ set base_file_expr [style ".*style\\.c" file]
+ set file_expr "$base_file_expr:\[0-9\]"
+ set arg_expr [style "arg." variable]
+ gdb_test "frame" \
+ "$main_expr.*$arg_expr.*$arg_expr.*$file_expr.*"
+
+ gdb_test "set logging off" "Done logging to .*"
+
+ set fd [open $log_name]
+ set data [read -nonewline $fd]
+ close $fd
+
+ set testname "log is escape-free"
+ if {[regexp "\033" $data]} {
+ fail $testname
+ } else {
+ pass $testname
+ }
+}
diff --git a/gdb/ui-file.c b/gdb/ui-file.c
--- a/gdb/ui-file.c
+++ b/gdb/ui-file.c
@@ -332,3 +332,33 @@ tee_file::isatty ()
{
return m_one->isatty ();
}
+
+void
+no_terminal_escape_file::write (const char *buf, long length_buf)
+{
+ std::string copy (buf, length_buf);
+ this->puts (copy.c_str ());
+}
+
+/* See ui-file.h. */
+
+void
+no_terminal_escape_file::puts (const char *buf)
+{
+ while (*buf != '\0')
+ {
+ const char *esc = strchr (buf, '\033');
+ if (esc == nullptr)
+ break;
+
+ int n_read = 0;
+ if (!skip_ansi_escape (esc, &n_read))
+ ++esc;
+
+ this->stdio_file::write (buf, esc - buf);
+ buf = esc + n_read;
+ }
+
+ if (*buf != '\0')
+ this->stdio_file::write (buf, strlen (buf));
+}
diff --git a/gdb/ui-file.h b/gdb/ui-file.h
--- a/gdb/ui-file.h
+++ b/gdb/ui-file.h
@@ -264,4 +264,20 @@ private:
bool m_close_one, m_close_two;
};
+/* A ui_file implementation that filters out terminal escape
+ sequences. */
+
+class no_terminal_escape_file : public stdio_file
+{
+public:
+ no_terminal_escape_file ()
+ {
+ }
+
+ /* Like the stdio_file methods, but these filter out terminal escape
+ sequences. */
+ void write (const char *buf, long length_buf) override;
+ void puts (const char *linebuffer) override;
+};
+
#endif
diff --git a/gdb/ui-style.h b/gdb/ui-style.h
--- a/gdb/ui-style.h
+++ b/gdb/ui-style.h
@@ -233,8 +233,8 @@ private:
/* Skip an ANSI escape sequence in BUF. BUF must begin with an ESC
character. Return true if an escape sequence was successfully
- skipped; false otherwise. In either case, N_READ is updated to
- reflect the number of chars read from BUF. */
+ skipped; false otherwise. If an escape sequence was skipped,
+ N_READ is updated to reflect the number of chars read from BUF. */
extern bool skip_ansi_escape (const char *buf, int *n_read);
++++++ gdb-rhbz1704406-disable-style-log-output-3of3.patch ++++++
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Andrew Burgess
Date: Fri, 14 Jun 2019 23:31:10 +0100
Subject: gdb-rhbz1704406-disable-style-log-output-3of3.patch
;; Fix 'Color control codes should not appear in logging output'
;; Tom Tromey, RH BZ 1704406
gdb: Remove file path from test name
Having paths in test names makes comparing sum files difficult, rename
a test to avoid paths in test names.
gdb/testsuite/ChangeLog:
* gdb.base/style-logging.exp: Remove path from test name.
diff --git a/gdb/testsuite/gdb.base/style-logging.exp b/gdb/testsuite/gdb.base/style-logging.exp
--- a/gdb/testsuite/gdb.base/style-logging.exp
+++ b/gdb/testsuite/gdb.base/style-logging.exp
@@ -38,7 +38,8 @@ save_vars { env(TERM) } {
gdb_test_no_output "set style enabled on"
set log_name [standard_output_file log.txt]
- gdb_test_no_output "set logging file $log_name"
+ gdb_test_no_output "set logging file $log_name" \
+ "set logging filename"
gdb_test_no_output "set logging overwrite on"
gdb_test "set logging on" "Copying output to .*"
++++++ gdb-rhbz1708192-parse_macro_definition-crash.patch ++++++
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Sergio Durigan Junior
Date: Fri, 10 May 2019 16:57:26 -0400
Subject: gdb-rhbz1708192-parse_macro_definition-crash.patch
;; "Fix" segfault that happens on parse_macro_definition because
;; debugedit corrupts the .debug_macro section.
;; Sergio Durigan Junior, RH BZ 1708192.
Don't crash if dwarf_decode_macro_bytes's 'body' is NULL
Hi,
Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
https://bugzilla.redhat.com/show_bug.cgi?id=1708786
During the Fedora RPM build process, gdb-add-index is invoked to
extract the DWARF index from the binary, and GDB will segfault because
dwarf2read.c:parse_definition_macro's 'body' variable is NULL.
The underlying problem is that Fedora's rpm-build's "debugedit"
program will silently corrupt .debug_macro strings when a binary is
compiled with -g3. This is being taken care of by Mark Wielaard,
here:
https://bugzilla.redhat.com/show_bug.cgi?id=1708786
However, I still feel it's important to make GDB more resilient
against invalid DWARF input, so I'm proposing this rather simple patch
to catch the situation when "body == NULL" (i.e., it's probably been
corrupted) and issue a complaint. This is not a real fix to the
problem, of course, but at least GDB is able to finish without
segfaulting.
OK for master?
gdb/ChangeLog:
2019-05-15 Sergio Durigan Junior
Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
* dwarf2read.c (dwarf_decode_macro_bytes): Check whether 'body' is
NULL, and complain if that's the case.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -24627,7 +24627,21 @@ dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
is_define ? _("definition") : _("undefinition"),
line == 0 ? _("zero") : _("non-zero"), line, body);
- if (is_define)
+ if (body == NULL)
+ {
+ /* Fedora's rpm-build's "debugedit" binary
+ corrupted .debug_macro sections.
+
+ For more info, see
+ https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
+ complaint (_("debug info gives %s invalid macro %s "
+ "without body (corrupted?) at line %d "
+ "on file %s"),
+ at_commandline ? _("command-line") : _("in-file"),
+ is_define ? _("definition") : _("undefinition"),
+ line, current_file->filename);
+ }
+ else if (is_define)
parse_macro_definition (current_file, line, body);
else
{
++++++ gdb-rhbz1723564-gdb-crash-PYTHONMALLOC-debug.patch ++++++
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Sergio Durigan Junior
Date: Thu, 27 Jun 2019 13:14:26 -0400
Subject: gdb-rhbz1723564-gdb-crash-PYTHONMALLOC-debug.patch
;; Fix 'gdb crash when using PYTHONMALLOC=debug on Python'
;; RHBZ 1723564, Sergio Durigan Junior.
Fix crash when using PYTHONMALLOC=debug (PR python/24742)
This bug was originally reported against Fedora GDB:
https://bugzilla.redhat.com/show_bug.cgi?id=1723564
The problem is that GDB will crash in the following scenario:
- PYTHONMALLOC=debug or PYTHONDEVMODE=1 is set.
- The Python debuginfo is installed.
- GDB is used to debug Python.
The crash looks like this:
$ PYTHONMALLOC=debug gdb -args python3 -c pass
GNU gdb (GDB) Fedora 8.3-3.fc30
Reading symbols from python3...
Reading symbols from /usr/lib/debug/usr/bin/python3.7m-3.7.3-3.fc30.x86_64.debug...
(gdb) run
Starting program: /usr/bin/python3 -c pass
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.29-9.fc30.x86_64
Debug memory block at address p=0x5603977bf330: API ''
8098648152243306496 bytes originally requested
The 7 pad bytes at p-7 are not all FORBIDDENBYTE (0xfb):
at p-7: 0x03 *** OUCH
at p-6: 0x00 *** OUCH
at p-5: 0x00 *** OUCH
at p-4: 0x00 *** OUCH
at p-3: 0x00 *** OUCH
at p-2: 0x00 *** OUCH
at p-1: 0x00 *** OUCH
Because memory is corrupted at the start, the count of bytes requested
may be bogus, and checking the trailing pad bytes may segfault.
The 8 pad bytes at tail=0x706483999ad1f330 are Segmentation fault (core dumped)
It's hard to determine what happens, but after doing some
investigation and talking to Victor Stinner I found that GDB should
not use the Python memory allocation functions before the Python
interpreter is initialized (which makes sense). However, we do just
that on python/python.c:do_start_initialization:
...
progsize = strlen (progname.get ());
progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
...
/* Note that Py_SetProgramName expects the string it is passed to
remain alive for the duration of the program's execution, so
it is not freed after this call. */
Py_SetProgramName (progname_copy);
...
Py_Initialize ();
PyEval_InitThreads ();
Upon reading the Python 3 C API documentation, I
found (https://docs.python.org/3.5/c-api/memory.html):
To avoid memory corruption, extension writers should never try to
operate on Python objects with the functions exported by the C
library: malloc(), calloc(), realloc() and free(). This will result in
mixed calls between the C allocator and the Python memory manager with
fatal consequences, because they implement different algorithms and
operate on different heaps. However, one may safely allocate and
release memory blocks with the C library allocator for individual
purposes[...]
And Py_SetProgramName seems like a very simple call that doesn't need
a Python-allocated memory to work on. So I'm proposing this patch,
which simply replaces PyMem_Malloc by xmalloc.
Testing this is more complicated. First, the crash is completely
non-deterministic; I was able to reproduce it 10 times in a row, and
then I wasn't able to reproduce it anymore. I found that if you
completely remove your build directory and rebuild GDB from scratch,
you can reproduce it again confidently. And with my patch, I
confirmed that the bug doesn't manifest even in this situation.
No regressions found.
OK to apply?
gdb/ChangeLog:
2019-06-28 Sergio Durigan Junior
PR python/24742
https://bugzilla.redhat.com/show_bug.cgi?id=1723564
* python/python.c (do_start_initialization): Use 'xmalloc'
instead of 'PyMem_Malloc'.
diff --git a/gdb/python/python.c b/gdb/python/python.c
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -1720,7 +1720,7 @@ do_start_initialization ()
std::string oldloc = setlocale (LC_ALL, NULL);
setlocale (LC_ALL, "");
progsize = strlen (progname.get ());
- progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t));
+ progname_copy = (wchar_t *) xmalloc ((progsize + 1) * sizeof (wchar_t));
if (!progname_copy)
{
fprintf (stderr, "out of memory\n");
++++++ gdb-testsuite-8.3-kfail-xfail-unsupported.patch ++++++
++++ 948 lines (skipped)
++++++ gdb-testsuite-pie-no-pie.patch ++++++
--- /var/tmp/diff_new_pack.jrrQZq/_old 2019-10-05 16:19:12.705608063 +0200
+++ /var/tmp/diff_new_pack.jrrQZq/_new 2019-10-05 16:19:12.705608063 +0200
@@ -1,4 +1,3 @@
-- Testsuite: Ensure pie is disabled on some tests
- Testsuite: Remove pie from trace tests
- [gdb/testsuite] Fail in gdb_compile if nopie results in PIE executable
- [gdb/testsuite] Fail in gdb_compile if pie results in non-PIE executable
@@ -107,130 +106,6 @@
---------------------------------------------------------
-Testsuite: Ensure pie is disabled on some tests
-
-Recent versions of Ubuntu and Debian default GCC to enable pie.
-
-In dump.exp, pie will causes addresses to be out of range for IHEX.
-
-In break-interp.exp, pie is explicitly set for some tests and assumed
-to be disabled for the remainder.
-
-Ensure pie is disabled for these tests when required.
-
-In addition, add a pie option to gdb_compile to match the nopie option
-and simplify use.
-
-gdb/testsuite/ChangeLog:
-
- * README: Add pie options.
- * gdb.base/break-interp.exp: Ensure pie is disabled.
- * gdb.base/dump.exp: Likewise.
- * lib/gdb.exp (gdb_compile): Add pie option.
-
----------------------------------------------------------
-
-diff --git a/gdb/testsuite/README b/gdb/testsuite/README
-index b5e75b9a79..db90ea4698 100644
---- a/gdb/testsuite/README
-+++ b/gdb/testsuite/README
-@@ -482,6 +482,16 @@ gdb,no_thread_names
-
- The target doesn't support thread names.
-
-+gdb,pie_flag
-+
-+ The flag required to force the compiler to produce position-independent
-+ executables.
-+
-+gdb,pie_ldflag
-+
-+ The flag required to force the linker to produce position-independent
-+ executables.
-+
- gdb,nopie_flag
-
- The flag required to force the compiler to produce non-position-independent
-diff --git a/gdb/testsuite/gdb.base/break-interp.exp b/gdb/testsuite/gdb.base/break-interp.exp
-index f85e8a650a..51e31f6503 100644
---- a/gdb/testsuite/gdb.base/break-interp.exp
-+++ b/gdb/testsuite/gdb.base/break-interp.exp
-@@ -625,8 +625,10 @@ foreach ldprelink {NO YES} {
- lappend opts {debug}
- }
- if {$binpie != "NO"} {
-- lappend opts {additional_flags=-fPIE}
-- lappend opts {ldflags=-pie}
-+ lappend opts {pie}
-+ } else {
-+ # Debian9/Ubuntu16.10 onwards default to PIE enabled. Ensure it is disabled.
-+ lappend opts {nopie}
- }
-
- set dir ${exec}.d
-diff --git a/gdb/testsuite/gdb.base/dump.exp b/gdb/testsuite/gdb.base/dump.exp
-index 44b0988b80..52ba5f8ebe 100644
---- a/gdb/testsuite/gdb.base/dump.exp
-+++ b/gdb/testsuite/gdb.base/dump.exp
-@@ -36,6 +36,10 @@ if {[istarget "spu*-*-*"]} then {
- set is64bitonly "yes"
- }
-
-+# Debian9/Ubuntu16.10 onwards default to PIE enabled. Ensure it is disabled as
-+# this causes addresses to be out of range for IHEX.
-+lappend options {nopie}
-+
- if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable ${options}] != "" } {
- untested "failed to compile"
- return -1
-diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
-index 36f167336c..3d5f8726f7 100644
---- a/gdb/testsuite/lib/gdb.exp
-+++ b/gdb/testsuite/lib/gdb.exp
-@@ -3492,6 +3492,7 @@ set gdb_saved_set_unbuffered_mode_obj ""
- # dynamically load libraries at runtime. For example, on Linux, this adds
- # -ldl so that the test can use dlopen.
- # - nowarnings: Inhibit all compiler warnings.
-+# - pie: Force creation of PIE executables.
- # - nopie: Prevent creation of PIE executables.
- #
- # And here are some of the not too obscure options understood by DejaGnu that
-@@ -3630,8 +3631,33 @@ proc gdb_compile {source dest type options} {
- set options [lreplace $options $nowarnings $nowarnings $flag]
- }
-
-- # Replace the "nopie" option with the appropriate additional_flags
-- # to disable PIE executables.
-+ # Replace the "pie" option with the appropriate compiler and linker flags
-+ # to enable PIE executables.
-+ set pie [lsearch -exact $options pie]
-+ if {$pie != -1} {
-+ if [target_info exists gdb,pie_flag] {
-+ set flag "additional_flags=[target_info gdb,pie_flag]"
-+ } else {
-+ # For safety, use fPIE rather than fpie. On AArch64, m68k, PowerPC
-+ # and SPARC, fpie can cause compile errors due to the GOT exceeding
-+ # a maximum size. On other architectures the two flags are
-+ # identical (see the GCC manual). Note Debian9 and Ubuntu16.10
-+ # onwards default GCC to using fPIE. If you do require fpie, then
-+ # it can be set using the pie_flag.
-+ set flag "additional_flags=-fPIE"
-+ }
-+ set options [lreplace $options $pie $pie $flag]
-+
-+ if [target_info exists gdb,pie_ldflag] {
-+ set flag "ldflags=[target_info gdb,pie_ldflag]"
-+ } else {
-+ set flag "ldflags=-pie"
-+ }
-+ lappend options "$flag"
-+ }
-+
-+ # Replace the "nopie" option with the appropriate linker flag to disable
-+ # PIE executables. There are no compiler flags for this option.
- set nopie [lsearch -exact $options nopie]
- if {$nopie != -1} {
- if [target_info exists gdb,nopie_flag] {
diff --git a/gdb/testsuite/gdb.trace/backtrace.exp b/gdb/testsuite/gdb.trace/backtrace.exp
index 0f60153cb5..24e097135f 100644
--- a/gdb/testsuite/gdb.trace/backtrace.exp
++++++ v1.5-libipt-static.patch ++++++
--- /var/tmp/diff_new_pack.jrrQZq/_old 2019-10-05 16:19:12.769607897 +0200
+++ /var/tmp/diff_new_pack.jrrQZq/_new 2019-10-05 16:19:12.769607897 +0200
@@ -1,14 +1,3 @@
---- processor-trace-1.5/libipt/CMakeLists.txt-orig 2016-04-07 08:52:14.000000000 +0200
-+++ processor-trace-1.5/libipt/CMakeLists.txt 2016-08-17 23:12:23.241109244 +0200
-@@ -81,7 +81,7 @@ endif (CMAKE_HOST_WIN32)
-
- set(LIBIPT_FILES ${LIBIPT_FILES} ${LIBIPT_SECTION_FILES})
-
--add_library(libipt SHARED
-+add_library(libipt STATIC
- ${LIBIPT_FILES}
- )
-
--- processor-trace-1.5/libipt/src/posix/init.c-orig 2016-04-07 08:52:14.000000000 +0200
+++ processor-trace-1.5/libipt/src/posix/init.c 2016-08-23 09:04:11.540176668 +0200
@@ -29,7 +29,7 @@
++++++ v2.0.tar.gz -> v2.0.1.tar.gz ++++++
++++ 4450 lines of diff (skipped)