+2017-11-26 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * gdb.arch/spu-info.c: Include <unistd.h>.
+ (do_signal_test): Fix broken calls to write.
+ * gdb.arch/spu-info.exp: Use prepare_for_testing.
+ Fix checks for empty mailboxes. Update signal tests for corrected
+ do_signal_test routine. Allow nonzero event status.
+
2017-11-25 Pedro Alves <palves@redhat.com>
* gdb.base/complete-empty.exp: New file.
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <unistd.h>
#include <spu_mfcio.h>
fd = open_context_file (context_fd, "signal1", O_RDWR);
if (fstat (fd, &fdstat) != 0)
return -1;
- ret = write (fd, buf, sizeof (int));
+ ret = write (fd, &buf, sizeof (int));
close (fd); /* Marker Signal1 */
/* Write to signal2. */
fd = open_context_file (context_fd, "signal2", O_RDWR);
if (fstat (fd, &fdstat) != 0)
return -1;
- ret = write (fd, buf, sizeof (int));
+ ret = write (fd, &buf, sizeof (int));
close (fd); /* Marker Signal2 */
/* Read signal1. */
return
}
-set testfile "spu-info"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-set sources ${srcdir}/${subdir}/${srcfile}
+standard_testfile
-if { [gdb_compile $sources ${binfile} executable { debug }] != "" } {
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug}] } {
+ fail "cannot compile test program"
return -1
}
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
# Continue to MARKER
proc c_to { marker } {
# 'info spu mailbox'.
gdb_test "info spu mailbox" \
- "SPU Outbound Mailbox.*SPU Outbound Interrupt Mailbox.*" \
+ "" \
"info spu mailbox"
# 'info spu dma'.
# MFC_MULTI_SRC_SYNC_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00001000.*" \
+ "Event Status 0x0000.*Event Mask 0x00001000.*" \
"event mask 0x1000"
# MFC_PRIV_ATTN_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000800.*" \
+ "Event Status 0x0000.*Event Mask 0x00000800.*" \
"event mask 0x0800"
# MFC_LLR_LOST_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000400.*" \
+ "Event Status 0x0000.*Event Mask 0x00000400.*" \
"event mask 0x0400"
# MFC_SIGNAL_NOTIFY_1_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000200.*" \
+ "Event Status 0x0000.*Event Mask 0x00000200.*" \
"event mask 0x0200"
# MFC_SIGNAL_NOTIFY_2_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000100.*" \
+ "Event Status 0x0000.*Event Mask 0x00000100.*" \
"event mask 0x0100"
# MFC_OUT_MBOX_AVAILABLE_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000080.*" \
+ "Event Status 0x0000.*Event Mask 0x00000080.*" \
"event mask 0x0080"
# MFC_OUT_INTR_MBOX_AVAILABLE_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000040.*" \
+ "Event Status 0x0000.*Event Mask 0x00000040.*" \
"event mask 0x0040"
# MFC_DECREMENTER_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000020.*" \
+ "Event Status 0x0000.*Event Mask 0x00000020.*" \
"event mask 0x0020"
# MFC_IN_MBOX_AVAILABLE_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000010.*" \
+ "Event Status 0x0000.*Event Mask 0x00000010.*" \
"event mask 0x0010"
# MFC_COMMAND_QUEUE_AVAILABLE_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000008.*" \
+ "Event Status 0x0000.*Event Mask 0x00000008.*" \
"event mask 0x0008"
# MFC_LIST_STALL_NOTIFY_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000002.*" \
+ "Event Status 0x0000.*Event Mask 0x00000002.*" \
"event mask 0x0002"
# MFC_TAG_STATUS_UPDATE_EVENT.
gdb_test "next" "" "next"
gdb_test "info spu event" \
- "Event Status 0x00000000.*Event Mask 0x00000001.*" \
+ "Event Status 0x0000.*Event Mask 0x00000001.*" \
"event mask 0x0001"
c_to "Marker Mbox"
set msg "info spu mailbox"
gdb_test_multiple "info spu mailbox" $msg {
- -re "SPU Outbound Mailbox.*0x00000000.*SPU Outbound Interrupt Mailbox.*0x00000000.*$gdb_prompt $" {
+ -re "$gdb_prompt $" {
pass $msg
}
-re "SPU Outbound Mailbox.*0x.*SPU Outbound Interrupt Mailbox.*0x.*$gdb_prompt $" {
# 'info spu signal' with signal1 pending.
c_to "Marker Signal1"
gdb_test "info spu signal" \
- "Signal 1 control word 0x801c0800.*Signal 2 not pending.*\(Type.*\).*" \
+ "Signal 1 control word 0x00000017.*Signal 2 not pending.*\(Type.*\).*" \
"info spu signal"
# 'info spu signal' with signal1 and signal2 pending.
c_to "Marker Signal2"
gdb_test "info spu signal" \
- "Signal 1 control word 0x801c0800.*Signal 2 control word 0x801c0800.*" \
+ "Signal 1 control word 0x00000017.*Signal 2 control word 0x00000017.*" \
"info spu signal"
# Read signal1. Only signal2 is pending.
c_to "Marker SignalRead"
gdb_test "info spu signal" \
- "Signal 1 not pending.*Signal 2 control word 0x801c0800.*" \
+ "Signal 1 not pending.*Signal 2 control word 0x00000017.*" \
"info spu signal"
return
}
-set testfile "spu-ls"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-set sources ${srcdir}/${subdir}/${srcfile}
+standard_testfile
-if { [gdb_compile $sources ${binfile} executable { debug }] != "" } {
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug}] } {
+ fail "cannot compile test program"
return -1
}
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
if ![runto_main] then {
fail "can't run to main"
return 0
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set testfile "break"
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set testfile "bt"
set ppu_file "bt"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "bt-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
set spu2_file "bt2-spu"
set spu2_src ${srcdir}/${subdir}/${spu2_file}.c
-set spu2_bin ${objdir}/${subdir}/${spu2_file}
+set spu2_bin [standard_output_file ${spu2_file}]
if {[skip_cell_tests]} {
return 0
set testfile "coremaker"
set ppu_file "coremaker"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "coremaker-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {![isnative]} then {
return 0
set testfile "data"
set ppu_file "data"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "data-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set testfile "dwarfaddr"
set srcfile ${srcdir}/${subdir}/${testfile}.S
-set binary ${objdir}/${subdir}/${testfile}
+set binary [standard_output_file ${testfile}]
if {[skip_cell_tests]} {
return 0
set ppu_file "ea-cache"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "ea-cache-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set testfile "ea-standalone"
set srcfile ${srcdir}/${subdir}/${testfile}.c
-set binary ${objdir}/${subdir}/${testfile}
+set binary [standard_output_file ${testfile}]
if {[skip_cell_tests]} {
return 0
set testfile "ea-test"
set source ${srcdir}/${subdir}/${testfile}.c
-set binary ${objdir}/${subdir}/${testfile}
+set binary [standard_output_file ${testfile}]
if {[skip_cell_tests]} {
return 0
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set testfile "fork"
set ppu_file "fork"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "fork-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set testfile "coremaker"
set ppu_file "coremaker"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "coremaker-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${ppu_file}]
if {![isnative]} then {
return 0
set ppu_file "mem-access"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "mem-access-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set ppu_file "size"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "size-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0
set ppu_file "break"
set ppu_src ${srcdir}/${subdir}/${ppu_file}.c
-set ppu_bin ${objdir}/${subdir}/${ppu_file}
+set ppu_bin [standard_output_file ${ppu_file}]
set spu_file "break-spu"
set spu_src ${srcdir}/${subdir}/${spu_file}.c
-set spu_bin ${objdir}/${subdir}/${spu_file}
+set spu_bin [standard_output_file ${spu_file}]
if {[skip_cell_tests]} {
return 0