From 97a0c6972eb9eb730df3817a95f351545a8f7cac Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Sat, 21 Feb 2015 15:24:20 +0100 Subject: [PATCH] Testsuite patch for: i386: Fix internal error when prstatus in core file is too big gdb/testsuite/ChangeLog 2015-02-21 Jan Kratochvil PR corefiles/17808 * gdb.arch/i386-biarch-core.core.bz2: New file. * gdb.arch/i386-biarch-core.exp: New file. --- gdb/testsuite/ChangeLog | 6 ++ .../gdb.arch/i386-biarch-core.core.bz2 | Bin 0 -> 420 bytes gdb/testsuite/gdb.arch/i386-biarch-core.exp | 58 ++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 gdb/testsuite/gdb.arch/i386-biarch-core.core.bz2 create mode 100644 gdb/testsuite/gdb.arch/i386-biarch-core.exp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c64aeda9372..dbcc4f63020 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-02-21 Jan Kratochvil + + PR corefiles/17808 + * gdb.arch/i386-biarch-core.core.bz2: New file. + * gdb.arch/i386-biarch-core.exp: New file. + 2015-02-21 Pedro Alves * gdb.threads/multi-create-ns-info-thr.exp: Return early if diff --git a/gdb/testsuite/gdb.arch/i386-biarch-core.core.bz2 b/gdb/testsuite/gdb.arch/i386-biarch-core.core.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8b823f791d4dc4fa87c0b56138e8deaf8a898dda GIT binary patch literal 420 zcmV;V0bBk;T4*^jL0KkKSr9Ns%m4(J|NsC0@sZ#Oj7eJr*g$q*9ALmgNB{sJ02F`# zfB?V<7YMKcW(bCao`h3rsf{Mlq#IKqk)RDUGHpOc!QRZcn&KXoBCv}+xm_dY!FKfb z. + +# Test ability to load an elf64-i386 core file. The provided core file was +# elf64-x8664 one but it got binary patched to i386: +# Elf32_Ehdr.e_machine @0x12..0x13 +# Elf64_Ehdr.e_machine @0x12..0x13 +# #define EM_386 3 /* Intel 80386 */ +# #define EM_X86_64 62 /* AMD x86-64 architecture */ +# patch @0x12: 0x3E -> 0x03 + +standard_testfile + +if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then { + verbose "Skipping i386-biarch-core test." + return +} + +set corebz2file ${srcdir}/${subdir}/${testfile}.core.bz2 +set corefile ${objdir}/${subdir}/${testfile}.core +# Entry point of the original executable. +set address 0x400078 + +if {[catch "system \"bzip2 -dc ${corebz2file} >${corefile}\""] != 0} { + untested "failed bzip2" + return -1 +} +file stat ${corefile} corestat +if {$corestat(size) != 102400} { + untested "bzip2 produces invalid result" + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +# Wrongly built GDB complains by: +# "..." is not a core dump: File format not recognized +# As the provided test core has 64bit PRSTATUS i386 built GDB cannot parse it. +# This is just a problem of the test care, real-world elf64-i386 file will have +# 32bit PRSTATUS. One cannot prepare elf64-i386 core file from elf32-i386 by +# objcopy as it corrupts the core file beyond all recognition. +gdb_test "core-file ${corefile}" "\r\nwarning: Unexpected size of section `\\.reg/6901' in core file\\.\r\n.*Core was generated by `\[^\r\n\]*'\\.\r\nProgram terminated with signal SIGSEGV, Segmentation fault\\.\r\n.*" "core-file" + +gdb_test "x/i $address" "\r\n\[ \t\]*$address:\[ \t\]*hlt\[ \t\]*" ".text is readable"