- Provide testcase for accessing the last address space byte.

- Related: rhbz#210614
This commit is contained in:
Jan Kratochvil 2006-11-16 00:01:56 +00:00
parent 03e2cd36ed
commit 509b0ab1f9
2 changed files with 62 additions and 1 deletions

View File

@ -0,0 +1,56 @@
Index: gdb/testsuite/gdb.base/largecore-last-address-lock.exp
===================================================================
RCS file: gdb/testsuite/gdb.base/largecore-last-address-lock.exp
diff -N gdb/testsuite/gdb.base/largecore-last-address-lock.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb/testsuite/gdb.base/largecore-last-address-lock.exp 15 Nov 2006 21:43:24 -0000
@@ -0,0 +1,49 @@
+# Copyright 2006 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+# Get things started.
+
+gdb_exit
+gdb_start
+
+# i386 (32-bit) only: gdb with Red Hat largecore patch did lock up:
+# https://enterprise.redhat.com/issue-tracker/?module=issues&action=view&tid=103263
+# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=210614
+
+# i386: Bug exists when the `target_xfer_memory' condition
+# `(memaddr + len < region->hi)' operates on 64-bit operands on
+# largecore-patched with 32-bit addresses and so it can get `false' with
+# arbitrary `len'.
+
+# x86_64: The bug is not present as the operands and calculations have the same
+# bit size. Would would still need to pass there the highest address
+# (`memaddr == 0xffffffffffffffff') but we would need to pass `len == 0'
+# to make the condition `(memaddr + len < region->hi)' false.
+# `len == 0' would get caught eariler.
+
+# Error in the success case is immediate.
+set timeoutold ${timeout}
+set timeout 10
+
+gdb_test "x/xb 0xffffffff" \
+ "Cannot access memory at address 0xffffffff" \
+ "Read the last address space byte"
+
+set timeout ${timeoutold}

View File

@ -11,7 +11,7 @@ Name: gdb
Version: 6.5
# The release always contains a leading reserved number, start it at 0.
Release: 15%{?dist}
Release: 16%{?dist}
License: GPL
Group: Development/Debuggers
@ -285,6 +285,7 @@ Patch201: gdb-6.5-gcore-i386-on-amd64.patch
# Fix deadlock accessing last address space byte; for corrupted backtraces.
Patch203: gdb-6.5-last-address-space-byte.patch
Patch211: gdb-6.5-last-address-space-byte-test.patch
# Fix "??" resolving of symbols from (non-prelinked) debuginfo packages.
# "gdb-6.5-matching_bfd_sections.patch" is a prerequisited CVS backport.
@ -418,6 +419,7 @@ and printing their data.
%patch207 -p1
%patch208 -p1
%patch209 -p1
%patch211 -p1
# Change the version that gets printed at GDB startup, so it is RedHat
# specific.
@ -580,6 +582,9 @@ fi
# don't include the files in include, they are part of binutils
%changelog
* Wed Nov 16 2006 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.5-16
- Provide testcase for accessing the last address space byte.
* Wed Nov 9 2006 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.5-15
- Fix readline segfault on excessively long hand-typed lines.