aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2016-10-24 14:13:51 +0200
committerJan Kratochvil <jan.kratochvil@redhat.com>2016-10-24 14:13:51 +0200
commitb8d38ee4250fb6ad001c2f03fa2cef8c2bc06b57 (patch)
tree748338dcce2f8ba82886b9204f375b96ebc054fc /gdb/testsuite
parentcb93dc7f262978bafe36397a41a56e409a302042 (diff)
downloadgdb-b8d38ee4250fb6ad001c2f03fa2cef8c2bc06b57.zip
gdb-b8d38ee4250fb6ad001c2f03fa2cef8c2bc06b57.tar.gz
gdb-b8d38ee4250fb6ad001c2f03fa2cef8c2bc06b57.tar.bz2
testsuite: Fix false FAIL for gdb.base/morestack.exp
Since [commit] [testsuite patch] Fix gcc_compiled for gcc 6 & 7 https://sourceware.org/ml/gdb-patches/2016-10/msg00620.html there has started running again Running gdb/testsuite/gdb.base/morestack.exp ... +FAIL: gdb.base/morestack.exp: continue +PASS: gdb.base/morestack.exp: up 3000 but as you can see it FAILs now - on Fedora 24 x86_64 (although for example it still PASSes on CentOS-7.2 x86_64). Program received signal SIGSEGV, Segmentation fault. 0x00007ffff787c7bb in malloc_consolidate (av=av@entry=0x7ffff7bbcb00 <main_arena>) at malloc.c:4181 4181 unlink(av, nextchunk, bck, fwd); (gdb) bt [...] [...] This apparently is due to - man gcc - -fsplit-stack: When code compiled with -fsplit-stack calls code compiled without -fsplit-stack, there may not be much stack space available for the latter code to run. If compiling all code, including library code, with -fsplit-stack is not an option, then the linker can fix up these calls so that the code compiled without -fsplit-stack always has a large stack. Support for this is implemented in the gold linker in GNU binutils release 2.21 and later. gdb/testsuite/ChangeLog 2016-10-24 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.base/morestack.exp: Try to build it using -fuse-ld=gold first.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.base/morestack.exp6
2 files changed, 9 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c8709b7..460e6b9 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2016-10-24 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.base/morestack.exp: Try to build it using -fuse-ld=gold first.
+
2016-10-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* lib/gdb.exp (get_compiler_info): Generalize gcc_compile regexp.
diff --git a/gdb/testsuite/gdb.base/morestack.exp b/gdb/testsuite/gdb.base/morestack.exp
index 12f5d28..fb9bbf3 100644
--- a/gdb/testsuite/gdb.base/morestack.exp
+++ b/gdb/testsuite/gdb.base/morestack.exp
@@ -23,7 +23,11 @@ if {$gcc_compiled == 0} {
standard_testfile
-if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile {additional_flags=-fsplit-stack}] } {
+# -fuse-ld=gold is used for calling printf code built without -fsplit-stack
+# which could crash otherwise. See GCC documentation of -fsplit-stack.
+set opts "additional_flags=-fsplit-stack"
+if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile [list $opts additional_flags=-fuse-ld=gold]] \
+ && [prepare_for_testing ${testfile}.exp ${testfile} $srcfile $opts] } {
return -1
}