From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29914 invoked by alias); 24 Aug 2004 16:15:52 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 29894 invoked from network); 24 Aug 2004 16:15:50 -0000 Received: from unknown (HELO us.ibm.com) (32.97.110.142) by sourceware.org with SMTP; 24 Aug 2004 16:15:50 -0000 Received: by us.ibm.com (Postfix, from userid 1000) id 83F38F01C; Tue, 24 Aug 2004 09:13:38 -0700 (PDT) From: Paul Gilliam Reply-To: pgilliam@us.ibm.com To: Michael Chastain Subject: Re: Avoid timeouts in call-sc.exp Date: Tue, 24 Aug 2004 16:15:00 -0000 User-Agent: KMail/1.6.2 Cc: gdb-patches@sources.redhat.com References: <200408181426.30208.pgilliam@us.ibm.com> <200408231408.53088.pgilliam@us.ibm.com> <412A67E6.nailD782KDIOT@mindspring.com> In-Reply-To: <412A67E6.nailD782KDIOT@mindspring.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_yk2KBR5a2ft287i" Message-Id: <200408240913.38260.pgilliam@us.ibm.com> X-SW-Source: 2004-08/txt/msg00647.txt.bz2 --Boundary-00=_yk2KBR5a2ft287i Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 2157 On Monday 23 August 2004 14:55, Michael Chastain wrote: > Paul Gilliam wrote: > > What is the purpose of 'try_finish'? I don't see how the test 'if > > (try_finish == 0)' will ever fail to be true. What am I missing? > > The idea is to allow either this: > > backtrace 1 > #0 int main() ... blah > (gdb) PASS: return foo; synchronize pc to main > > Or this: > > backtrace 1 > #0 ... fun () ... blah > #1 int main () ... blah > (gdb) finish > finishing ... blah > (gdb) backtrace 1 > #0 int main () ... blah > (gdb) PASS: return foo; synchronize pc to main > > In the first case, the program counter is already back in main() > after the call to "return", and everything is cool. > > In the second case, "return" spazzed out, and the program counter > is still left back inside fun(). That's the case that attracted > you to call-sc.exp. > > What I tried to write was: > > int try_finish = 0; > while (gdb is stuck in fun()) > { > if (try_finish == 0) > { > try_finish++; > tell gdb to "finish"; > continue; > } > } > > But exp_continue does not quite work because it does not re-issue > the "backtrace 1" command. > > The simple way out is not to use exp_continue: > > set test "return foo; synchronize pc to main" > gdb_test_multiple "backtrace 1" $test { > -re "#0.*main \\(\\).*$gdb_prompt $" { > pass $test > } > -re "#0.*fun \\(\\).*$gdb_prompt $" { > gdb_test "finish" ".*" "" > gdb_test "backtrace 1" "#0.*main \\(\\)" $test > } > > Can you play with that? > > Also I am still hoping to see the gdb.log file from your system > where call-sc.exp has this problem. I will play with this and post it back. In the mean time, I have attached a couple of logs. 'ppc32.gdb.log' is an example of things working correctly. (It was generated using a 64-bit GDB and a 32-bit application-under-test). 'ppc64.gdb.log' is a partial log (I got tired of waiting for the timeouts). In this case, gdb was again 64-bits but the application-under-test was also 64-bits. This combination has a bug that caused the problem to show up. --Boundary-00=_yk2KBR5a2ft287i Content-Type: text/x-log; charset="iso-8859-1"; name="ppc32.gdb.log" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ppc32.gdb.log" Content-length: 31495 Test Run By pgilliam on Tue Aug 24 16:04:51 2004 Native configuration is powerpc64-unknown-linux-gnu === gdb tests === Schedule of variations: unix/-m32 Running target unix/-m32 Using ./dejagnu/baseboards/unix.exp as board description file for target. Using ./dejagnu/config/unix.exp as generic interface file for target. Using ./config/unix.exp as tool-and-target-specific interface file. Running ./gdb.base/call-sc.exp ... get_compiler_info: gcc-3-4-1 Executing on host: gcc ./gdb.base/call-sc.c -DT=tc -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-tc (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-tc Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-tc...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-tc set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-tc set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-tc delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-tc Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype tc type = char (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-tc (char) ptype foo type = char (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tc char p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-tc call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tc p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tc advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tc p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tc return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-tc p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tc advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tc p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tc finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-tc p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-tc PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tc Executing on host: gcc ./gdb.base/call-sc.c -DT=ts -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-ts (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-ts Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-ts...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-ts set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-ts set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-ts delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-ts Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype ts type = short int (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-ts (short int) ptype foo type = short int (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ts short int p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-ts call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ts p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-ts advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ts p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ts return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-ts p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-ts advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ts p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ts finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-ts p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-ts PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-ts Executing on host: gcc ./gdb.base/call-sc.c -DT=ti -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-ti (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-ti Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-ti...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-ti set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-ti set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-ti delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-ti Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype ti type = int (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-ti (int) ptype foo type = int (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ti int p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-ti call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ti p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-ti advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ti p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ti return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-ti p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-ti advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ti p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ti finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-ti p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-ti PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-ti Executing on host: gcc ./gdb.base/call-sc.c -DT=tl -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-tl (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-tl Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-tl...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-tl set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-tl set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-tl delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-tl Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype tl type = long int (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-tl (long int) ptype foo type = long int (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tl long int p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-tl call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tl p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tl advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tl p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tl return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-tl p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tl advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tl p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tl finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-tl p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-tl PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tl Executing on host: gcc ./gdb.base/call-sc.c -DT=tll -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-tll (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-tll Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-tll...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-tll set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-tll set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-tll delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-tll Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype tll type = long long int (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-tll (long long int) ptype foo type = long long int (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tll long long int p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-tll call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tll p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tll advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tll p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tll return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-tll p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tll advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tll p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tll finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-tll p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-tll PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tll Executing on host: gcc ./gdb.base/call-sc.c -DT=tf -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-tf (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-tf Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-tf...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-tf set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-tf set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-tf delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-tf Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype tf type = float (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-tf (float) ptype foo type = float (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tf float p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-tf call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tf p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tf advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tf p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tf return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-tf p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tf advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tf p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tf finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-tf p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-tf PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tf Executing on host: gcc ./gdb.base/call-sc.c -DT=td -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-td (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-td Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-td...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-td set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-td set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-td delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-td Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype td type = double (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-td (double) ptype foo type = double (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-td double p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-td call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-td p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-td advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-td p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-td return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-td p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-td advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-td p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-td finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-td p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-td PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-td Executing on host: gcc ./gdb.base/call-sc.c -DT=tld -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-tld (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-tld Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-tld...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-tld set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-tld set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-tld delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-tld Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype tld type = long double (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-tld (long double) ptype foo type = long double (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tld long double p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-tld call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tld p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tld advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tld p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tld return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-tld p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tld advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tld p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tld finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-tld p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-tld PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tld Executing on host: gcc ./gdb.base/call-sc.c -DT=te -g -lm -m32 -o /home/gdb-testsuite/gdb.base/call-sc-te (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-te Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-te...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-te set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-te set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-te delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-te Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype te type = enum {e = 49} (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-te (enum {e = 49}) ptype foo type = enum {e = 49} (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-te enum {e = 49} p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-te call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-te p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-te advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-te p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-te return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-te p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-te advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-te p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-te finish "finish" not meaningful in the outermost frame. (gdb) FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-te p/c $5 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-te PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-te testcase ./gdb.base/call-sc.exp completed in 15 seconds === gdb Summary === # of expected passes 90 # of unexpected failures 63 Executing on host: /usr/bin/gdb -nw --command gdb_cmd (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". /usr/bin/gdb version 2004 -nx runtest completed at Tue Aug 24 16:05:06 2004 --Boundary-00=_yk2KBR5a2ft287i Content-Type: text/x-log; charset="iso-8859-1"; name="ppc64.gdb.log" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ppc64.gdb.log" Content-length: 7722 Test Run By pgilliam on Mon Aug 23 20:19:15 2004 Native configuration is powerpc64-unknown-linux-gnu === gdb tests === Schedule of variations: unix/-m64 Running target unix/-m64 Using ./dejagnu/baseboards/unix.exp as board description file for target. Using ./dejagnu/config/unix.exp as generic interface file for target. Using ./config/unix.exp as tool-and-target-specific interface file. Running ./gdb.base/call-sc.exp ... get_compiler_info: gcc-3-4-1 Executing on host: gcc ./gdb.base/call-sc.c -DT=tc -g -lm -m64 -o /home/gdb-testsuite/gdb.base/call-sc-tc (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-tc Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-tc...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-tc set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-tc set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-tc delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-tc Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype tc type = char (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-tc (char) ptype foo type = char (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-tc char p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-tc call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-tc p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-tc advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-tc p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-tc return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-tc p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-tc advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-tc p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-tc finish Run till exit from #0 main () at ./gdb.base/call-sc.c:78 FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-tc (timeout) p/c FAIL: gdb.base/call-sc.exp: value foo finished; return call-sc-tc (timeout) PASS: gdb.base/call-sc.exp: return and finish use same convention; return call-sc-tc Executing on host: gcc ./gdb.base/call-sc.c -DT=ts -g -lm -m64 -o /home/gdb-testsuite/gdb.base/call-sc-ts (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". (gdb) set height 0 (gdb) set width 0 (gdb) dir Reinitialize source path to empty? (y or n) y Source directories searched: $cdir:$cwd (gdb) dir ./gdb.base Source directories searched: /home/gdb-testsuite/./gdb.base:$cdir:$cwd (gdb) file /home/gdb-testsuite/gdb.base/call-sc-ts Reading symbols from /home/gdb-testsuite/gdb.base/call-sc-ts...done. Using host libthread_db library "/lib64/tls/libthread_db.so.1". (gdb) set print sevenbit-strings (gdb) PASS: gdb.base/call-sc.exp: set print sevenbit-strings; call-sc-ts set print address off (gdb) PASS: gdb.base/call-sc.exp: set print address off; call-sc-ts set width 0 (gdb) PASS: gdb.base/call-sc.exp: set width 0; call-sc-ts delete breakpoints (gdb) info breakpoints No breakpoints or watchpoints. (gdb) break main Breakpoint 1: file ./gdb.base/call-sc.c, line 68. (gdb) run Starting program: /home/gdb-testsuite/gdb.base/call-sc-ts Breakpoint 1, main () at ./gdb.base/call-sc.c:68 68 Fun(foo); (gdb) info source Current source file is ./gdb.base/call-sc.c Compilation directory is /home/gdb-testsuite Located in /home/gdb-testsuite/gdb.base/call-sc.c Contains 83 lines. Source language is c. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info. (gdb) ptype ts type = short int (gdb) PASS: gdb.base/call-sc.exp: ptype; call-sc-ts (short int) ptype foo type = short int (gdb) PASS: gdb.base/call-sc.exp: ptype foo; call-sc-ts short int p/c fun() reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: p/c fun(); call call-sc-ts call Fun(foo) reading register fpscr (#70): Input/output error. (gdb) PASS: gdb.base/call-sc.exp: call Fun(foo); call call-sc-ts p/c L $1 = 0 '\0' (gdb) FAIL: gdb.base/call-sc.exp: p/c L; call call-sc-ts advance fun fun () at ./gdb.base/call-sc.c:42 42 return foo; (gdb) PASS: gdb.base/call-sc.exp: advance to fun for return; return call-sc-ts p/c L $2 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for return; return call-sc-ts return foo Make fun return now? (y or n) y reading register fpscr (#70): Input/output error. (gdb) FAIL: gdb.base/call-sc.exp: return foo; return call-sc-ts p/c L $3 = 90 'Z' (gdb) FAIL: gdb.base/call-sc.exp: value foo returned; return call-sc-ts advance fun main () at ./gdb.base/call-sc.c:78 78 L = fun (); (gdb) FAIL: gdb.base/call-sc.exp: advance to fun for finish; return call-sc-ts p/c L $4 = 90 'Z' (gdb) PASS: gdb.base/call-sc.exp: zed L for finish; return call-sc-ts finish Run till exit from #0 main () at ./gdb.base/call-sc.c:78 FAIL: gdb.base/call-sc.exp: finish foo; return call-sc-ts (timeout) p/c got a INT signal, interrupted by user === gdb Summary === # of expected passes 19 # of unexpected failures 13 Executing on host: /usr/bin/gdb -nw --command gdb_cmd (timeout = 300) GNU gdb Red Hat Linux (6.1post-1.20040607.8rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "ppc64-redhat-linux-gnu". /usr/bin/gdb version 2004 -nx runtest completed at Mon Aug 23 20:23:08 2004 --Boundary-00=_yk2KBR5a2ft287i--