diff --git a/gdb-6.6-bz230000-power6-disassembly-test.patch b/gdb-6.6-bz230000-power6-disassembly-test.patch index 192522d..1ebf31b 100644 --- a/gdb-6.6-bz230000-power6-disassembly-test.patch +++ b/gdb-6.6-bz230000-power6-disassembly-test.patch @@ -7,7 +7,7 @@ requires too recent GCC. --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ./gdb/testsuite/gdb.arch/powerpc-power6.exp 25 Feb 2007 18:27:39 -0000 -@@ -0,0 +1,44 @@ +@@ -0,0 +1,54 @@ +# Copyright 2007 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify @@ -50,14 +50,34 @@ requires too recent GCC. + +gdb_test "disass func" ":\tblr\r\n.*" "Basic disassembly" + -+gdb_test "disass func" ":\tdcbzl *r8,r9\r\n.*" "Power6 disassembly 1" -+gdb_test "disass func" ":\tfrsqrtes *f10,f11\r\n.*" "Power6 disassembly 2" ++gdb_test "disass func" ":\tdcbzl *r8,r9\r\n.*" "Power5 disassembly dcbzl" ++gdb_test "disass func" ":\tfrsqrtes *f10,f11\r\n.*" "Power5 disassembly frsqrtes" ++gdb_test "disass func" ":\tdadd *f1,f2,f1\r\n.*" "Power6 disassembly dadd" ++gdb_test "disass func" ":\tdaddq *f1,f2,f1\r\n.*" "Power6 disassembly daddq" ++gdb_test "disass func" ":\tdsub *f1,f2,f1\r\n.*" "Power6 disassembly dsub" ++gdb_test "disass func" ":\tdsubq *f1,f2,f1\r\n.*" "Power6 disassembly dsubq" ++gdb_test "disass func" ":\tdmul *f1,f2,f1\r\n.*" "Power6 disassembly dmul" ++gdb_test "disass func" ":\tdmulq *f1,f2,f1\r\n.*" "Power6 disassembly dmulq" ++gdb_test "disass func" ":\tddiv *f1,f2,f1\r\n.*" "Power6 disassembly ddiv" ++gdb_test "disass func" ":\tddivq *f1,f2,f1\r\n.*" "Power6 disassembly ddivq" ++gdb_test "disass func" ":\tdcmpu *cr1,f2,f1\r\n.*" "Power6 disassembly dcmpu" ++gdb_test "disass func" ":\tdcmpuq *cr1,f2,f1\r\n.*" "Power6 disassembly dcmpuq" --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ./gdb/testsuite/gdb.arch/powerpc-power6.s 25 Feb 2007 18:27:39 -0000 -@@ -0,0 +1,6 @@ +@@ -0,0 +1,16 @@ + .text + .globl func +func: + blr -+ .long 0x7c284fec -+ .long 0xed405834 ++ .long 0x7c284fec /* dcbzl r8,r9 */ ++ .long 0xed405834 /* frsqrtes f10,f11 */ ++ .long 0xec220804 /* dadd f1,f2,f1 */ ++ .long 0xfc220804 /* daddq f1,f2,f1 */ ++ .long 0xec220c04 /* dsub f1,f2,f1 */ ++ .long 0xfc220c04 /* dsubq f1,f2,f1 */ ++ .long 0xec220844 /* dmul f1,f2,f1 */ ++ .long 0xfc220844 /* dmulq f1,f2,f1 */ ++ .long 0xec220c44 /* ddiv f1,f2,f1 */ ++ .long 0xfc220c44 /* ddivq f1,f2,f1 */ ++ .long 0xec820d04 /* dcmpu cr1,f2,f1 */ ++ .long 0xfc820d04 /* dcmpuq cr1,f2,f1 */ diff --git a/gdb-6.6-testsuite-timeouts.patch b/gdb-6.6-testsuite-timeouts.patch new file mode 100644 index 0000000..7206323 --- /dev/null +++ b/gdb-6.6-testsuite-timeouts.patch @@ -0,0 +1,42 @@ +--- ./gdb/testsuite/gdb.base/annota1.exp 10 Jan 2007 03:23:04 -0000 1.23 ++++ ./gdb/testsuite/gdb.base/annota1.exp 10 May 2007 12:54:11 -0000 +@@ -57,6 +57,8 @@ if [target_info exists gdb_stub] { + gdb_step_for_stub; + } + ++gdb_test "set breakpoint pending off" "" "Avoid lockup on nonexisting functions" ++ + # + # the line at which break main will put the breakpoint + # +--- ./gdb/testsuite/gdb.base/annota3.exp 9 Jan 2007 17:59:09 -0000 1.12 ++++ ./gdb/testsuite/gdb.base/annota3.exp 10 May 2007 12:54:11 -0000 +@@ -56,6 +56,8 @@ if [target_info exists gdb_stub] { + gdb_step_for_stub; + } + ++gdb_test "set breakpoint pending off" "" "Avoid lockup on nonexisting functions" ++ + # + # the line at which break main will put the breakpoint + # +--- gdb-6.6/gdb/testsuite/gdb.threads/step-thread-exit.exp-orig 2007-05-10 15:03:15.000000000 +0200 ++++ gdb-6.6/gdb/testsuite/gdb.threads/step-thread-exit.exp 2007-05-10 15:04:24.000000000 +0200 +@@ -58,6 +58,9 @@ gdb_test "continue" "Break.*thread_funct + # thread to be stopped and a message printed to tell us we have stepped + # over the thread exit. + set test "step over thread exit 1" ++# ppc64 is currently failing: ++set timeout_old $timeout ++set timeout 60 + gdb_test_multiple "next" "$test" { + -re "\}.*$gdb_prompt $" { + send_gdb "next\n" +@@ -71,6 +74,7 @@ gdb_test_multiple "next" "$test" { + exp_continue + } + } ++set timeout $timeout_old + + gdb_test "bt" ".*sleep.*main.*$sleep_line.*" "backtrace after step 1" + diff --git a/gdb-6.6-upstream.patch b/gdb-6.6-upstream.patch index 886f92b..e90333f 100644 --- a/gdb-6.6-upstream.patch +++ b/gdb-6.6-upstream.patch @@ -738,3 +738,147 @@ instructions that take RMC operands. -- Alan Modra IBM OzLabs - Linux Technology Centre + + + +2007-05-14 Paul Brook + Daniel Jacobowitz + + * dwarf2read.c (dwarf2_debug_line_missing_file_complaint): New + function. + (dwarf_decode_lines): Check for line info without a file. + +--- src/gdb/dwarf2read.c 2007/04/18 13:25:04 1.218 ++++ src/gdb/dwarf2read.c 2007/05/14 17:15:20 1.219 +@@ -688,6 +688,13 @@ + } + + static void ++dwarf2_debug_line_missing_file_complaint (void) ++{ ++ complaint (&symfile_complaints, ++ _(".debug_line section has line data without a file")); ++} ++ ++static void + dwarf2_complex_location_expr_complaint (void) + { + complaint (&symfile_complaints, _("location expression too complex")); +@@ -6708,19 +6715,24 @@ + address += (adj_opcode / lh->line_range) + * lh->minimum_instruction_length; + line += lh->line_base + (adj_opcode % lh->line_range); +- lh->file_names[file - 1].included_p = 1; +- if (!decode_for_pst_p) +- { +- if (last_subfile != current_subfile) +- { +- if (last_subfile) +- record_line (last_subfile, 0, address); +- last_subfile = current_subfile; ++ if (lh->num_file_names < file) ++ dwarf2_debug_line_missing_file_complaint (); ++ else ++ { ++ lh->file_names[file - 1].included_p = 1; ++ if (!decode_for_pst_p) ++ { ++ if (last_subfile != current_subfile) ++ { ++ if (last_subfile) ++ record_line (last_subfile, 0, address); ++ last_subfile = current_subfile; ++ } ++ /* Append row to matrix using current values. */ ++ record_line (current_subfile, line, ++ check_cu_functions (address, cu)); + } +- /* Append row to matrix using current values. */ +- record_line (current_subfile, line, +- check_cu_functions (address, cu)); +- } ++ } + basic_block = 1; + } + else switch (op_code) +@@ -6734,9 +6746,15 @@ + { + case DW_LNE_end_sequence: + end_sequence = 1; +- lh->file_names[file - 1].included_p = 1; +- if (!decode_for_pst_p) +- record_line (current_subfile, 0, address); ++ ++ if (lh->num_file_names < file) ++ dwarf2_debug_line_missing_file_complaint (); ++ else ++ { ++ lh->file_names[file - 1].included_p = 1; ++ if (!decode_for_pst_p) ++ record_line (current_subfile, 0, address); ++ } + break; + case DW_LNE_set_address: + address = read_address (abfd, line_ptr, cu, &bytes_read); +@@ -6769,17 +6787,22 @@ + } + break; + case DW_LNS_copy: +- lh->file_names[file - 1].included_p = 1; +- if (!decode_for_pst_p) ++ if (lh->num_file_names < file) ++ dwarf2_debug_line_missing_file_complaint (); ++ else + { +- if (last_subfile != current_subfile) +- { +- if (last_subfile) +- record_line (last_subfile, 0, address); +- last_subfile = current_subfile; +- } +- record_line (current_subfile, line, +- check_cu_functions (address, cu)); ++ lh->file_names[file - 1].included_p = 1; ++ if (!decode_for_pst_p) ++ { ++ if (last_subfile != current_subfile) ++ { ++ if (last_subfile) ++ record_line (last_subfile, 0, address); ++ last_subfile = current_subfile; ++ } ++ record_line (current_subfile, line, ++ check_cu_functions (address, cu)); ++ } + } + basic_block = 0; + break; +@@ -6806,15 +6806,19 @@ dwarf_decode_lines (struct line_header * + + file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + line_ptr += bytes_read; +- fe = &lh->file_names[file - 1]; +- if (fe->dir_index) +- dir = lh->include_dirs[fe->dir_index - 1]; +- +- if (!decode_for_pst_p) +- { +- last_subfile = current_subfile; +- dwarf2_start_subfile (fe->name, dir, comp_dir, file); +- } ++ if (lh->num_file_names < file) ++ dwarf2_debug_line_missing_file_complaint (); ++ else ++ { ++ fe = &lh->file_names[file - 1]; ++ if (fe->dir_index) ++ dir = lh->include_dirs[fe->dir_index - 1]; ++ if (!decode_for_pst_p) ++ { ++ last_subfile = current_subfile; ++ dwarf2_start_subfile (fe->name, dir, comp_dir, file); ++ } ++ } + } + break; + case DW_LNS_set_column: diff --git a/gdb.spec b/gdb.spec index cb3c862..0df1007 100644 --- a/gdb.spec +++ b/gdb.spec @@ -11,7 +11,7 @@ Name: gdb Version: 6.6 # The release always contains a leading reserved number, start it at 1. -Release: 14%{?dist} +Release: 15%{?dist} License: GPL Group: Development/Debuggers @@ -347,6 +347,9 @@ Patch249: gdb-6.6-gcore32-test.patch # Enable PowerPC to print 128-bit long double variables (BZ 237872). Patch251: gdb-6.5-bz237872-ppc-long-double.patch +# Avoid too long timeouts on failing cases of "annota1.exp annota3.exp". +Patch254: gdb-6.6-testsuite-timeouts.patch + BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext BuildRequires: flex bison sharutils expat-devel @@ -490,6 +493,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch248 -p1 %patch249 -p1 %patch251 -p1 +%patch254 -p1 # Change the version that gets printed at GDB startup, so it is RedHat # specific. @@ -560,11 +564,13 @@ cd gdb/testsuite # "threadcrash.exp" is incompatible on ia64 with old kernels. # No `%{?_smp_mflags}' here as it may race. # WARNING: can't generate a core file - core tests suppressed - check ulimit +# "attachstop.exp" - Functionality is currently broken but timeout is long. +# "readline-overflow.exp" - Testcase is broken, functionality is OK. ( # ULIMIT required for `gdb.base/auxv.exp'. ulimit -H -c ulimit -c unlimited || : - make -k check RUNTESTFLAGS='--ignore "bigcore.exp chng-syms.exp checkpoint.exp threadcrash.exp"' || : + make -k check RUNTESTFLAGS='--ignore "bigcore.exp chng-syms.exp checkpoint.exp threadcrash.exp attachstop.exp readline-overflow.exp"' || : ) for t in sum log; do ln gdb.$t gdb-%{_target_platform}.$t || : @@ -637,6 +643,11 @@ fi # don't include the files in include, they are part of binutils %changelog +* Thu Jun 7 2007 Jan Kratochvil - 6.6-15 +- Testcase update to cover PPC Power6/DFP instructions disassembly (BZ 230000). +- Disable some known timeouting/failing testcases to reduce the build time. +- Fix crash on missing filenames debug info (BZ 242155). + * Sat Apr 28 2007 Jan Kratochvil - 6.6-14 - Fixup for the PPC Power6/DFP instructions disassembly (BZ 230000). - New testcase for the GCORE buffer overflow (for BZ 238285, formerly 235753).