Hi! To highlight this issue again, , now that Debian testing has switched to GCC 4.8: On Sun, 3 Feb 2013 18:27:21 +0100, Jan Kratochvil wrote: > gdb/testsuite/ > 2013-02-02 Jan Kratochvil > > Workaround GCC PR debug/55056 and GDB PR server/15081. > * gdb.base/restore.c (caller3): Protect l1 by GCC_PR_55056 #ifdef. > (caller4): Protect l1 and l2 by GCC_PR_55056 #ifdef. > (caller5): Protect l1, l2 and l3 by GCC_PR_55056 #ifdef. > * gdb.base/restore.exp: New variable opts. Test caller3, caller4 and > caller5 for l1, l2 and l3. New prepare_for_testing. > * gdb.base/store.c (wack_longest, wack_float, wack_double) > (wack_doublest): Protect l and r by GCC_PR_55056 #ifdef. > * gdb.base/store.exp: New variable opts. Test longest, float, double > and doublest functions for l and r. New prepare_for_testing. > * gdb.trace/collection.c (reglocal_test_func): Protect locf and locd by > GCC_PR_55056 #ifdef. Protect locar by GDB_PR_15081 #ifdef. > * gdb.trace/unavailable.c: Likewise. > * gdb.trace/collection.exp: New variable opts. Test reglocal_test_func > for locf, locd and locar. New prepare_for_testing. > (gdb_collect_locals_test): Increase list size to 43. > * gdb.trace/unavailable.exp: Likewise. As far as I can tell, no consensus has yet been reached about the approach to fix this issue discussed in this thread. (I have not looked at the proposed patch in detail.) I had already been configuring my native GDB builds with CC=gcc-4.8 CXX=g++-4.8, and naively assumed the same compiler as specified on the configure command-line would be used for the GDB testsuite -- which is not true, as it now turns out. Is this to be considered a bug in the GDB build/test harness? Anyway, upon Debian testing/unstable just switching the default system compiler from 4.7 to 4.8, the following new FAILs appear in my native x86 GNU/Linux and GNU/Hurd testing: --- [...]/gdb.base2/gdb.sum +++ [...]/gdb.base2/gdb.sum @@ -1395,31 +1395,31 @@ PASS: gdb.base/restore.exp: run to caller3 PASS: gdb.base/restore.exp: caller3 calls callee1; tbreak callee PASS: gdb.base/restore.exp: caller3 calls callee1; continue to callee PASS: gdb.base/restore.exp: caller3 calls callee1; return callee now -PASS: gdb.base/restore.exp: caller3 calls callee1; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller3 calls callee1; return restored l1 to 32492 PASS: gdb.base/restore.exp: caller3 calls callee1; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller3 calls callee1; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller3 calls callee2; tbreak callee PASS: gdb.base/restore.exp: caller3 calls callee2; continue to callee PASS: gdb.base/restore.exp: caller3 calls callee2; return callee now -PASS: gdb.base/restore.exp: caller3 calls callee2; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller3 calls callee2; return restored l1 to 32492 PASS: gdb.base/restore.exp: caller3 calls callee2; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller3 calls callee2; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller3 calls callee3; tbreak callee PASS: gdb.base/restore.exp: caller3 calls callee3; continue to callee PASS: gdb.base/restore.exp: caller3 calls callee3; return callee now -PASS: gdb.base/restore.exp: caller3 calls callee3; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller3 calls callee3; return restored l1 to 32492 PASS: gdb.base/restore.exp: caller3 calls callee3; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller3 calls callee3; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller3 calls callee4; tbreak callee PASS: gdb.base/restore.exp: caller3 calls callee4; continue to callee PASS: gdb.base/restore.exp: caller3 calls callee4; return callee now -PASS: gdb.base/restore.exp: caller3 calls callee4; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller3 calls callee4; return restored l1 to 32492 PASS: gdb.base/restore.exp: caller3 calls callee4; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller3 calls callee4; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller3 calls callee5; tbreak callee PASS: gdb.base/restore.exp: caller3 calls callee5; continue to callee PASS: gdb.base/restore.exp: caller3 calls callee5; return callee now -PASS: gdb.base/restore.exp: caller3 calls callee5; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller3 calls callee5; return restored l1 to 32492 PASS: gdb.base/restore.exp: caller3 calls callee5; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller3 calls callee5; return restored l3 to 32494 PASS: gdb.base/restore.exp: tbreak caller4 @@ -1427,36 +1427,36 @@ PASS: gdb.base/restore.exp: run to caller4 PASS: gdb.base/restore.exp: caller4 calls callee1; tbreak callee PASS: gdb.base/restore.exp: caller4 calls callee1; continue to callee PASS: gdb.base/restore.exp: caller4 calls callee1; return callee now -PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller4 calls callee1; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller4 calls callee1; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller4 calls callee1; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller4 calls callee2; tbreak callee PASS: gdb.base/restore.exp: caller4 calls callee2; continue to callee PASS: gdb.base/restore.exp: caller4 calls callee2; return callee now -PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller4 calls callee2; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller4 calls callee2; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller4 calls callee2; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller4 calls callee3; tbreak callee PASS: gdb.base/restore.exp: caller4 calls callee3; continue to callee PASS: gdb.base/restore.exp: caller4 calls callee3; return callee now -PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller4 calls callee3; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller4 calls callee3; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller4 calls callee3; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller4 calls callee4; tbreak callee PASS: gdb.base/restore.exp: caller4 calls callee4; continue to callee PASS: gdb.base/restore.exp: caller4 calls callee4; return callee now -PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller4 calls callee4; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller4 calls callee4; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller4 calls callee4; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller4 calls callee5; tbreak callee PASS: gdb.base/restore.exp: caller4 calls callee5; continue to callee PASS: gdb.base/restore.exp: caller4 calls callee5; return callee now -PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller4 calls callee5; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller4 calls callee5; return restored l2 to 32493 PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller4 calls callee5; return restored l4 to 32495 PASS: gdb.base/restore.exp: tbreak caller5 @@ -1464,41 +1464,41 @@ PASS: gdb.base/restore.exp: run to caller5 PASS: gdb.base/restore.exp: caller5 calls callee1; tbreak callee PASS: gdb.base/restore.exp: caller5 calls callee1; continue to callee PASS: gdb.base/restore.exp: caller5 calls callee1; return callee now -PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l2 to 32493 -PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l3 to 32494 +FAIL: gdb.base/restore.exp: caller5 calls callee1; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller5 calls callee1; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller5 calls callee1; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller5 calls callee1; return restored l5 to 32496 PASS: gdb.base/restore.exp: caller5 calls callee2; tbreak callee PASS: gdb.base/restore.exp: caller5 calls callee2; continue to callee PASS: gdb.base/restore.exp: caller5 calls callee2; return callee now -PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l2 to 32493 -PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l3 to 32494 +FAIL: gdb.base/restore.exp: caller5 calls callee2; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller5 calls callee2; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller5 calls callee2; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller5 calls callee2; return restored l5 to 32496 PASS: gdb.base/restore.exp: caller5 calls callee3; tbreak callee PASS: gdb.base/restore.exp: caller5 calls callee3; continue to callee PASS: gdb.base/restore.exp: caller5 calls callee3; return callee now -PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l2 to 32493 -PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l3 to 32494 +FAIL: gdb.base/restore.exp: caller5 calls callee3; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller5 calls callee3; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller5 calls callee3; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller5 calls callee3; return restored l5 to 32496 PASS: gdb.base/restore.exp: caller5 calls callee4; tbreak callee PASS: gdb.base/restore.exp: caller5 calls callee4; continue to callee PASS: gdb.base/restore.exp: caller5 calls callee4; return callee now -PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l2 to 32493 -PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l3 to 32494 +FAIL: gdb.base/restore.exp: caller5 calls callee4; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller5 calls callee4; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller5 calls callee4; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller5 calls callee4; return restored l5 to 32496 PASS: gdb.base/restore.exp: caller5 calls callee5; tbreak callee PASS: gdb.base/restore.exp: caller5 calls callee5; continue to callee PASS: gdb.base/restore.exp: caller5 calls callee5; return callee now -PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l1 to 32492 -PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l2 to 32493 -PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l3 to 32494 +FAIL: gdb.base/restore.exp: caller5 calls callee5; return restored l1 to 32492 +FAIL: gdb.base/restore.exp: caller5 calls callee5; return restored l2 to 32493 +FAIL: gdb.base/restore.exp: caller5 calls callee5; return restored l3 to 32494 PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l4 to 32495 PASS: gdb.base/restore.exp: caller5 calls callee5; return restored l5 to 32496 PASS: gdb.base/restore.exp: run to completion @@ -2170,35 +2170,35 @@ PASS: gdb.base/store.exp: var long l; print incremented l, expecting 2 PASS: gdb.base/store.exp: tbreak wack_longest PASS: gdb.base/store.exp: continue to wack_longest PASS: gdb.base/store.exp: var longest l; print old l, expecting -1 -PASS: gdb.base/store.exp: var longest l; print old r, expecting -2 +FAIL: gdb.base/store.exp: var longest l; print old r, expecting -2 PASS: gdb.base/store.exp: var longest l; setting l to 4 PASS: gdb.base/store.exp: var longest l; print new l, expecting 4 PASS: gdb.base/store.exp: var longest l; next over add call PASS: gdb.base/store.exp: var longest l; print incremented l, expecting 2 PASS: gdb.base/store.exp: tbreak wack_float PASS: gdb.base/store.exp: continue to wack_float -PASS: gdb.base/store.exp: var float l; print old l, expecting -1 +FAIL: gdb.base/store.exp: var float l; print old l, expecting -1 PASS: gdb.base/store.exp: var float l; print old r, expecting -2 -PASS: gdb.base/store.exp: var float l; setting l to 4 -PASS: gdb.base/store.exp: var float l; print new l, expecting 4 +FAIL: gdb.base/store.exp: var float l; setting l to 4 +FAIL: gdb.base/store.exp: var float l; print new l, expecting 4 PASS: gdb.base/store.exp: var float l; next over add call -PASS: gdb.base/store.exp: var float l; print incremented l, expecting 2 +FAIL: gdb.base/store.exp: var float l; print incremented l, expecting 2 PASS: gdb.base/store.exp: tbreak wack_double PASS: gdb.base/store.exp: continue to wack_double -PASS: gdb.base/store.exp: var double l; print old l, expecting -1 -PASS: gdb.base/store.exp: var double l; print old r, expecting -2 -PASS: gdb.base/store.exp: var double l; setting l to 4 -PASS: gdb.base/store.exp: var double l; print new l, expecting 4 +FAIL: gdb.base/store.exp: var double l; print old l, expecting -1 +FAIL: gdb.base/store.exp: var double l; print old r, expecting -2 +FAIL: gdb.base/store.exp: var double l; setting l to 4 +FAIL: gdb.base/store.exp: var double l; print new l, expecting 4 PASS: gdb.base/store.exp: var double l; next over add call -PASS: gdb.base/store.exp: var double l; print incremented l, expecting 2 +FAIL: gdb.base/store.exp: var double l; print incremented l, expecting 2 PASS: gdb.base/store.exp: tbreak wack_doublest PASS: gdb.base/store.exp: continue to wack_doublest -PASS: gdb.base/store.exp: var doublest l; print old l, expecting -1 -PASS: gdb.base/store.exp: var doublest l; print old r, expecting -2 -PASS: gdb.base/store.exp: var doublest l; setting l to 4 -PASS: gdb.base/store.exp: var doublest l; print new l, expecting 4 +FAIL: gdb.base/store.exp: var doublest l; print old l, expecting -1 +FAIL: gdb.base/store.exp: var doublest l; print old r, expecting -2 +FAIL: gdb.base/store.exp: var doublest l; setting l to 4 +FAIL: gdb.base/store.exp: var doublest l; print new l, expecting 4 PASS: gdb.base/store.exp: var doublest l; next over add call -PASS: gdb.base/store.exp: var doublest l; print incremented l, expecting 2 +FAIL: gdb.base/store.exp: var doublest l; print incremented l, expecting 2 PASS: gdb.base/store.exp: tbreak add_charest PASS: gdb.base/store.exp: continue to add_charest PASS: gdb.base/store.exp: upvar charest l; up @@ -2231,30 +2231,30 @@ PASS: gdb.base/store.exp: tbreak add_longest PASS: gdb.base/store.exp: continue to add_longest PASS: gdb.base/store.exp: upvar longest l; up PASS: gdb.base/store.exp: upvar longest l; print old l, expecting -1 -PASS: gdb.base/store.exp: upvar longest l; print old r, expecting -2 +FAIL: gdb.base/store.exp: upvar longest l; print old r, expecting -2 PASS: gdb.base/store.exp: upvar longest l; set l to 4 PASS: gdb.base/store.exp: upvar longest l; print new l, expecting 4 PASS: gdb.base/store.exp: tbreak add_float PASS: gdb.base/store.exp: continue to add_float PASS: gdb.base/store.exp: upvar float l; up -PASS: gdb.base/store.exp: upvar float l; print old l, expecting -1 +FAIL: gdb.base/store.exp: upvar float l; print old l, expecting -1 PASS: gdb.base/store.exp: upvar float l; print old r, expecting -2 -PASS: gdb.base/store.exp: upvar float l; set l to 4 -PASS: gdb.base/store.exp: upvar float l; print new l, expecting 4 +FAIL: gdb.base/store.exp: upvar float l; set l to 4 +FAIL: gdb.base/store.exp: upvar float l; print new l, expecting 4 PASS: gdb.base/store.exp: tbreak add_double PASS: gdb.base/store.exp: continue to add_double PASS: gdb.base/store.exp: upvar double l; up -PASS: gdb.base/store.exp: upvar double l; print old l, expecting -1 -PASS: gdb.base/store.exp: upvar double l; print old r, expecting -2 -PASS: gdb.base/store.exp: upvar double l; set l to 4 -PASS: gdb.base/store.exp: upvar double l; print new l, expecting 4 +FAIL: gdb.base/store.exp: upvar double l; print old l, expecting -1 +FAIL: gdb.base/store.exp: upvar double l; print old r, expecting -2 +FAIL: gdb.base/store.exp: upvar double l; set l to 4 +FAIL: gdb.base/store.exp: upvar double l; print new l, expecting 4 PASS: gdb.base/store.exp: tbreak add_doublest PASS: gdb.base/store.exp: continue to add_doublest PASS: gdb.base/store.exp: upvar doublest l; up -PASS: gdb.base/store.exp: upvar doublest l; print old l, expecting -1 -PASS: gdb.base/store.exp: upvar doublest l; print old r, expecting -2 -PASS: gdb.base/store.exp: upvar doublest l; set l to 4 -PASS: gdb.base/store.exp: upvar doublest l; print new l, expecting 4 +FAIL: gdb.base/store.exp: upvar doublest l; print old l, expecting -1 +FAIL: gdb.base/store.exp: upvar doublest l; print old r, expecting -2 +FAIL: gdb.base/store.exp: upvar doublest l; set l to 4 +FAIL: gdb.base/store.exp: upvar doublest l; print new l, expecting 4 PASS: gdb.base/store.exp: tbreak wack_struct_1 PASS: gdb.base/store.exp: continue to wack_struct_1 PASS: gdb.base/store.exp: var struct 1 u; next to add_struct_1 call Grüße, Thomas