diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/ppc-linux-tdep.c | 11 | ||||
-rw-r--r-- | gdb/spu-tdep.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cell/bt.exp | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cell/coremaker.c | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cell/ea-standalone.exp | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cell/fork.exp | 2 |
8 files changed, 36 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 90fdec5..c01e091 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2011-05-06 Ulrich Weigand <uweigand@de.ibm.com> + * ppc-linux-tdep.c (ppu2spu_prev_register): Handle pseudo registers. + (ppu2spu_unwind_register): Mark pseudo registers unavailable. + * spu-tdep.c (op_selb): Use correct value. + +2011-05-06 Ulrich Weigand <uweigand@de.ibm.com> + * spu-linux-nat.c (spu_symbol_file_add_from_memory): Add NULL "parent" parameter to symbol_file_add_from_bfd call. diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index c6e4b83..e623742 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1367,7 +1367,12 @@ ppu2spu_prev_register (struct frame_info *this_frame, gdb_byte *buf; buf = alloca (register_size (gdbarch, regnum)); - regcache_cooked_read (cache->regcache, regnum, buf); + + if (regnum < gdbarch_num_regs (gdbarch)) + regcache_raw_read (cache->regcache, regnum, buf); + else + gdbarch_pseudo_register_read (gdbarch, cache->regcache, regnum, buf); + return frame_unwind_got_bytes (this_frame, regnum, buf); } @@ -1392,9 +1397,9 @@ ppu2spu_unwind_register (void *src, int regnum, gdb_byte *buf) else if (regnum == SPU_PC_REGNUM) store_unsigned_integer (buf, 4, byte_order, data->npc); else - return 0; + return REG_UNAVAILABLE; - return 1; + return REG_VALID; } static int diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index 7f20794..236b205 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -456,7 +456,7 @@ enum op_a = 0x0c0, op_ai = 0x1c, - op_selb = 0x4, + op_selb = 0x8, op_br = 0x64, op_bra = 0x60, diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index ff015f0..c920d38 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2011-05-06 Ulrich Weigand <uweigand@de.ibm.com> + + * gdb.cell/bt.exp: Delete breakpoints before running to signal + to avoid race condition. + * gdb.cell/coremaker.c: Use small stack size. + * gdb.cell/ea-standalone.exp: Use file name without path as + argument to c_to. + * gdb.cell/fork.exp: Allow other output when continuing to end. + 2011-05-06 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.threads/corethreads.c: New file. diff --git a/gdb/testsuite/gdb.cell/bt.exp b/gdb/testsuite/gdb.cell/bt.exp index 8bff6f2..b1ee458 100644 --- a/gdb/testsuite/gdb.cell/bt.exp +++ b/gdb/testsuite/gdb.cell/bt.exp @@ -72,6 +72,7 @@ if ![runto_main] then { return 0 } +delete_breakpoints gdb_test "continue" ".*Program received signal SIGABRT, Aborted.*" gdb_test "backtrace" ".*abort.*crash_handler.*base.*offset.*<cross-architecture call>.*main.*speid.*argp.*envp.*at.*$spu2_file.c.*<cross-architecture call>.*spe_context_run.*indirect_handler.*base.*offset.*<cross-architecture call>.*main.*speid.*argp.*envp.*at.*$spu_file.c.*<cross-architecture call>.*spe_context_run.*spe_thread.*at.*$ppu_file.c.*" diff --git a/gdb/testsuite/gdb.cell/coremaker.c b/gdb/testsuite/gdb.cell/coremaker.c index f1754ce..48ad90c 100644 --- a/gdb/testsuite/gdb.cell/coremaker.c +++ b/gdb/testsuite/gdb.cell/coremaker.c @@ -43,18 +43,25 @@ int main (void) { int thread_id[nr_t]; + pthread_attr_t attr; pthread_t pts[nr_t]; spe_context_ptr_t ctx[nr_t]; unsigned int value; int cnt; + /* Use small thread stacks to speed up writing out core file. */ + pthread_attr_init (&attr); + pthread_attr_setstacksize (&attr, 2*PTHREAD_STACK_MIN); + for (cnt = 0; cnt < nr_t; cnt++) { ctx[cnt] = spe_context_create (0, NULL); thread_id[cnt] - = pthread_create (&pts[cnt], NULL, &spe_thread, &ctx[cnt]); + = pthread_create (&pts[cnt], &attr, &spe_thread, &ctx[cnt]); } + pthread_attr_destroy (&attr); + for (cnt = 0; cnt < nr_t; cnt++) spe_out_intr_mbox_read (ctx[cnt], &value, 1, SPE_MBOX_ALL_BLOCKING); diff --git a/gdb/testsuite/gdb.cell/ea-standalone.exp b/gdb/testsuite/gdb.cell/ea-standalone.exp index 8753fa1..fd6f622 100644 --- a/gdb/testsuite/gdb.cell/ea-standalone.exp +++ b/gdb/testsuite/gdb.cell/ea-standalone.exp @@ -44,12 +44,12 @@ if ![runto_main] then { return 0 } -c_to "Marker SPUEA1" $srcfile +c_to "Marker SPUEA1" $testfile.c gdb_test "p myarray\[0\]" \ ".*= 0" \ "p myarray\[0\]" -c_to "Marker SPUEA2" $srcfile +c_to "Marker SPUEA2" $testfile.c gdb_test "p myarray\[0\]" \ ".*= 1" \ "p myarray\[0\]" diff --git a/gdb/testsuite/gdb.cell/fork.exp b/gdb/testsuite/gdb.cell/fork.exp index ad5c75a..b8c603d 100644 --- a/gdb/testsuite/gdb.cell/fork.exp +++ b/gdb/testsuite/gdb.cell/fork.exp @@ -77,7 +77,7 @@ gdb_test_no_output "delete \$bpnum" "delete watchpoint" gdb_test "continue" "Continuing\\..*Breakpoint \[0-9\]+, func \\(\\) at .*$spu_file.c:.*" \ "run until breakpoint hit" -gdb_continue_to_end +gdb_continue_to_end "" continue 1 gdb_exit |