From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 From: Fedora GDB patches Date: Fri, 27 Oct 2017 21:07:50 +0200 Subject: gdb-6.5-last-address-space-byte-test.patch ;; Testcase for deadlocking on last address space byte; for corrupted backtraces. ;;=fedoratest diff --git a/gdb/testsuite/gdb.base/largecore-last-address-lock.exp b/gdb/testsuite/gdb.base/largecore-last-address-lock.exp new file mode 100644 --- /dev/null +++ b/gdb/testsuite/gdb.base/largecore-last-address-lock.exp @@ -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}